Skip to content

rc5: adopt CIRISConstitution#112 (grammar as data) — verify's lowercase accord kinds, the single hardware vocabulary, minors at promotion, vector replay — and publish the operational-relief evidence row #691

Description

@emooreatx

Why. CIRISConstitution#112 (operator decision 2026-09-26) makes parsing and casing 100 % consistent before anything is built up. The CC half is merged on main (#113, #122): manifests/namespace_registry.json at 148 families with the grammar as data, one reference matcher (tools/cc_namespace_match.py), 962 replayed vectors, _meta.registry_sha256 as the pin. Persist's adopt is CIRISPersist#924 (pulled into v50). This is the server checklist from #112, plus one evidence row.

Checklist (from CIRISConstitution#112, server section):

  1. Adopt verify's rc5 cut — InvocationKind serde/as_str lowercase (constitutional | notify | drill) under the domain label ciris.accord_invoke.v2; the old label fails loudly by design. accord.rs:1353's error text should assert against as_str(), not a literal. Cut-over precondition: no halt latched.
  2. One hardware vocabulary — a test hardware_custody_vocabulary_single_source forbidding the literals TPM_2_0, SOFTWARE_ONLY, EXTERNAL_SECURE_ELEMENT, PKCS11, secure_enclave, platform-sealed anywhere outside ciris_keyring::HardwareType; verify-status emits HardwareType::as_platform() (the 13 snake_case hardware_custody:{platform} tokens) and drops key_storage_mode. hardware_class stays a JSON property (CC 4.2.2 mapping table; unlisted class ⇒ multiplier 0.0).
  3. Minors — promote_owner_binding_to_federation refuses when the granter's age band is minor (CC 5.4.6: "announced" is the owner-binding at cohort_scope: federation; a minor's node never carries one); announce_bundle visibility flips only on promote.
  4. Vector replay — conformance replays manifests/namespace_match_vectors.json (962) against whatever matcher the server uses; a matcher that admits Capacity:composite:v1 as open vocabulary, or consent:totally:new:v1, fails.
  5. Re-vendor the registry at CC main (a4d29a6, registry_sha256 re-stamped) — not at any Conformance gap (scaling §1.4): trust-recursion-depth admission not enforced in any shipping artifact #113 intermediate head.

Evidence row (rc5 re-pin). CC re-pinned server at 046e1b3 today. One rc4 ruling row still has no symbol: 4.2.1.4 CLM-operational-relief — a node self-reports config:load on infra:attest with witness_relation: self; a root relieves via mesh_config; the relief expires (CIRISConstitution#96). Add the row naming the config:load self-report emitter and the mesh_config relief path in evidence/cc_impl.tsv; CC re-pins and it graduates. #536's 30 decimals and #537's fold rows remain the larger evidence asks.

Refs: CIRISConstitution#112, #113, #122, #96, #536, #537; CIRISPersist#924; CIRISVerify (companion issue filed today).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions