Add Vortex DSE specifications - #220
Open
vasilisnasopoulos wants to merge 1 commit into
Open
Conversation
Deterministic slot-based admission with a separate per-slot agreement layer: a message carries its own slot stamp and each node decides admission locally, with no leader, quorum or vote. Two admission modes are specified because both are implemented: the default admits a late message into its own slot, while the opt-in TTL mode rejects it permanently to bound memory. Vortex_DSE_CSlot_AE is specified over the TTL mode; the README says so rather than implying it composes with the default. Six TLC models, all completing in under four seconds. Three TLAPS modules discharging 194, 131 and 34 obligations, all exit 0 under tlapm --strict with no OMITTED steps. Signed-off-by: vasilis nasopouloss <vasilisnasopouloss@MacBook-Air-vasilis.local>
lemmy
reviewed
Aug 4, 2026
| /\ MaxSlot = 1 | ||
|
|
||
| \* Conjunction of every safety invariant in the module. | ||
| AllInv == |
Member
There was a problem hiding this comment.
Isn’t it better if Apalache reports the name of the invariant that’s been violated?
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.
Adds
specifications/VortexDSE/— a deterministic slot-based admissionprotocol with a separate per-slot agreement layer. A message carries its own
slot stamp and each node decides admission locally against its own clock;
there is no leader, quorum or vote.
Two admission modes, both specified because both are implemented.
Vortex_DSE_CSlotadmits a late message into its own slot, so nothing isdropped.
Vortex_DSE_CSlot_TTLrejects it permanently, which bounds memorybehind the frontier. The difference is
<=versus=in one conjunct.Vortex_DSE_CSlot_AE(Freeze / Reconcile / Commit) is specified over the TTLmode, not the default. Its
NoReorderAcrossCslotinvariant encodes the strictgate, so it is not a refinement of the late-tolerant rule; extending it would
mean restating what "no reordering across slots" means, and I have not done
that here. The spec README says this rather than leaving it to be discovered.
Checked:
success, 0.6–3.3sVortex_DSE_CSlot_ProofsVortex_DSE_CSlot_ExactlyOnce_ProofVortex_DSE_CSlot_AE_ProofsAll three proof modules exit 0 under
tlapm --strictand contain noOMITTEDsteps. Model runtimes and state counts in
manifest.jsonwere measured withcheck_small_models.pylocally;check_manifest_schema,check_manifest_files,check_manifest_featuresandcheck_markdown_tableall pass.Scope is deliberately limited:
Vortex_DSE_CSlot_Skewstates the bounded-skewassumption structurally but does not model the mechanism that maintains it, and
Reconcileis a single atomic step rather than the multi-round protocolunderneath.
Two notes from preparing this, neither blocking:
generate_manifest.pyrewrites every spec'smanifest.json, not only the newone; it produced diffs in 14 unrelated manifests, which I reverted. Only
specifications/VortexDSE/and the README table are touched here.check_proofs.pyreadsmodule['proof']['runtime'], but the schema requiresmaxRuntimeMinutesand setsadditionalProperties: false. It raisesKeyError: 'runtime'on any spec with a proof, including on a cleanmaster.CI is unaffected because it invokes
tlapmdirectly. Happy to open a separateissue or PR for it if useful.