diff --git a/SCOPE.md b/SCOPE.md index 879277b..5aac9aa 100644 --- a/SCOPE.md +++ b/SCOPE.md @@ -11,9 +11,9 @@ with executable proofs and mixed artifact maturity**. The working-tree canon version is `0.7.0`; the Python package version is `0.1.0`. These are separate version surfaces. Many models remain `RC1-seed`; -ITC-CAP is a frozen draft at `0.4.0`, and Emission Cadence is a draft document -at `0.1.0` with wire schema version `0.1`. This is not yet a stable, -ecosystem-wide conformance release. +ITC-CAP is a frozen draft at `0.4.0`, and Emission Cadence is a candidate +document at `0.2.0` with wire schema version `0.1` unchanged. This is not yet a +stable, ecosystem-wide conformance release. ## Ownership and boundaries @@ -92,8 +92,10 @@ Current limitations include: - limited external mapping and independent consumer interoperability evidence; - interface templates and evaluation packs without a complete set of source-owned, version-pinned consumer declarations; -- draft promotion and compatibility questions, including the requirement for - two independent Emission Cadence source implementations; +- no independent adoption evidence for Emission Cadence: the standard is at + candidate, which asserts a specified and machine-checkable contract, and stable + still requires two source-owned declarations from independent owners plus an + observer result from a third party (INFO-DEC-2026-002); - upstream full-application packaging limitations and consumer-owned adoption evidence. INFO-WP-0019 adds reusable arbitrary Emission Cadence declaration validation, diff --git a/history/2026-09-21_000846+0200-emission-cadence-promotion-gate.md b/history/2026-09-21_000846+0200-emission-cadence-promotion-gate.md new file mode 100644 index 0000000..71ba49f --- /dev/null +++ b/history/2026-09-21_000846+0200-emission-cadence-promotion-gate.md @@ -0,0 +1,69 @@ +# 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. diff --git a/infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md b/infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md index 2a16582..9443e47 100644 --- a/infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md +++ b/infospace/standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md @@ -6,8 +6,8 @@ type: standard standard_family: InfoTechCanon repository_context: info-tech-canon recommended_path: standards/emission-cadence/InfoTechCanonEmissionCadenceStandard.md -status: draft -version: 0.1.0 +status: candidate +version: 0.2.0 schema_version: "0.1" canonical_owner: InfoTechCanonEmissionCadenceStandard namespace: itc-emission-cadence @@ -30,15 +30,19 @@ provenance: source_file: infospace/assimilation/emission-cadence/source/EmissionCadenceDeclaration.md assimilation: assimilation/emission-cadence decision: GH-DEC-2026-004 +promotion: + level: candidate + decision: INFO-DEC-2026-002 + promoted_at: "2026-09-21" created_at: "2026-09-04" -updated_at: "2026-09-04" +updated_at: "2026-09-21" --- # InfoTechCanon Emission Cadence Standard **Short Name:** `ITC-EMISSION-CADENCE` -**Document Status:** Draft -**Version:** 0.1.0 +**Document Status:** Candidate +**Version:** 0.2.0 **Schema Version:** `0.1` ## 1. Purpose @@ -212,3 +216,37 @@ unsupported versions and forms, and keeps observation results separate from the source's declaration. Profile conformance is additional and is assessed by the profile owner. + +## 10. Promotion levels + +Promotion is assessed at two levels, because one gate was doing two different +jobs and neither could be claimed (INFO-DEC-2026-002). + +**Candidate** asserts that the contract is specified, machine-checkable and +stable enough to implement against. It requires, and this standard has: + +- a schema that covers every declared form, with an arbitrary source-owned + declaration validatable by one command against the named schema; +- a content-addressed contract bundle a source owner can pin to; +- validation that keeps a source's declaration separate from observation, and + reports that operational truth is not assessed; +- a documented consumption path for a consumer outside this repository. + +Candidate asserts nothing about adoption. No consumer has implemented this +contract, and this standard's own worked example is explicitly not a +source-owned declaration. + +**Stable** asserts that the contract survives contact with independent +implementers. It requires, and this standard does **not** have: + +- two source-owned declarations from owners independent of each other and of + this repository, pinned to a contract digest; +- at least one observer result produced by a party other than the declaring + source, exercising the comparison references; +- a recorded incompatibility or a recorded absence of one, from the attempt. + +A `0.x` version number continues to mean that incompatible changes remain +possible with migration guidance. Candidate status does not freeze the wire +contract, which stays at schema version `0.1`; it records that the canon side +of the work is finished and that what remains is adoption, which the canon +cannot perform on its own behalf. diff --git a/workplans/INFO-WP-0019-conformance-and-maintenance.md b/workplans/INFO-WP-0019-conformance-and-maintenance.md index 4222642..6f9a8d6 100644 --- a/workplans/INFO-WP-0019-conformance-and-maintenance.md +++ b/workplans/INFO-WP-0019-conformance-and-maintenance.md @@ -4,7 +4,7 @@ type: workplan title: "Conformance, reproducible consumption, and maintenance" domain: infotech repo: info-tech-canon -status: blocked +status: finished flavor: implementation owner: codex topic_slug: canon-optimization @@ -93,7 +93,7 @@ models or runtime expansion. ```task id: INFO-WP-0019-T06 -status: wait +status: done priority: high state_hub_task_id: "b33aeb8c-ba7c-5094-9902-85565c1e721b" ``` @@ -136,6 +136,40 @@ source owner; a second must be independent of it. Asking them is an outward action this workplan does not authorize, so T06 stays `wait` until the operator decides whether to solicit declarations, and from whom. +### Result — 2026-09-21 (T06) + +Closed by restating the gate rather than by evidence arriving, on the operator's +decision of 2026-09-21 after the third recheck found the evidence unchanged. +Recorded as INFO-DEC-2026-002, with the reasoning in +`history/2026-09-21_000846+0200-emission-cadence-promotion-gate.md`. + +The gate as written — "two independent Emission Cadence source implementations" +before draft promotion — 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. + +The gate is now two levels, written into the standard as section 10 rather than +only into SCOPE.md. **Candidate** 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 met and re-tested. +**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 recorded absence of one. + +Emission Cadence moves to `candidate` at document version `0.2.0`. The wire +contract is untouched at schema version `0.1`; a producer conformant yesterday +is conformant today. + +What was given up is stated in the decision record and worth repeating here: +`candidate` now carries no interoperability evidence at all. The mitigation is +that the standard says so 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 stable gate is stricter than the sentence it replaces, since +it adds the observer result and the incompatibility record. + ## Implementation notes T01–T04 implemented in `contracts.py`, `maintenance.py`, `paths.py`, CLI,