info-tech-canon/history/2026-09-21_000846+0200-emission-cadence-promotion-gate.md
tegwick 4d0851c3fc
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
Split the Emission Cadence promotion gate and promote to candidate (T06)
The gate required two independent source implementations before draft
promotion, which made one sentence do two jobs: whether the contract is
specified well enough to implement against, which this repository can answer,
and whether it survives implementers who did not write it, which it cannot. The
second blocked the first, so the standard sat at draft — a word that reads as
unfinished specification — when what was missing was adoption.

Candidate now requires schema coverage of every form, one-command validation of
an arbitrary source-owned declaration, a content-addressed bundle a source can
pin to, separation of declaration from observation, and a documented external
consumption path. All are met and were re-tested rather than assumed. Stable
requires two source-owned declarations from independent owners pinned to a
digest, an observer result from a third party, and a recorded incompatibility or
a recorded absence of one — stricter than the sentence it replaces.

Emission Cadence moves to candidate at document version 0.2.0. The wire contract
is untouched at schema version 0.1, and no field, form or validation rule
changes, so a producer conformant yesterday is conformant today.

What was given up: candidate carries no interoperability evidence at all. The
standard states that in its own section 10, naming that no consumer has
implemented the contract and that its worked example is not a source-owned
declaration. The gate now lives in the standard rather than only in SCOPE.md, so
a reader meets it where the contract is.

Recorded as INFO-DEC-2026-002 with the reasoning in history/. INFO-WP-0019
closes: all six tasks done.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 3588@bnt-lap001
Assistant-Session: 24b80f66-e5a7-4e61-99fe-2d422e6d17da
2026-09-21 00:10:33 +02:00

3.5 KiB

Emission Cadence promotion gate — restatement

Date: 2026-09-21 (Europe/Berlin) Decision: INFO-DEC-2026-002 — split the gate; promote to candidate. Origin: INFO-WP-0019-T06, waiting since 2026-09-05, rechecked 2026-09-09 and 2026-09-20 with no change in the evidence. Operator chose restatement over soliciting declarations.

The problem with the gate as written

SCOPE.md required "two independent Emission Cadence source implementations" before draft promotion. One sentence was doing two different jobs:

  1. Is the contract specified well enough to implement against? A question about this repository's own work, answerable here.
  2. Does the contract survive contact with implementers who did not write it? A question about other people's systems, unanswerable here by construction.

Because both sat behind one gate, the second blocked the first. The standard stayed at draft — a word that reads as "unfinished specification" — when what was actually missing was adoption. A reader could not tell which.

The canon-side work has been complete since 2026-09-05 and was re-tested on 2026-09-20: emission-review validates an arbitrary source-owned declaration against the named schema and reports operational_truth_assessed: false; export-emission-contract produces a content-addressed bundle at digest 972c0b6701d1693f whose manifest states the adoption requirement in words; the consumption path is documented for a consumer outside this repository. Nothing in that set needs an external party.

Decision

Split the gate into two levels, recorded in the standard itself as section 10 rather than only in SCOPE.md, so a reader meets it where the contract is.

  • Candidate — the contract is specified, machine-checkable, and stable enough to implement against. Met today. Asserts nothing about adoption.
  • Stable — the contract survives independent implementation: two source-owned declarations from owners independent of each other and of this repository, pinned to a contract digest, plus an observer result from a party other than the declaring source, and a recorded incompatibility or recorded absence of one.

Emission Cadence moves to candidate at document version 0.2.0. The wire contract is unchanged at schema version 0.1, and 0.x still means incompatible change remains possible with migration guidance.

What was given up

The original gate, honestly read, meant the standard could not be promoted at all until two external owners acted. Splitting it means this repository can now say the specification work is finished while adoption is not — but it also means the word "candidate" no longer carries any interoperability evidence. That is a real reduction in what a status word tells a reader, and it is mitigated only by the standard stating plainly, in section 10, that no consumer has implemented the contract and that its own worked example is not a source-owned declaration.

The stable gate is deliberately stricter than what it replaced: it adds the observer result and the recorded-incompatibility requirement, which the single sentence never asked for. Nothing was relaxed about interoperability; what changed is that the claim is now made at the level where it can be earned.

Limits

Agent review, not human sign-off. Candidate status records no consumer adoption, no runtime claim, and no conformance statement by any party. The promotion changes no field, form or validation rule; a producer conformant yesterday is conformant today.