Skip to content

W87 — The World-Graph Kind Says What Its Ticks Did #358

Description

@The-Running-Dev

Someone diagnosing a resort that behaves oddly can watch what happened inside a tick — which guests could not reach a building, which tasks were assigned and cancelled, what each charge was for, how an objective moved — instead of inferring it from the state before and after. Today the pipeline runs twenty systems and reports on six of them.

Done when

  • W87.1 Every row in 12 §12's table is emitted at the system it names and declared in Kind.eventNames; the status column has no remaining specified, not yet delivered row, and the paragraph explaining that status is rewritten rather than left describing a state that no longer exists.
  • W87.2 A test enumerates declared names against emitted ones in both directions, so a declared name with no emit site and an emitted name that was never declared each fail.
  • W87.3 Events emit in system order and then in the owning comparator order, asserted over a multi-tick batch as an ordered list — the property that makes the stream a readable causal trace rather than an unordered log.
  • W87.4 Dropping every event changes nothing: the same batch run with a null sink and with a recording sink produces byte-identical serialize() output and identical StateChange arrays.
  • W87.5 Severity assignment matches the table exactly, asserted per row, since severity is the only thing standing between a host and the six-figure trace volume a large batch produces.
  • W87.6 Every committed world-graph replay outcome is unchanged byte-for-byte.
  • W87.7 npm run typecheck, npm run lint and npm test pass from src/engine/.

Agent instructions

Run /slice W87.

  • Scope and criteria: design/30-slices.md § W87 @ 6fd30e04106b4db4db7614faa0e474ff1b160405
  • Signatures: design/12-world-graph-kind.md §4, §12; design/05-observability.md §2, §7, §9
  • Out of scope here: new event names or severities; the optional candidate-generation diagnostic's shape beyond what the table fixes; any sink, exporter or trace-context work (05 §13); presenting the stream anywhere
  • Depends on: W81–W85, which each deliver the rows their own system owns

Stop conditions and procedure: .claude/commands/slice.md. Not restated here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    sliceA W-numbered vertical delivery slice from design/30-slices.md

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions