The 6 October 2026 pause from the observer rows: 20 keys holding 42.7 percent of the frozen voter table left in three minutes; locks formed without the hub; the 2/3 rule paused at checkpoint 6843 (53.1 percent of total) and the frozen table (Q5) held the pause for a window where rule v2 would have locked after 35 minutes. Candidate rules run in a copy of the finality simulator (seeds 7, 11, 13): only the departure announcement keeps 0 conflicting locks and ends the pause under an hour. Weight capture priced at the measured USD 11.7 per GH/s-hour: the veto 0.52 x N for 30 days (USD 4,300 per GH/s of network), a lock alone 2.03 x N. Lock delay by voter count measured on node 1; the ZK light client and prover attestations costed. Models: sim/horizon/finality-and-weight/ (finality_horizon.py, weight_capture.py, lightclient_cost.py, merge_results.py, results/). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| results | ||
| finality_horizon.py | ||
| lightclient_cost.py | ||
| merge_results.py | ||
| README.md | ||
| weight_capture.py | ||
sim/horizon/finality-and-weight
Models behind docs/analysis/horizon/finality-and-weight.md (Horizon lane 3, 6 October 2026).
finality_horizon.py
A copy of sim/finality_v2.py as of fud-close 1544c63 (the block reading of Q2, scenario O) plus four candidate rules and three scenarios. The base rule in every candidate is the live one: active denominator under the block reading, floor 1.0 (a lock needs 2/3 of total), each partition side retargets (+daa) and counts only its own blocks (+local), and frozen=True for rule v3 (the frozen table, ledger F21).
Candidates (--cands, comma-separated keys or all):
| key | rule |
|---|---|
v2 |
sliding table only (the rule before F21) |
v3 |
plus the frozen table (the live rule since N3) |
leave |
(iv) departure announcement: a key's signed leave removes it from every denominator 1 h later |
decay1 |
(i) decaying denominator: a key the view has not seen vote for 1 h loses 0.5 of its denominator weight per hour (gone after 3 h) |
decay6 |
(i) slow decay: 6 h grace, 1/24 per hour (gone after 30 h) |
hyst |
(iii) floor with hysteresis: after 1 h under 2/3 signing the floor drops to 0.85 x 2/3 (sliding and frozen), back after 1 h at or above 2/3 |
twotier |
(ii) a provisional lock at 2/3 of the active denominator (block reading, no floor), reported beside the final lock, never certifying |
Scenarios: T tonight's departure (34, 45, 50 percent of weight stops mining and signing at once, 31 days), P the partition suite (H, I, E, L3 eclipse, L4 12-day splits), Q silent weight (L1) and acquired keys that leave (Q2, leave candidate only).
Runs behind the analysis (igneum-build-1, Python 3.12, numpy 1.26.4, nice -n 19, one process per candidate, seeds 7, 11, 13; about 25 minutes wall):
for c in v2 v3 leave decay1 decay6 hyst twotier; do
nice -n 19 python3 finality_horizon.py --scenarios T,P,Q --seeds 7,11,13 --cands $c > out-$c.md 2> err-$c.log &
done
Smoke run on the Mac (under the main checkout's run lock, about one minute):
/Users/joshm/Projects/igneum/tools/lock/with-lock.sh run nice -n 19 python3 finality_horizon.py --quick --scenarios T,P,Q --seeds 7
Outputs of the full run are in results/ (out-<cand>.md, err-<cand>.log with the per-scenario timings); python3 merge_results.py merges them into results/combined.md, the tables section 5 of the analysis quotes.
weight_capture.py
Arithmetic of task 3 (rented hash against the 30-day window at the measured USD 11.7 per GH/s-hour; bought keys). python3 weight_capture.py.
lightclient_cost.py
Arithmetic of task 4 (bytes and verification time of a year of certificates by voter count; the ZK light client's per-checkpoint cycles, approximate). python3 lightclient_cost.py.
obs-query.mjs (not in this directory)
The observer rows of tonight's pause were read with read-only SELECTs against the observer's Neon database (the script lived in the session scratchpad; it is fetch to the Neon SQL endpoint with DATABASE_URL from ~/.config/igneum/env, refusing anything but SELECT). The queries are quoted in the analysis document.