Every escape so far was an uncaptured scenario, never a wrong fixture,
and nothing noticed the gaps: a new emitting event could ship with the
catalogue, recognition, and the trace tables all blind to it. The gate
derives the covered set by parsing every fixture's `actions` (send
prose in either quote style, structured objects; non-send prose
contributes nothing), reads the event union from the exported const
arrays it is defined by, and asserts four things: every event is
covered or allowlisted with a reason, no allowlisted event is secretly
covered (stale exclusions fail), every fixture-referenced event exists
in the union, and every fixture yields at least one event (a parse
miss fails loudly instead of silently voiding coverage).
The initial allowlist is the census: 14 events verified non-emitting
against their operation paths, 30 emitting events awaiting capture,
container scenarios first among them.
The wire catalogue only protects scenarios someone captured, and both of this quarter's field failures were uncaptured scenarios rather than wrong fixtures. Nothing noticed such gaps: a new emitting behavior event could ship with the catalogue and everything built on it blind to the event's wire shapes.
This adds the noticing as one unit test. Coverage is derived, not declared: the test parses every fixture's
actionsfor the events it exercises (send prose in either quote style, structured objects; non-send prose deliberately contributes nothing) and reads the event union from the const arrays that define it, so neither side can drift from reality. Four assertions: every event is covered or allowlisted with a written reason; no allowlisted event is secretly covered, so stale exclusions fail; every event a fixture references exists in the union, so typos fail; every fixture yields at least one event, so a parse miss fails loudly instead of silently voiding a fixture's coverage.The initial allowlist doubles as the census: 14 events verified non-emitting against their operation paths (reasons state the load-bearing claim: no document patches), and 30 emitting events awaiting capture, which is the burn-down list for the follow-up increment, container scenarios first. From this commit on, adding an emitting event without a capture or a deliberate exclusion is a red build instead of a memory.