70 lines
3.5 KiB
Markdown
70 lines
3.5 KiB
Markdown
|
|
# 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.
|