Criteria as a Substrate-View Describe Level — Normative and Discovered as Typed Provenance, Promotion Gated Not Automatic

Accepted

ontoref
The constellation-memory work introduces criteria: the conditions a project holds itself to — release gates, quality bars, coherence rules. They arrive from two directions. Some are NORMATIVE: declar

Context

The constellation-memory work introduces criteria: the conditions a project holds itself to — release gates, quality bars, coherence rules. They arrive from two directions. Some are NORMATIVE: declared requirements an author states up front ('every Accepted ADR cites a Proof'). Others are DISCOVERED: they emerge from harvested insights (the coder harvest, plan component A) and the interaction trace (ADR-037) as patterns that turned out to matter in practice. ADR-046 established the substrate view as the unit of dynamic context provisioning — a discipline mounts only the slice of levels it needs, and a level is consumed identically by CLI, agent, and daemon interfaces via the surfaces field, with eligibility 'Always or 'Learned. ADR-018 fixed level-hierarchy and describe-projection mechanics. What is missing is where criteria sit in that structure. Two errors are available. If criteria are a flat undifferentiated list, a pattern someone NOTICED (discovered, reflection axis — what BECAME salient) is indistinguishable from a requirement someone DECLARED (normative, ontology axis — what IS required), and the first silently acquires the authority of the second. If, conversely, discovered criteria can auto-promote to normative once they recur, the reflection axis starts minting requirements without a declared, witnessed act — the engine deciding what is authoritative. The project's core identity tension, ontology-vs-reflection, is engaged directly, and formalization-vs-adoption is engaged because adding a criteria level is more schema that a minimal adopter must not be forced to carry.

Decision

Establish criteria as a first-class describe level mounted through the substrate-view engine (ADR-046), distinguished by a typed provenance taxonomy and a gated promotion path. Four mechanisms. (1) TYPED PROVENANCE TAXONOMY — every criterion carries kind : [| 'Normative, 'Discovered |] as a typed tag, not free text. 'Normative criteria are declared requirements (ontology axis); 'Discovered criteria are harvested from insights/interaction (reflection axis) and MUST record provenance: the source insight or interaction id they were graduated from. The tag is the legibility seam: a reader always knows whether a criterion is asserted or observed. (2) CRITERIA AS A 'Describe LEVEL — register criteria in levels.ncl with kind = 'Describe and eligibility = 'Learned, added to the relevant disciplines[].levels (coding, positioning, difusion); `describe criteria --discipline <D>` projects the discipline's slice, mirroring the existing constraints projection (ADR-018). (3) PROMOTION IS GATED, NEVER AUTOMATIC — a discovered criterion may be PROPOSED for promotion to normative, but promotion is gated behind novelty-check --threshold plus human approval (the backlog propose-status/approve path, ADR-046 witnessed-reversible); recurrence alone never promotes. The reverse — a normative criterion being demoted because reality drifted — is likewise a proposal, never silent. (4) OPT-IN ABSENCE — eligibility 'Learned and an opt-in migration mean a project that declares no criteria mounts no criteria level and pays nothing; the level is absent, not empty-and-mandatory.

Constraints

  • Hard Every criterion carries kind : [| 'Normative, 'Discovered |] as a typed tag; a 'Discovered criterion additionally records the source insight or interaction id it was graduated from
  • Hard A 'Discovered criterion becomes 'Normative only through novelty-check plus human approval via propose-status/approve; recurrence alone never promotes, and demotion of a 'Normative criterion is likewise a proposal, never silent
  • Soft The criteria level is registered with kind 'Describe and eligibility 'Learned; a project that declares no criteria mounts no criteria level and carries no mandatory criteria schema
  • Hard criteria are projected through `describe criteria` and consumed identically across CLI/agent/UI/MCP/GraphQL via the surfaces field, with no bespoke per-surface code

Alternatives considered

  • A flat untyped criteria listrejected: Collapses ontology-vs-reflection: a discovered pattern becomes indistinguishable from a declared requirement and silently acquires its authority. The typed normative/discovered tag is the minimal addition that keeps both poles legible.
  • Auto-promote discovered criteria to normative once they recur N timesrejected: Lets reflection mint requirements without a declared, witnessed act — reflection-dominates, the collapse ADR-046 C1 forbids. Recurrence is evidence; only a gated, approved act confers normative authority.
  • A standalone criteria store outside the substrate-view enginerejected: Reinvents discipline-scoped composition, persistence routing, partial-knowledge verification, and interface parity that ADR-046 already provides, and would need its own cross-project story. Criteria are a level; mounting them through the view engine inherits all of it.
  • A new typed criterion_kind on qa_entry_type instead of tags, requiring a schema-field migration immediatelyrejected: Premature: tagging normative/discovered on the existing qa entry type needs no required-field migration and keeps the adoption floor flat. A typed criterion_kind is a later move only if a Spiral-poled criterion field is needed (bl-009 graduation), and that is itself an ondaod-gated decision.
  • Make criteria mandatory for all adopters to maximize ecosystem visibilityrejected: Collapses formalization-vs-adoption toward mandatory gates, violating the core.ncl node invariant 'schemas are optional layers, not mandatory gates'. eligibility 'Learned plus opt-in migration keep absence free.

Anti-patterns

  • Discovered criterion wears normative authority — A criterion harvested from insights or interaction is recorded without a provenance tag and is read as a declared requirement, silently acquiring authority it was never granted.
  • Auto-promotion by recurrence — A discovered criterion is promoted to normative automatically once it recurs enough times, letting reflection mint authoritative requirements with no declared, witnessed act.
  • Criteria mandatory at the adoption floor — The criteria level is made mandatory or empty-but-required for every adopter, putting new schema at the adoption floor instead of the top of the curve.

Related ADRs

ADR-046 · ADR-018 · ADR-024 · ADR-037 · ADR-029 · ADR-003 · ADR-050

Was this useful? Rate it
Got something to add? Tell me what you think, what you'd suggest, or whether we should keep exploring this topic.
· reads

We use cookies to help this site function, understand service usage, and support marketing efforts. Cookie Policy for more info.