Skip to content

Two more baselines, a per-mission risk metric, exact definitions, CI - #3

Merged
wbnns merged 7 commits into
mainfrom
baselines-and-risk
Oct 11, 2026
Merged

wbnns merged 7 commits into
mainfrom
baselines-and-risk

Conversation

@wbnns

@wbnns wbnns commented Oct 11, 2026

Copy link
Copy Markdown
Member

Adds two autonomous baselines and a per-mission risk metric, and reports where the shrinking quorum loses.

Changes

  • TMR + unchecked simplex: fixed TMR that falls back on its own to a lone processor that does not check itself. Isolates the value of self-check.
  • Cold standby: one powered processor, the rest unpowered, switched on in order, with self-check on the active one. The nearest model here of dual-string with autonomous switchover. New --cold-aging X (spare aging rate relative to a powered one). It is swept from 0.1 to 1.0, never reported at one value.
  • Risk metric: share of missions with at least one wrong result, with a paired bootstrap 95% CI. Printed directly next to the 136-year break-even.
  • Exact definitions of useful, service, wrong days and lost days, in the README and as doc comments, as the code computes them.
  • --sweep gains the cold-standby table; --bench skips policies it does not model; --bin charts draws five policies and a new cold-aging chart; docs/data.json gains generated (date, commit, host, rustc) and a display block of the exact strings the README quotes.
  • scripts/check-readme.sh: fails when a README number or output block differs from docs/data.json or a fresh run (--run).
  • CI (new): fmt, clippy, tests, check-readme.sh --run.
  • rustfmt.toml and a format-only commit; default-run = "dusk" so cargo run --release works as the README says.

Results (10,000 missions, seed 1, no ground support after launch)

Shrinking quorum against Useful work Missions with at least one wrong result
Fixed TMR 1.34x (95% CI 1.33x to 1.35x) 20.1% vs 0.0%
TMR + unchecked simplex 80% 20.1% vs 87.2%
Cold standby, 3 strings, spare aging 0.1 0.92x (95% CI 0.91x to 0.92x) 20.1% vs 61.3%
Cold standby, 3 strings, spare aging 1.0 1.60x (95% CI 1.59x to 1.60x) 20.1% vs 43.2%
Cold standby, 2 strings, aging 0.1 to 1.0 1.05x to 1.49x

Cold standby with three strings outworks the shrinking quorum when an unpowered spare ages at less than about 0.20 of the powered rate. Every existing number is unchanged (checked byte for byte against main).

Checks

cargo fmt --check, cargo clippy --all-targets -- -D warnings, cargo test --release (30 tests), ./scripts/check-readme.sh and --run: all pass locally.

Merging deploys dusk.mru.space (GitHub Pages from main:/docs). Merge before the website PR: its claims check reads docs/data.json from dusk main.

wbnns added 7 commits October 11, 2026 12:52
Add TMR + unchecked simplex (isolates the value of self-check) and cold
standby (one powered string, the rest unpowered, switched on in index
order). A cold spare ages at --cold-aging of the powered rate, read from
each unit's own Weibull draw, which History now keeps as wear. The
correlation step also records each victim's killer. Neither adds a random
draw, so every existing number is unchanged.

Risk is the share of missions with at least one wrong result, with a
bootstrap interval. The report shows cold standby at aging 0.1 and 1.0
rather than one guessed value, and the sweep adds a table by aging rate.
The bench check skips any policy other than tmr and shrink with a note.
Doc comments on Outcome give the exact definitions.
check-readme.sh fails if the README misses any string in data.json's
display object or the page's static text drifts from it. With --run it
reruns dusk and diffs the README output blocks. CI runs fmt, clippy, the
tests and check-readme --run.
README output blocks are verbatim runs. Every 1.34x now says it assumes
no ground support after launch. Never less on any single mission is
stated as true by construction and tested over 200 seeds. Adds exact
definitions, a section on the two baselines with the cold aging table and
the two-string case, and the new limits. The page gains a risk tile, the
cold standby chart, the new table rows and straight apostrophes.
With two binaries, cargo run could not pick one, so the README's
cargo run --release commands failed.
Adds the cold standby chart, the two new lines in the timeline, risk,
the cold aging curve, and the generated and display blocks. Generated
from a clean tree at 6936feb. Every field data.json had before is
unchanged.
@wbnns wbnns mentioned this pull request Oct 11, 2026
@wbnns
wbnns merged commit ff2b2d4 into main Oct 11, 2026
4 checks passed
@wbnns
wbnns deleted the baselines-and-risk branch October 11, 2026 14:17
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