Ontology and Reflection as Constitutive Duality — Co-Equal Axes Sealed by Witness
Accepted
Context
The named tension `ontology-vs-reflection` has lived in `.ontology/core.ncl` since the project's first ondaod pass with `pole = 'Spiral` and the gloss "This tension is onref's core identity." The tension is the protocol's name for itself: **on+re**. Ontology captures what IS (invariants, structure, being); Reflection captures what BECOMES (operations, drift, memory). The Spiral pole records that neither half is reducible to the other.
The session arc 2026-05-20 → 2026-05-26 (ADR-023 verifiable substrate, ADR-024 operations layer, ADR-025 ontology core as state and NCL as manifestation, ADR-026 three-plane validation, ADR-027 P2P pluggable sync, ADR-028 ontology layer separation from project layer, ADR-029 tier coexistence, ADR-030 catalog discovery cross-project) produced a precise, lived articulation of one half of the tension — the **ontology axis**. Substrate (G1-G10), commit roots, state authority, content-addressed ontologies, schema discovery: all of these structurally name the substance pole. The **reflection axis** received concrete commitments too (operations as the only mutation path, witnesses as cryptographic acts, reflection modes as NCL DAGs, describe queries as self-knowledge), but its axiom-level status was never asserted on equal footing.
Two observations made the gap visible:
(1) A reading of the eight 2026-05-20s ADRs against the external "modern ontology stack" vocabulary (Cagle / Shannon 2026-05-19, *What a Modern Ontology Stack Actually Looks Like*) revealed that the article's five layers (annotational, schema, graph, projection, inference) cover the ontology axis cleanly and have no vocabulary for the reflection axis. The article's "inference layer" is passive derivation (SPARQL, SHACL rules, LLM resonance over a static substrate); ontoref's reflection layer is enactive (DAG modes execute work, forms mutate lifecycle, run protocols are acts the system performs on itself). Forcing reflection into a "layer" of an ontology-axis stack imports the substance-only metaphysics the external article carries.
(2) ADR-030 surfaces the duality operationally without naming it: the catalog has a "DECLARATIVE side (NCL)" — ontology pole — and an "EXECUTIVE side (Rust)" — reflection pole. ADR-030 § decision observes that the declarative side composes cross-project today via ADR-028 content-addressing while the executive side awaits triggers. The two sides progress at different rates because they live on different axes. ADR-030 names this asymmetry empirically; ADR-031 names it architecturally.
Without an axiom-level recognition, the same drift will recur: future sessions may interpret reflection components as "tooling around the ontology" or treat state as primary rather than as a manifestation that acts deposit on substance. ADR-025 already moved state from primary to "render of authority"; that move is half of what this ADR generalises. The generalisation: the protocol is **constitutively dual**. Every component sits on the ontology axis, the reflection axis, or the seam where the two are bound. The seam has a name in the existing architecture — the **witness** (ADR-023 § decision, ADR-024 § acting-binding). Every reflective act emits a witness; every witness deposits manifestation into the ontological substrate. The seam is the formalism by which the two axes remain bound without one absorbing the other.
The risk of NOT recording this duality at axiom level is concrete: the external "modern ontology stack" vocabulary is mature, legible, and adoption-ready, but it carries a substance-only frame that — uncritically imported — would collapse the protocol's core identity. The recent ADRs 023-030 stand within the protocol's own discipline (ondaod, Spiral preservation, voluntary-adoption). An ADR that elevates the duality itself becomes the constitutional anchor against which any future external vocabulary import is checked.
Decision
Elevate the existing `ontology-vs-reflection` Spiral tension to an axiom- level constitutive duality of the protocol. Two new axiom nodes are added to `.ontology/core.ncl`; the existing tension node remains in place as the ondaod-procedural anchor (tensions are where the Spiral is named; axioms are where the structural commitments live). The duality has three formal commitments:
1. ONTOLOGY AXIS — `ontology-axis-substance` (axiom, invariant=true)
The protocol's substance pole. Names: axioms, tensions, practices, schemas, ADR declarations, content-addressed ontologies, state as manifestation (ADR-025), substrate commitments (ADR-023), the declarative side of catalogs (ADR-030). Maps onto the existing `pole = 'Yin` convention for nodes whose primary character is being/structure.
Operational reading: every artifact that answers "what IS" — a schema declaration, an ADR constraint, an ontology node, a render from state, a commit root — lives on this axis.
2. REFLECTION AXIS — `reflection-axis-act` (axiom, invariant=true)
The protocol's act pole. Names: operations, dispatch, reflection modes (DAG enactment), forms (lifecycle mutation), describe queries (self-observation), run protocols (acts the system performs on itself), the executive side of catalogs (ADR-030), validator execution. Maps onto the existing `pole = 'Yang` convention for nodes whose primary character is becoming/operation.
Operational reading: every artifact that answers "what DOES" or "what KNOWS itself" — a domain operation, a mode step, a form submission, a `describe` invocation, a validator firing, a run transition — lives on this axis.
3. WITNESS AS SEAM — `witness-as-axis-seam` (axiom, invariant=true)
The witness (ADR-023 G5 commitment + signature, ADR-024 acting- binding) is the formal seam where the two axes meet. Every act on the reflection axis that mutates substance emits a witness; every mutation of the ontology axis state is the deposit of a witnessed act. The witness is neither pure substance nor pure act — it is the point at which the two are bound. Maps onto the existing `pole = 'Spiral` convention for nodes that sustain both poles without collapse.
Operational reading: any component on the seam (witness chain, commit emission, dispatch protocol, state reconciliation in Phase 1 of ADR-025) carries the load of preserving the duality across the act-to-substance transition.
AXIS DECLARATION REQUIREMENT (new structural property):
Every node in `.ontology/core.ncl` already carries a `pole` field ('Yin, 'Yang, 'Spiral) and a `level` field ('Axiom for invariant-level nodes among others). ADR-031 fixes the operational semantics of the pole field as the axis-declaration mechanism:
'Yin → ontology axis (substance side) 'Yang → reflection axis (act side) 'Spiral → seam (sustains both poles; not a derived synthesis)
The pole field of `Axiom`-level nodes that ALSO commit to an axis MUST carry a secondary `axis` field with value 'Substance | 'Act | 'Seam. This is additive and zero-migration for the existing nodes whose pole already encodes their axis cleanly.
GLOSSARY AXIS FIELD (forward integration):
The forthcoming `.ontology/glossary.ncl` schema (anticipated by the ontoterm-* skills and the present session's draft state) MUST include an `axis: 'Substance | 'Act | 'Seam` field on every canonical term. Terms that name substance ("axiom", "schema", "manifestation", "commit-root") declare 'Substance. Terms that name acts ("operation", "dispatch", "describe", "mode", "form") declare 'Act. Terms that name seams ("witness", "on+re", "ondaod") declare 'Seam.
FORBIDDEN PATTERNS (consequence of the duality):
The following architectural moves become explicit anti-patterns under ADR-031:
(a) Treating reflection components as "tooling" or "infrastructure around the ontology". Reflection is axis-level; not subordinate. (b) Treating state (ADR-025 manifestation) as the primary seat of authority. State is derived from witnessed acts; it is substance sediment, not source. (c) Importing external vocabulary that names only one axis (e.g. the RDF / SHACL semantic-stack vocabulary that has no analogue for enactive reflection) AS IF it covered the protocol. Such vocabulary may be used for projection (per ADR-028 / ADR-030), but never as primary terminology for ontoref components. (d) Synthesizing the two axes into a single "stack" or "layered architecture". The duality is constitutive: there is no layer in which it dissolves. (e) Designing components that operate on one axis without declaring their seam interaction. A new reflection-axis component (e.g. a new mode kind, a new form variant) MUST declare how its acts emit witnesses; a new ontology-axis component (e.g. a new schema type, a new ADR family) MUST declare how it receives manifestation from witnessed acts.
OPERATIONAL CONSEQUENCES (downstream ADRs reread under ADR-031):
- ADR-023 verifiable substrate: G1-G5 are substance-axis (types, triples, commitments); G6 (oplog) is act-axis (recording acts); G5 witness is seam. - ADR-024 operations layer: acting-binding declares the act-axis as the only path to substance mutation. ADR-031 generalises: "structurally enforced internal coherence" (the existing axiom) operates by routing all acts through the seam. - ADR-025 state as manifestation: substance is rendered from witnessed act log. The axiom split (voluntary-adoption + internal-coherence-enforced) ADR-025 introduced is now expressible: voluntary-adoption is a property of the BINDING between act and substance (adoption is itself an act); internal-coherence-enforced is a property of the SEAM (witness chain rejects ill-formed acts). - ADR-026 three-plane validation: the three planes (Structural / Semantic / Dialectical) operate at the seam. They are not substance-axis checks; they are conditions on what acts may pass through the seam. - ADR-027 P2P pluggable sync + ADR-028 ontology layer separation: cross-project content-addressing is substance-axis (the ontology travels as a substance artifact). Cross-project operation invocation (ADR-030) is act-axis (the act travels). The seam-axis question is cross-project witness verification (how does project B verify a witness signed by project A) — recorded as an open seam-axis question for future ADR. - ADR-029 tier coexistence: the three tiers correspond to three points of duality engagement. tier-0 engages only the substance axis (NCL files). tier-1 adds substrate (substance-axis with cryptographic state, but no acting-binding). tier-2 fully engages the seam (acts emit witnesses; substance is sediment of witnessed acts). The tiers are progressive realisations of the same duality, not separate architectures. - ADR-030 catalog discovery: the declarative/executive split is the ontology/reflection split. Phase A mechanisms preserve the duality (declarative composes via substance-axis content addressing; executive composes via act-axis dispatch). The CatalogBackend abstraction sits on the seam.
NON-DECISIONS (deliberately left open):
- Terminology for the two poles in user-facing documentation (substance/act, being/becoming, yin/yang, 体/用, ontology/reflection). The axiom IDs `ontology-axis-substance` and `reflection-axis-act` fix the canonical English handle; vocabulary choice in docs, glossary, and CLI output is open for an annotational-layer ADR. - Whether the witness seam needs a finer decomposition (witness emission vs witness verification vs witness chain integrity) at axiom level. Deferred until cross-project witness verification (per ADR-028) surfaces empirical pressure. - Whether reflection-axis components require their own typing discipline parallel to ontology-axis schemas. The current operation catalog (ADR-030 declarative side) is the existing answer; whether a richer "operation ontology" is needed is deferred.
Constraints
- Hard .ontology/core.ncl MUST contain three new Axiom-level nodes with ids ontology-axis-substance, reflection-axis-act, and witness-as-axis-seam. All three MUST have invariant=true. The existing ontology-vs-reflection Tension node MUST remain present (axiom elevation is additive, not replacing).
- Hard Each of the three new Axiom nodes MUST declare an axis field with value 'Substance (for ontology-axis-substance), 'Act (for reflection-axis-act), or 'Seam (for witness-as-axis-seam). The field is additive; pre-existing axioms are unaffected.
- Hard Documentation and ADRs MUST NOT adopt the Cagle/Shannon modern-ontology-stack five-layer model (annotational / schema / graph / projection / inference) as primary self-description of ontoref. The model MAY be used at the projection layer (docs/correspondences/) for external-audience translation, but MUST NOT replace the on+re duality vocabulary in core protocol description.
- Hard This ADR engages and synthesizes the named tension ontology-vs-reflection AND records the synthesis as axiom-level elevation rather than collapse. The synthesis state and direction of motion MUST be discoverable in the decision and rationale of this ADR.
- Hard A migration MUST be added to reflection/migrations/ that instructs consumer projects to add the three new Axiom nodes (ontology-axis-substance, reflection-axis-act, witness-as-axis-seam) to their own core.ncl. The migration MUST be idempotent and MUST NOT remove the existing ontology-vs-reflection Tension node.
Alternatives considered
- Leave ontology-vs-reflection as a Tension only, without elevating to axiom — rejected: The current Tension-only position is what allowed the asymmetric articulation observed in ADRs 023-030 — substance pole received structural commitments (substrate, state authority, content-addressing) while act pole received only operational commitments (operations exist, modes exist) without axiom-level recognition. Without axiom elevation, the same drift will recur on every future external-vocabulary import. The Tension records the polarity; only an axiom records the structural commitment to preserve it.
- Adopt the Cagle/Shannon modern-ontology-stack five-layer model as ontoref's primary self-description — rejected: The five-layer model (annotational, schema, graph, projection, inference) covers the substance axis cleanly and has NO vocabulary for the act axis beyond passive derivation in the inference layer. Adopting it primarily would erase the reflection axis from ontoref's self-description, collapsing the duality the existing Tension explicitly preserves. The model is useful at the projection layer (per ADR-028) as a correspondence for external RDF/SHACL audiences — but not as primary terminology.
- Introduce three new axes (substance, act, seam) without preserving the existing ontology-vs-reflection Tension node — rejected: Removing the Tension node would lose the ondaod-procedural anchor: tensions are where the Spiral is named for review by future sessions. Replacing the Tension with three Axioms collapses the dialectical record into a structural commitment. ADR-031 keeps both: the Tension preserves the Spiral-naming discipline; the three new Axioms commit to the structural property. Both are non-redundant.
- Use only the existing pole field (Yin/Yang/Spiral) without adding an explicit 'axis' field on the new axiom nodes — rejected: The pole field carries informal convention; axiom nodes deserve an explicit field for axis declaration because (a) axioms set the structural commitment that the convention must henceforth follow, and (b) the explicit field protects against future pole-field semantics drift. The 'axis' field is additive and zero-migration; the cost is small, the explicitness benefit is real.
- Defer axiom elevation until cross-project witness verification surfaces empirical pressure — rejected: The pressure has already surfaced — twice. First operationally (ADR-030's declarative/executive split). Second meta-architecturally (the present session's analysis of external semantic-stack vocabulary). Deferring would let future sessions silently adopt vocabulary that erodes the duality. The cost of an early axiom is small; the cost of late axiom recovery (retroactively rejecting an adopted vocabulary) is large. Trigger-based deferral (ADR-026/D15 pattern) applies to abstraction-point IMPL choices, not to constitutional commitments.
Anti-patterns
- Reflection-as-Tooling — Treating reflection components — modes, forms, describe, dispatch, validators — as "tooling" or "infrastructure around the ontology". Demotes the act axis to subordinate plumbing. Reflection is axis-level, co-equal with ontology; calling it tooling erases the constitutive duality at the vocabulary boundary.
- State-as-Primary-Authority — Treating state (the manifestation rendered from witnessed acts) as the primary seat of authority. Reverses the ADR-025 direction: state is substance sediment, not source. Acting on state directly bypasses the witness chain that gives state its integrity.
- Single-Axis Vocabulary Import — Adopting an external vocabulary that names only one axis (e.g. the RDF/SHACL/OWL semantic-stack: annotational, schema, graph, projection, inference) as ontoref's primary terminology. Imports a substance-only metaphysics that has no analogue for enactive reflection — the act axis becomes invisible in the imported lexicon.
- Duality-as-Layered-Stack — Flattening the on+re duality into a single layered architecture (e.g. "ontology layer → operations layer → UI layer"). Layers imply subordination; the substance and act axes are co-equal and the seam is not a layer between them but the formalism that binds them. There is no layer in which the duality dissolves.
- Axis Component Without Seam Declaration — Designing a new component that operates on one axis without declaring its seam interaction. A reflection-axis component (new mode kind, new form variant) that does not declare how its acts emit witnesses. An ontology- axis component (new schema family, new ADR genre) that does not declare how it receives manifestation from witnessed acts. Either omission lets the two axes drift toward disconnection one component at a time.
Related ADRs
ADR-009 · ADR-018 · ADR-020 · ADR-023 · ADR-024 · ADR-025 · ADR-026 · ADR-027 · ADR-028 · ADR-029 · ADR-030