Skip to content

P0: SPEC.md completeness: fold verify, representations, frame identity, and consent scopes into the normative home (restore context-reuse §3) #49

Description

@macanderson

⚠️ Blocking contradiction: the verify correlation id

SPEC §9's own normative verify example was validated against this repo's schema/contextgraph-envelope.schema.json and comes back INVALID. The example carries a correlation id; the schema's verify/verified envelopes do not admit one. A normative example that fails the repository's own schema is the single worst state this spec can be in before a freeze — it means the two artifacts a downstream implementer would copy from disagree with each other.

Resolve it one way or the other before the freeze: either add id to verify/verified (a wire change, and therefore not addable later) or strike it from the example. Doing nothing also settles H4 by accident, in the direction that leaves an error reply to a verify uncorrelatable.


SPEC.md declares itself the single normative home (SPEC.md:5), but four shipped normative wire surfaces are absent from it:

Authority is also triple-claimed: docs/protocol-surface.md:316 calls its own table "the consolidated, authoritative list" while its header (lines 3–7) defers to SPEC.md, and GOVERNANCE.md points at protocol-surface.md#conformance-requirements as the conformance contract. Pick one. — Settled in #60: authority is single. docs/protocol-surface.md and GOVERNANCE.md both defer to SPEC.md.

Small true-ups that belong in the same pass:

  • §9's error table (SPEC.md:325-332) lacks a code for H3's version-mismatch "named error", and unsupported_representation (normative in contextgraph-types/src/query.rs:51) is absent — X1 makes unknown codes read as internal ("count against health"), the wrong reaction to a permanent incompatibility. — still open; the two missing ErrorCode variants are tracked alongside P1: Structured error codes on the wire #9.
  • verify/verified envelopes carry no correlation id while query/frames/error do (H4) — a correlation-capable provider cannot pipeline verify, and an error reply to a verify is uncorrelatable. Decide before the freeze; adding it later is a wire change. — still open, and now self-contradictory; see the callout at the top of this issue.

Acceptance


The four survivors (2026-07-26)

  1. The verify-id contradiction — a normative SPEC example that fails this repo's own schema (see the callout above). Highest priority; it is a wire decision, so it cannot slip past the freeze.
  2. Usage reports (U1) — absent from SPEC.md entirely, and the U1 anchor collides with an existing one, breaking the stable-anchor guarantee.
  3. The §9 error-table gaps — no code for H3 version-mismatch (incompatible_version), no unsupported_representation. Shares a fix with P1: Structured error codes on the wire #9.
  4. The tokenizer_ref schema $comment — contradicts the representations text folded in by Pre-freeze: normative completeness + enforcement + host conformance (top-10 build) #60. Carried in from Decide context/resolve before the freeze: specify it or cut reference representations — and define B3 for compact/reference frames #50, which closed as decided.

Metadata

Metadata

Assignees

No one assigned

    Labels

    normativeChanges the protocol version or conformance contract (GOVERNANCE.md process)specThe normative specification text

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions