Repository navigation
Adds a case telling shallow from deep history - #453
Merged
Merged
Conversation
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
force-pushed
the
st-1wy4-shallow-history-compound-case
branch
from
October 11, 2026 16:01
b52eca9 to
9e874d3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs: st-1wy4
What this adds
The loan chart's history
his shallow, but every child ofactiveit canremember is a leaf, so shallow and deep history restore the same
configuration: changing
type="shallow"totype="deep"left every caseagreeing. A shallow history differs from a deep one only when the remembered
child is compound.
loan_dispute_restores_late_shallowlyis a new case pair underconformance/cases/library/. Its loan chart is the one the other loan casesuse, with
due_soonandoverduegathered under a compoundlatestate(initial
due_soon), so the child ofactivethathremembers iscompound. The loan goes due-soon, then overdue (which sends the lost-item
timer), a dispute takes it out of
active, and the resolution re-enterslatethroughhat its initialdue_soon, not atoverdue; thelost-item timer is sent once. It uses only the conformance README's
library-world events, ids and durations, and registers both send types,
library:timerthenlibrary:route.The mutation check
With the history's type changed from
shallowtodeepin the new chart(the file copied first),
mix test.baseline addrefused the case and leftthe ratchet unchanged, and running it through the corpus runner reported
the disagreement at the resolution step: expected
due_soon, gotoverdue. The file was restored from the copy and compared byte-equal withcmp; the case then agreed again.What moved in the corpus
test/passing_tests.jsongains the case (throughmix test.baseline add,which ran it first).
conformance/corpus/statifier.json,conformance/manifest.jsonandconformance/registry.jsonare regenerated bymix statifier.corpus: thestatifier suite's
case_countgoes from 35 to 36, the registry claims thenew case, and
corpus_hashmoves. A sibling that vendors the corpusre-vendors at the next tag.
exclusions.jsonwere rewritten by theemitter with no change, from an upstream tree transformed in this branch's
worktree with the current stylesheet.
No changelog fragment (
changelog.d/README.mdexcludes conformancefixtures).
Gate
Full
mix quality(mix gate.verify) green on this commit's tree after therebase onto the current
main, and the merge profile(
mix quality --profile merge) green, the ADR judge skipped because no fileis 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.lostfrom the restored state, and the chart keeps the loandatamodel and renewal transition it does not exercise, as the sibling loan
cases do) were left as they are.