ontoref/.ontology/state.ncl
Jesús Pérez 502b5f0caa
feat: manifest self-interrogation layer — capabilities, requirements, critical deps (ADR-009)
Three new typed arrays in manifest_type answering operational self-knowledge queries:
  capability_type (what/why/how + nodes[]/adrs[] DAG cross-refs), requirement_type
  (env_target: Production/Development/Both; kind: Tool/Service/EnvVar/Infrastructure),
  critical_dep_type (failure_impact required, mitigation). describe requirements new
  subcommand; describe capabilities and describe guides extended with manifest data.
  Bug fix: collect-identity was reading manifest.kind? (absent) instead of manifest.repo_kind?.
  Ontoref self-described with 3 capabilities, 5 requirements, 3 critical deps.
  on+re: manifest-self-description node (29 nodes, 59 edges), ADR-009 accepted.
2026-03-26 21:01:39 +00:00

134 lines
8.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let d = import "../ontology/defaults/state.ncl" in
{
dimensions = [
d.make_dimension {
id = "protocol-maturity",
name = "Protocol Maturity",
description = "Completeness of the ontoref protocol specification — schemas, ADRs, modes, Rust crates, daemon, and adoption tooling.",
current_state = "adoption-tooling-complete",
desired_state = "protocol-stable",
horizon = 'Months,
states = [],
transitions = [
d.make_transition {
from = "tooling-migrated",
to = "adoption-tooling-complete",
condition = "adopt_ontoref mode, templates, daemon crate, landing page all present and validated.",
catalyst = "Daemon extracted from stratumiops; adoption templates created.",
blocker = "none",
horizon = 'Months,
},
d.make_transition {
from = "adoption-tooling-complete",
to = "protocol-stable",
condition = "ADR-001 accepted, ontoref.dev published, at least two external projects consuming the protocol.",
catalyst = "First external adoption.",
blocker = "ontoref.dev not yet published; no external consumers yet. Auth model complete. Install pipeline complete. Personal/career schema layer present; content modes operational. Nu 0.111 compat fixed (ADR-006). Protocol v2 complete: manifest.ncl + connections.ncl templates, update_ontoref mode, API catalog via #[onto_api], describe diff, describe api, per-file versioning. Config surface complete (ADR-008): typed DaemonNclConfig, #[derive(ConfigFields)] inventory coherence registry, NCL contracts (LogConfig/DaemonConfig in .ontoref/contracts.ncl), override-layer mutation API, multi-consumer manifest schema. Manifest self-interrogation layer complete (ADR-009): capability_type, requirement_type (env_target: Production/Development/Both, kind: Tool/Service/EnvVar/Infrastructure), critical_dep_type — describe requirements new subcommand, describe guides extended. Syntaxis syntaxis-ontology crate has pending ES→EN migration errors.",
horizon = 'Months,
},
],
},
d.make_dimension {
id = "self-description-coverage",
name = "Self-Description Coverage",
description = "How completely ontoref describes itself using its own protocol.",
current_state = "fully-self-described",
desired_state = "fully-self-described",
horizon = 'Weeks,
states = [],
transitions = [
d.make_transition {
from = ".ontology-bootstrapped",
to = "modes-and-web-present",
condition = "adopt_ontoref mode, landing page, and all core.ncl nodes reflect current artifact set.",
catalyst = "Web presence and adoption tooling added in session 2026-03-12.",
blocker = "none",
horizon = 'Weeks,
},
d.make_transition {
from = "modes-and-web-present",
to = "fully-self-described",
condition = "At least 3 ADRs accepted, reflection/backlog.ncl present, describe project returns complete picture.",
catalyst = "ADR-001ADR-006 authored (6 ADRs present). Auth model, project onboarding, and session management nodes added in 2026-03-13. Personal/career/project-card schemas, 5 content modes, search bookmarks, and ADR-006 (Nu 0.111 compat) added in session 2026-03-15. Session 2026-03-23: api-catalog-surface node added (#[onto_api] proc-macro + inventory catalog), describe-query-layer updated (diff + api subcommands), adopt-ontoref-tooling updated (update_ontoref mode + manifest/connections templates + enrichment prompt), ontoref-daemon updated (11 pages, 29 MCP tools, per-file versioning, API catalog endpoint). Session 2026-03-26: config-surface node added — typed DaemonNclConfig (parse-at-boundary pattern), #[derive(ConfigFields)] coherence registry, override-layer mutation API (PUT /config/{section}), NCL contracts (.ontoref/contracts.ncl: LogConfig + DaemonConfig), manifest config_surface with multi-consumer sections. ADR-007 (inventory/onto_api) extended to ConfigFields; ADR-008 (NCL-first config validation + override-layer mutation). Session 2026-03-26 (2nd): manifest-self-description node added — capability_type (id/name/summary/rationale/how/artifacts/adrs/nodes), requirement_type (env_target: Production/Development/Both; kind: Tool/Service/EnvVar/Infrastructure; impact/provision), critical_dep_type (failure_impact required; mitigation). describe requirements new subcommand. describe guides extended with capabilities/requirements/critical_deps. Bug fix: collect-identity read manifest.kind? (never existed) instead of manifest.repo_kind?; description field added to manifest_type. Ontoref self-described with 3 capabilities, 5 requirements, 3 critical deps. ADR-009.",
blocker = "none",
horizon = 'Weeks,
},
],
},
d.make_dimension {
id = "ecosystem-integration",
name = "Ecosystem Integration",
description = "Degree to which other ecosystem projects (stratumiops, syntaxis, vapora, kogral) consume the ontoref protocol.",
current_state = "stratumiops-integrated",
desired_state = "multi-project",
horizon = 'Months,
coupled_with = ["protocol-maturity"],
states = [],
transitions = [
d.make_transition {
from = "source-only",
to = "stratumiops-integrated",
condition = "stratumiops has .ontoref/config.ncl and scripts/ontoref wrapper functional; ADR-007 marked Superseded pointing to ontoref:adr-002.",
catalyst = "Ontoref extraction and stratumiops migration session 2026-03-12.",
blocker = "none",
horizon = 'Months,
},
d.make_transition {
from = "stratumiops-integrated",
to = "multi-project",
condition = "At least one additional project (vapora, kogral, or syntaxis) has .ontoref/config.ncl and scripts/ontoref. Syntaxis parses ontoref Core type.",
catalyst = "Syntaxis integration spike or vapora/kogral onboarding.",
blocker = "Syntaxis syntaxis-ontology crate has ES→EN migration errors pending. vapora/kogral not yet initialized with .ontoref/.",
horizon = 'Months,
},
],
},
d.make_dimension {
id = "operational-mode",
name = "Operational Mode",
description = "Runtime connectivity mode: local (files only) or daemon (push-based DB projection). Auto-detected on each command; transitions trigger hook updates and sync. Daemon launched via ADR-004 NCL pipe bootstrap (ontoref-daemon-boot); NATS topology resolved from NATS_STREAMS_CONFIG env var (global ~/.config/ontoref/streams.json) or project-local nats/streams.json.",
current_state = "local",
desired_state = "daemon",
horizon = 'Continuous,
states = [
d.make_state {
id = "local",
name = "Local",
description = "No daemon. All operations read from files. Hooks are no-ops. Safe for offline or repo-only work.",
tension = 'Low,
},
d.make_state {
id = "daemon",
name = "Daemon",
description = "Daemon reachable. Ontology projected into DB on each sync. Hooks push on git merge/checkout. NATS events available.",
tension = 'Low,
},
],
transitions = [
d.make_transition {
from = "local",
to = "daemon",
condition = "Daemon reachable at ONTOREF_DAEMON_URL and DB available (if db feature enabled).",
catalyst = "Daemon started, network restored, or first onboarding after install.",
blocker = "Daemon not running or DB not configured.",
horizon = 'Continuous,
},
d.make_transition {
from = "daemon",
to = "local",
condition = "Daemon unreachable or DB unavailable.",
catalyst = "Network loss, daemon stopped, or offline work.",
blocker = "none",
horizon = 'Continuous,
},
],
},
],
}