Skip to content

Adds a case telling shallow from deep history - #453

Merged
johnnyt merged 1 commit into
mainfrom
st-1wy4-shallow-history-compound-case
Oct 11, 2026
Merged

johnnyt merged 1 commit into
mainfrom
st-1wy4-shallow-history-compound-case

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 11, 2026

Copy link
Copy Markdown
Member

Refs: st-1wy4

What this adds

The loan chart's history h is shallow, but every child of active it can
remember is a leaf, so shallow and deep history restore the same
configuration: changing type="shallow" to type="deep" left every case
agreeing. A shallow history differs from a deep one only when the remembered
child is compound.

loan_dispute_restores_late_shallowly is a new case pair under
conformance/cases/library/. Its loan chart is the one the other loan cases
use, with due_soon and overdue gathered under a compound late state
(initial due_soon), so the child of active that h remembers is
compound. The loan goes due-soon, then overdue (which sends the lost-item
timer), a dispute takes it out of active, and the resolution re-enters
late through h at its initial due_soon, not at overdue; the
lost-item timer is sent once. It uses only the conformance README's
library-world events, ids and durations, and registers both send types,
library:timer then library:route.

The mutation check

With the history's type changed from shallow to deep in the new chart
(the file copied first), mix test.baseline add refused the case and left
the ratchet unchanged, and running it through the corpus runner reported
the disagreement at the resolution step: expected due_soon, got
overdue. The file was restored from the copy and compared byte-equal with
cmp; the case then agreed again.

What moved in the corpus

  • test/passing_tests.json gains the case (through mix test.baseline add,
    which ran it first).
  • conformance/corpus/statifier.json, conformance/manifest.json and
    conformance/registry.json are regenerated by mix statifier.corpus: the
    statifier suite's case_count goes from 35 to 36, the registry claims the
    new case, and corpus_hash moves. A sibling that vendors the corpus
    re-vendors at the next tag.
  • The scion and w3c corpus files and exclusions.json were rewritten by the
    emitter with no change, from an upstream tree transformed in this branch's
    worktree with the current stylesheet.

No changelog fragment (changelog.d/README.md excludes conformance
fixtures).

Gate

Full mix quality (mix gate.verify) green on this commit's tree after the
rebase onto the current main, and the merge profile
(mix quality --profile merge) green, the ADR judge skipped because no file
is in a judged scope.

Review

Tier: gate (conformance fixtures and generated files). The in-turn review of
the diff found nothing blocking; its two advisories (the case does not go on
to fire loan.lost from the restored state, and the chart keeps the loan
datamodel and renewal transition it does not exercise, as the sibling loan
cases do) were left as they are.

The loan chart's history h is shallow, but every child it can
remember is a leaf, so shallow and deep history restore the same
configuration and changing the type left every case agreeing.

- Authors loan_dispute_restores_late_shallowly under
  conformance/cases/library/: a loan chart whose due_soon and overdue
  sit inside a compound late state, so the remembered child of active
  is compound. The loan goes overdue, a dispute takes it out of
  active, and the resolution re-enters late at its initial due_soon;
  the lost-item timer is sent once. Only library-world events, ids
  and durations are used.
- With the history's type changed from shallow to deep, the case
  disagrees at the resolution step (expected due_soon, got overdue).
  Restored from a copy, byte-equal.
- Ratchets the case in (mix test.baseline add) and regenerates
  conformance/corpus/statifier.json, manifest.json and registry.json:
  the statifier suite grows by one case, the registry claims it, and
  the corpus hash moves, so a sibling that vendors the corpus
  re-vendors at the next tag.

No changelog fragment (conformance fixtures).

Full mix quality (mix gate.verify) ran green on this commit's tree
(write-tree a379c6f).

Refs: st-1wy4
@johnnyt
johnnyt force-pushed the st-1wy4-shallow-history-compound-case branch from b52eca9 to 9e874d3 Compare October 11, 2026 16:01
@johnnyt
johnnyt merged commit fa7eac8 into main Oct 11, 2026
1 check passed
@johnnyt
johnnyt deleted the st-1wy4-shallow-history-compound-case branch October 11, 2026 16:03
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