diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index 415901e..9fbbd3e 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -20,6 +20,7 @@ | workplan | INFO-WP-0026 | finished | — | workplans/INFO-WP-0026-interface-canon-boundary-review.md | | workplan | INFO-WP-0027 | finished | — | workplans/INFO-WP-0027-concept-declaration-coverage.md | | workplan | INFO-WP-0028 | finished | — | workplans/INFO-WP-0028-import-manifest-resolution.md | +| workplan | INFO-WP-0029 | active | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | | workplan | ITC-WP-0001 | finished | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md | | workplan | ITC-WP-0002 | finished | — | workplans/ITC-WP-0002-service-surface-cli-json-api.md | | workplan | ITC-WP-0003 | finished | — | workplans/ITC-WP-0003-validation-indexes-and-generated-views.md | @@ -77,6 +78,11 @@ | task | INFO-WP-0028-T02 | done | — | workplans/INFO-WP-0028-import-manifest-resolution.md | | task | INFO-WP-0028-T03 | done | — | workplans/INFO-WP-0028-import-manifest-resolution.md | | task | INFO-WP-0028-T04 | done | — | workplans/INFO-WP-0028-import-manifest-resolution.md | +| task | INFO-WP-0029-T01 | done | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | +| task | INFO-WP-0029-T02 | progress | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | +| task | INFO-WP-0029-T03 | progress | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | +| task | INFO-WP-0029-T04 | wait | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | +| task | INFO-WP-0029-T05 | wait | — | workplans/INFO-WP-0029-emission-cadence-adoption.md | | task | ITC-WP-0001-T01 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md | | task | ITC-WP-0001-T02 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md | | task | ITC-WP-0001-T03 | done | — | workplans/ITC-WP-0001-infospace-scaffold-and-seed-placement.md | diff --git a/docs/emission-cadence-adoption.md b/docs/emission-cadence-adoption.md new file mode 100644 index 0000000..409fffa --- /dev/null +++ b/docs/emission-cadence-adoption.md @@ -0,0 +1,71 @@ +# Adopting the Emission Cadence contract as a source owner + +The Emission Cadence standard is at **candidate** (document `0.2.0`, wire schema +version `0.1`). Candidate means the contract is specified and machine-checkable. +It asserts nothing about adoption: no source has implemented it. + +This page is what a source owner needs in order to change that. It asks for a +declaration you own, not for a change to your system. + +## What the contract is for + +A source declares how often it emits an event class, so that an observer can +tell **silence that means nothing happened** from **silence that means the source +stopped**. Without a declared cadence, an absent event is unreadable. The +standard keeps the two roles apart: the source declares, the observer evaluates, +and a declaration is never evidence that the emission actually happens. + +## What a source owner supplies + +1. **A declaration you own**, valid against + `infospace/schemas/emission-cadence.schema.yaml`, published in your own + repository. It states your `source`, your `stream_id`, and one entry per + event class you own, in one of the declared forms: + - `expected-rate` — at least N events in a window, below which a finding is raised; + - `heartbeat-or-reconciliation` — either a heartbeat asserting + `nothing-to-report`, or a comparison between your own counts and the + observer's. +2. **The contract digest you implemented against**, so the declaration is pinned + to a fixed reading of the contract rather than to whatever the canon says + later. Current digest: `972c0b6701d1693f` + (`info_tech_canon export-emission-contract ` regenerates it). +3. **Nothing else.** No deployment, no runtime proof, no conformance claim. A + declaration is a statement of intended cadence. + +Validate before publishing: + +```bash +info_tech_canon emission-review path/to/your-declaration.yaml +``` + +It returns `ok` plus `operational_truth_assessed: false` — the command checks +your declaration against the schema and deliberately says nothing about whether +your system emits at that cadence. + +`infospace/standards/emission-cadence/examples/qonto-assistant.yaml` shows both +forms. It is a worked example and explicitly not a source-owned declaration. + +## What an observer supplies + +Separately from any source: a result produced by evaluating a source's declared +cadence against events you actually observed, with the comparison references the +declaration names. An observer result from the declaring source does not count — +the point is that two parties read the same declaration the same way. + +## What this repository does with it + +Validates submitted declarations, records them as adoption evidence, and reports +any incompatibility found in the attempt. It does not operate your system, +observe your events, or certify your conformance. + +Two source-owned declarations from independent owners, plus one third-party +observer result, plus a recorded incompatibility or a recorded absence of one, +are what the standard's section 10 requires to move from candidate to stable. + +## What is honestly uncertain + +The contract has never been implemented by anyone. The most useful thing a first +adopter can report is **where it does not fit** — a cadence your system has that +neither form expresses, a window semantics mismatch, an event class that needs +more than one entry. A recorded incompatibility is a successful outcome of this +exercise, not a failure of it. diff --git a/workplans/INFO-WP-0029-emission-cadence-adoption.md b/workplans/INFO-WP-0029-emission-cadence-adoption.md new file mode 100644 index 0000000..86eef45 --- /dev/null +++ b/workplans/INFO-WP-0029-emission-cadence-adoption.md @@ -0,0 +1,119 @@ +--- +id: INFO-WP-0029 +type: workplan +title: "Seek independent Emission Cadence adoption evidence" +domain: infotech +repo: info-tech-canon +status: active +owner: claude +topic_slug: canon-optimization +created: "2026-09-21" +updated: "2026-09-21" +flavor: coordination +state_hub_workstream_id: "d743e220-9d2d-52d8-8df3-880805269639" +--- + +# Emission Cadence adoption + +INFO-DEC-2026-002 split the promotion gate and moved the standard to candidate, +which asserts a specified contract and no adoption. This workplan pursues the +other half: the evidence the stable level requires. Authorized by the operator +on 2026-09-21, which lifts the restriction INFO-WP-0019-T06 carried against +outward messages. + +Success is not "two declarations arrive". Success is learning whether the +contract survives someone implementing it. A recorded incompatibility closes +this workplan as usefully as a clean adoption does. + +## Publish what a source owner needs + +```task +id: INFO-WP-0029-T01 +status: done +priority: high +state_hub_task_id: "c5d6422b-53a2-597a-a554-52741d4ae146" +``` + +`docs/emission-cadence-adoption.md` states what a source owner supplies — a +declaration they own, valid against the schema, pinned to the contract digest — +and what it does not ask for: no deployment, no runtime proof, no conformance +claim. It names the validate command, both declared forms, the separate observer +role, and says plainly that the contract has never been implemented and that +reporting where it does not fit is a successful outcome. + +The ask points at this page rather than restating itself in every message, so +what is being asked cannot drift between recipients. + +## Ask net-kingdom, the origin owner + +```task +id: INFO-WP-0029-T02 +status: progress +priority: high +state_hub_task_id: "845c27d1-5b66-5317-8abb-0a62eb0d9638" +``` + +The contract was assimilated from the King's Guard taxonomy and the evidence +classes remain NetKingdom-owned, so net-kingdom is the one party with a +pre-existing stake in being able to read silence. It is also the party most +likely to find the contract's real gaps, since it wrote the problem statement. + +Ask for one source-owned declaration for an event class it already emits. +Waiting for a reply is expected; this task tracks the ask, not the answer. + +Sent 2026-09-21 as State Hub message `3432a831-b25f-4717-ad8b-cb19fb1b6633`. + +## Ask a second, independent source + +```task +id: INFO-WP-0029-T03 +status: progress +priority: high +state_hub_task_id: "bb74cce9-12d8-58e2-ad44-c4aeb7b72f37" +``` + +The second declaration must come from an owner independent of net-kingdom. +`activity-core` is the candidate: it has a real, documented periodic emission +relationship into issue-core, so declared cadence is a question it already has +rather than one this request invents. + +Sent 2026-09-21 as State Hub message `f1687805-3153-47c2-9744-05a2b1a6b8c1`. +Both messages name the brief rather than restating the ask, and both say that a +recorded incompatibility is a successful outcome. + +## Record the evidence or the incompatibility + +```task +id: INFO-WP-0029-T04 +status: wait +priority: medium +state_hub_task_id: "4771ff59-264e-5917-a49d-8989b361b8ed" +``` + +Validate whatever arrives with `emission-review`, record it as adoption +evidence under `feedback/`, and write up what the attempt revealed. If a +declaration cannot be expressed in either form, that is the finding, and it goes +to the standard as a change proposal rather than being worked around in the +declaration. + +## Observer result + +```task +id: INFO-WP-0029-T05 +status: wait +priority: medium +state_hub_task_id: "0486fcba-3609-50c5-b347-e7ee84f9f548" +``` + +One result from a party other than the declaring source, evaluating a declared +cadence against observed events. Blocked until at least one declaration exists, +since there is nothing to evaluate before then. + +## Honest limit on what this can prove + +Both candidate owners are repositories in the same operator's fleet. They are +independent of each other and of this repository in the sense the standard's +section 10 requires, and that is the sense the gate was written in — but they +are not independent of the operator. Evidence gathered here demonstrates that +the contract is implementable by parties who did not write it. It does not +demonstrate ecosystem adoption, and no promotion note may claim otherwise.