Repository navigation
feat(scenarios): Alpenglow's 150 ms finality case (ideal) + architecture map - #5
Merged
Merged
Conversation
New builtin scenario on the same healthy six-region, mainnet-stake, fault-free cluster as happy-path. The only knob is the hero tx: submitted at 550 ms it rides the last slice of its block, so it pays almost none of the 400 ms (Δblock, paper Table 10) block-assembly wait and only Votor remains -- 60% notarize, then the 80% fast-finalization certificate 149.6 ms later. The median validator finalizes the block 149 ms after receiving it, which is min(δ80%, 2·δ60%) measured from distribution: the median the Alpenglow white paper reports for random leaders (§1.3, Fig. 14). TowerBFT confirms the same block at 887 ms and roots it at 12.4 s. Guarded by alpenglow::tests::ideal_fast_matches_the_papers_150ms_median so the seed-pinned timing cannot silently drift; both the transaction number and the per-node median are asserted.
The description claimed Alpenglow fast-finalizes the hero transaction in ~150 ms; it actually takes 451 ms, because the transaction lands in the first slice of its block and waits out the whole 400 ms block assembly. State the real numbers (451 ms finalized, 513 ms Tower confirmed, 12.7 s rooted), explain the cause, and point at ideal-fast, which shows the same healthy cluster at 150 ms when the transaction rides the last slice.
A contributor- and reviewer-facing map of how the simulator fits together: the shape of the system, the repository and module tables, how a scenario becomes a running simulation, one step of the event loop, the engine/protocol boundary, the trace contract and the four-step recipe for adding an event, the determinism invariants and why the UI can rewind by replaying, the render pipeline, the CLI/wasm/scenario/URL surfaces, the test map, "where do I add X", and an explicit list of what is modelled versus simplified (25 vs ~1500 validators, no Byzantine adversary yet, no crypto, constant execution time, abstract network). Six Mermaid diagrams, each checked against the Mermaid parser. Existing docs keep their content; README, CLAUDE.md, protocols.md, wasm-api.md and web/README.md link in.
The three hand-drawn box/line diagrams in README.md, CLAUDE.md and web/README.md drift the moment a crate is renamed and are unreadable without a monospace viewer. They are now Mermaid flowcharts carrying the same information -- GitHub renders them, and they diff like code. Each block was checked against the Mermaid parser, as were the six in docs/architecture.md. The file listing under web/README.md "Files" stays a code block: it is a directory tree to copy from, not a graph.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
AkashJana18
added a commit
that referenced
this pull request
Oct 3, 2026
Pages was never enabled for this repository, so actions/deploy-pages failed with a 404 on every push to main since the job was added — five consecutive red runs, including the merge of #5. Production deploys from main through the linked Vercel project instead, so the job, its artifact upload and its environment block all go.
AkashJana18
added a commit
that referenced
this pull request
Oct 3, 2026
Pages was never enabled for this repository, so actions/deploy-pages failed with a 404 on every push to main since the job was added — five consecutive red runs, including the merge of #5. Production deploys from main through the linked Vercel project instead, so the job, its artifact upload and its environment block all go.
This branch was successfully deployed
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.
What
Two related pieces of work: a new scenario that reproduces the Alpenglow white paper's headline
latency number, and a written architecture map of the project.
1.
ideal-fast: Alpenglow finalizes the hero transaction in 150 msscenarios/happy-path.jsonclaimed Alpenglow fast-finalizes its hero transaction "~150 ms after theblock lands". It does not — it takes 451 ms, because that transaction lands in the first slice of
its block and waits out the whole 400 ms block assembly before it can even be voted on.
ideal-fastis the same healthy six-region, mainnet-stake, fault-free cluster, with the transactionsubmitted at 550 ms so it rides the block's last slice. What is left is pure Votor:
Grounded in the paper rather than tuned to taste. The white paper (v1.1, §1.3) measures finalization
after a block has been distributed — min(δ80%, 2δ60%) — and Fig. 14 reports a median of roughly
150 ms for randomly chosen leaders. In this run the median validator finalizes the hero block 149.3
ms after receiving it: the same measurement, the same number. Parameters are the paper's, not
invented: Δblock = 400 ms (Table 10), 4-block leader windows, 60%/80% certificate thresholds,
Pareto mainnet-like stake, and the repo's real-world-latency six-region preset.
alpenglow::tests::ideal_fast_matches_the_papers_150ms_medianasserts both the transaction timing andthe per-node median, so the seed-pinned numbers cannot silently drift. happy-path's copy is corrected
in the same PR, and the README explains that the 300 ms between the two scenarios is block assembly,
not consensus.
2.
docs/architecture.md: the project mapWritten for contributors and for reviewers deciding whether the project is credible: system shape,
repository and module tables, scenario → running simulation, one step of the event loop, the
engine/protocol boundary, the trace contract with the four-step recipe for adding an event, the
determinism invariants and why the UI can rewind by replaying, the render pipeline, the
CLI/wasm/scenario/URL surfaces, the test map, "where do I add X", and — deliberately — a closing list
of what is modelled versus simplified (25 vs ~1,500 validators, no Byzantine adversary yet, no
cryptography, constant execution time, abstract network, shortened Δstandstill).
Six Mermaid diagrams, each verified against the Mermaid parser rather than eyeballed. The three
hand-drawn ASCII diagrams in
README.md,CLAUDE.mdandweb/README.mdbecame Mermaid flowchartswith the same content; existing docs keep their text and link in.
Why reviewers should care
stream; there is no side channel, and no UI-side state that could disagree with the simulation.
core on the same seed and produce the same trace, so a number in a lesson, in this PR and in a bug
report are the same number.
traces are compared byte for byte; that is what lets the browser scrub backwards by rebuilding and
fast-forwarding instead of shipping snapshots.
Verification
cargo test --workspace(19 unit + 4 property tests, incl. determinism over all six builtinscenarios) ·
bun run test(53) ·bun run build(strict tsc) · wasm rebuilt ·Playwright
smoke,lesson,sharegreen · every scenario timing in the copy measured withsim-cli, not written by hand.