Repository navigation
Conversation
Quest-Claim: 778a2e14d7634e53
The route spec carries Apalache's type annotations and its folds in place of RECURSIVE operators, so both tools read one file. TLC loads the folds from Apalache's library (nix/apalache.nix, the `tla` recipe) and finds the same distinct states on every exhaustive config. Apalache 0.63 runs out of memory on one step of the smallest mesh with a loop, so the inductive check stalls here; the quest records the measurements and the decision it needs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
RouteClaims.tla keeps only what the claim rules need, with no paths. RouteHandoff refines it (RefinesClaims on every passing config), and Apalache checks its inductive invariant: IndInv holds at Init and every step keeps it. sh/tla.sh runs a config with an Apalache: line through Apalache, and picks the directory's root spec for a config named after none. RouteHandoff.tla drops the annotations and folds. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 13, 2026
Collaborator
Author
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.
Checkpoint for quest/m1/route-inductive.md: the inductive invariant stalls because Apalache cannot check even one step of the route model. This PR records why and hands back the decision on how to continue.
Summary
rs/moq-net/verify/route/RouteHandoff.tlacarries Apalache type annotations, and itsRECURSIVEoperators and recursive functions are now Apalache folds (ApaFoldSet,ApaFoldSeqLeft), so one file serves both tools.IsPathchecks a path's shape directly instead of enumerating every loop-free path.Eachtakes a function that returns one message, and the request walk andChasedare now folds of one step each.nix/apalache.nixpackages Apalache 0.63.0 (nixpkgs has none) on JDK 21 underlegacyPackages, outside the dev shell.share/tlaholds itsApalache.tla.just rs tlanow runs TLC from the spec's directory with-DTLA-Librarypointing at that library, because TLC reads the property only for a spec named without a directory. The newjust rs apalache <command> <spec>runs Apalache with its output in a temporary directory.Apalache 0.63 could not finish one step with
SimplePathsas the only invariant, given 16 GB of heap:Init, all 7 transitionsDeliveron one session, from any typed state--smt-encoding=arraysEvery step runs
Update, which rebuilds a node's whole state, so the solver encodes every route path, view, sent record, and reader event for every step. That state does not fit, even before an invariant is added.Waiting
main, are pushed as86bdb5719, and the claims model's checks have not finished.Choices made without asking
sha256sum.txt).Apalache.tlathroughTLA-Library. I chose that over vendoring a copy beside the spec, whichsh/tla.shwould take for a second spec.Gen) stay out of the tree; the quest describes them. A second.tlain the route directory breakssh/tla.sh, and they have no consumer until the decision above.Checks
just rs apalache typecheck moq-net/verify/route/RouteHandoff.tla: passes.just test tla rs/moq-net/verify/route: every config gives its expected result, andLoop.cfgstill breaksRequestsLoopFree. The exhaustive configs find exactly the distinct states the skill lists: RouteHandoff 407,240; Early 4,178,590; Ring 426,409; Lag 1,299,405; LagWide 4,194,747.just checkandquest check: pass.rs/specs: not rerun. They take the newtlarecipe but extend no Apalache module.Observed, not fixed here
TLA+ (route behind)leg namesrs/moq-net/verify/route/BehindDear.cfg, which moq-dev/moq#8541 deleted, so the leg fails. A separate PR fixes it.TLA+ (rest)leg fails onrs/moq-net/verify/failover/EndedRelay.cfg(TLC exit 12, a broken rule) in today's run. No open PR addresses it.Public API: none. Wire: none.
Follow-ups
None yet; the decision above may add the loop-rules quest.
Models
Size: L
Implementer: Claude Code, Opus 5.5, high effort
🤖 Generated with Claude Code
(Written by Claude Opus 5.5 with high)