Re-examining §3.2a's inference rather than its numbers found one claim that was wrong and one that does not survive correction. Wrong: "two independent tests agree on that onset." The gap test (countable - unrestricted) and the vs-1.0 test (countable - 1.0) share the countable arm and are correlated at rho ~ 0.73. The vs-1.0 test is not confirmation, it is the same measurement with one noisy arm removed -- which makes it ~1.4x more sensitive, and is why it flags 4 cells where the gap test flags 1. What IS informative is the contrast between arms: unrestricted shows chance-level deviation, countable shows a shortfall concentrated at every uncle cap at the top of the band. Does not survive: the whole-band pooled gap, -0.00048 +- 0.00033 (t = 2.8). Counting every test in the section -- 15 per-cell gap, 5 pooled-per-delay, 1 whole-band, 30 vs-1.0 = 51 -- Bonferroni requires z = 3.30. It is now labelled unresolved. The sign imbalance (11/15 negative, p = 0.12) is labelled likewise. Holds, and more firmly than claimed: delta_max = 5, pooled t = 3.68. Added a 20 000-draw permutation test on the same cells, which assumes no distributional form: p = 0.0003, with every other delay at p >= 0.21. It clears the 51-test Bonferroni threshold. Replicate distributions are clean (sd ~0.003, |skew| <= 0.5, no outliers), and the peering graph re-rolls per replicate -- `replicate` is in config.key() and the graph is seeded from the full-key spawn hierarchy -- so the replicate SEM captures graph-to-graph variance rather than pseudo-replicating one graph. Added a weighted regression of gap on delay as a single pre-specifiable test with no choice of which delay to inspect: slope -0.00024 +- 0.00012 per slot (t = -2.05). Consistent with a monotone cost, marginal on its own, and reported as such. Added the limitation that actually caps the resolution: the comparison is unpaired. uncle_model enters the config key (which is what makes --old bit-reproduce the earlier runs), so the two arms share neither graph nor lottery draws and each comparison pays the between-run variance twice -- a +-0.0015 per-cell floor, an order of magnitude above the effect. A paired design would cancel most of it and is named as the single change that would most improve the measurement. The §1 summary is corrected to match: indistinguishable from zero up to delta_max = 4, resolved only at the top of the band at ~0.14%. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Total-Stake-Inference parameter selection
Per-node network simulation of Cryptarchia Total Stake Inference (TSI). Simulator: tsi-sim-pernode. All runs at the true security parameter k = 2160 unless noted; latency is in slots and 1 slot = 1 s.
This report selects and justifies the TSI parameters for Cryptarchia from a per-node network simulation. The whole report is one document — tsi-report.md — and section numbers (§1–§9, Appendices A–C) are stable identifiers referenced from the simulator and from spec discussion.
Uncle references. The model analysed throughout is the countable one: counting-only references, deduplicated by slot, drawn from first-fork blocks only, within a window derived as
w_u = W_abs/f. An unrestricted baseline — any orphan in the window at any fork depth — is measured alongside it for comparison. The two are indistinguishable in the design regimeρ < 1and diverge only under overload. See the model note at the top of the report, the mechanism in §2.1, the comparison in §3.2–§3.2a, and the reproduction notes in §9.
Contents
| § | what it covers |
|---|---|
| §1 | executive summary — the problem, the findings, the recommendation |
| §2 | the model, the measurement convention, and the counting rule |
| §3 | the findings and their evidence, including the high-precision design band (§3.2a) |
| §4 | design equations and the parameter-selection algorithm |
| §5 | caveats and regime of validity |
| §6 | robustness — jitter, grinding, withholding, selfish mining, rewards, reorg depth, churn |
| §7 | parameter reference — what each knob does |
| §8 | the safest selection, residual risks, and the recommendation-vs-spec deltas |
| §9 | reproducibility — how to re-run every study |
| A · B · C | the residual f-rounding offset · the per-epoch noise floor · consensus detail |
Headline recommendation
Cryptarchia baseline f = 1/30. Two design choices are foundational: count uncles per occupied slot, not per block — the density-bug fix that lands the estimate at exactly D (§2.1, §8.5) — and make genesis D̂ a single protocol constant, identical at every node, never client-configurable, since a per-node divergence is never self-corrected (§8.1 row 7). The settings: security k = 2160, uncle window W = 300 slots, uncle cap U ≥ ⌈ρ⌉ + 1 (2 at the Blend target; the protocol's MAX_UNCLES = 4 sits safely above it), learning rate β = 1, on-chain f at 10⁻⁶ precision, peering degree ≥ 6 at scale, soft uncle rewards with w_u + w_n < 1, and operate at load ρ = f·D_vis < 1. The full recommended-configuration table and rationale are in §8 →.
Figures
Figures are embedded from report-figures/ via relative links and are versioned here alongside the report. They are produced by the simulator's plotting scripts (scripts/*.py and tsi_sim.plotting) in tsi-sim-pernode; that simulation folder does not commit its own generated figures — the copies checked in here are the report's figures of record.
Reproducing the results
The simulation code, configs, and run data live in tools/simulators/tsi/tsi-sim-pernode. Every study's exact command is listed in §9 — Reproducibility. In short, from the simulator directory: make install, then make <config> to run a sweep (results land under runs/<timestamp>_<label>/), and the per-figure generators under scripts/ render the figures. Regenerated figures must be copied into report-figures/ to update this report.