Skip to content

Stamps round on every effect.* wire message - #33

Merged
johnnyt merged 1 commit into
mainfrom
sui-67d-round-on-effects
Aug 22, 2026
Merged

Stamps round on every effect.* wire message#33
johnnyt merged 1 commit into
mainfrom
sui-67d-round-on-effects

Conversation

@johnnyt

@johnnyt johnnyt commented Aug 22, 2026

Copy link
Copy Markdown
Member

Propagates the engine's round counter onto the nine effect.* wire
types that still emitted a nil round envelope; effect.budget_exhausted
already carried it. The value is the engine's own stamp (statifier
ADR-0046, st-xb2b), carried verbatim by the normalizer - nothing is
invented on the wire.

Wire-format decisions recorded (this repo owns the wire format):

  • Additive envelope field under the must-ignore rule, so the format
    version stays 1 - the same reasoning effect.datamodel_change recorded
    for adding a whole type (sui-h92 precedent). Consumers of older
    recorded streams must still tolerate effect.* messages without the
    key.
  • Repoints docs/wire-format.md's forward references from sui-t36.5
    (which shipped without this propagation) to sui-67d.
  • Reconciles the st-xb2b vs st-nbmj citation: st-nbmj filed the
    upstream gap and was superseded by st-xb2b, whose ADR-0046 decided
    it; the References entry now says so instead of attributing ADR-0046
    to both.

Interaction with the datamodel explorer (PR #32, merged mid-flight):
effect.datamodel_change no longer carries a nil round envelope - it
now carries the engine's stamp. lib/statifier_ui/datamodel_explorer/*
is behaviorally unaffected: it orders writes by
{macrostep, microstep, seq} and never reads the round field. Its
moduledoc's "finer marking would need an upstream wire change" note was
stale the moment this landed, so it now records that round-granular
change marking is a possible local refinement, while the pane
deliberately stays at macrostep granularity.

EventLog needed no code change, as sui-t36.5 planned: its
round-presence routing now files round-carrying effect.* messages into
their round buckets; a new test pins that, and the round-less case
remains covered as the older-recorded-stream shape.

Full mix quality gate green on top of current main (412 tests,
93.2% coverage, dialyzer clean).

Closes: sui-67d

Propagates the engine's round counter (statifier ADR-0046, st-xb2b)
onto the nine effect.* wire types that still emitted it as nil;
effect.budget_exhausted already carried it. The value is the engine's
own stamp, carried verbatim by the normalizer.

Records the versioning decision in docs/wire-format.md: an additive
envelope field under the must-ignore rule, so the format version
stays 1, and consumers of older recorded streams must tolerate
effect.* messages without the key. Also repoints the doc's forward
references from sui-t36.5 (which shipped without this propagation)
to sui-67d, and reconciles the st-xb2b vs st-nbmj citation: st-nbmj
filed the upstream gap, st-xb2b decided it via ADR-0046.

EventLog needs no code change - its round-presence routing now files
round-carrying effect messages into their round buckets, as planned;
a new test pins that behavior.

Refs: sui-67d
@johnnyt
johnnyt merged commit ab28fad into main Aug 22, 2026
1 check passed
@johnnyt
johnnyt deleted the sui-67d-round-on-effects branch August 22, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant