experiments: per-victim seeded arrival order (ADR 0044) + the deaf/mute row pair — the N-042 instrument pass - #188
Draft
EzequielPostan wants to merge 5 commits into
Draft
experiments: per-victim seeded arrival order (ADR 0044) + the deaf/mute row pair — the N-042 instrument pass#188EzequielPostan wants to merge 5 commits into
EzequielPostan wants to merge 5 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…te row pair The wave sort's canonical key becomes (addressee rank, arrival key, sender rank, identity), the arrival key a pure function of (run seed, recipient, sender) under experiments/arrival-order/v1 — each victim's budget races decorrelate, resolving N-042's instrument amplification (resolution recorded after the frozen validation re-runs). Run rows gain the formal severity tables' stranded-node classification: deaf (unreachable from the giant) and mute (cannot reach it), computed in the existing condensation pass. Both changes are byte-affecting: one re-baseline generation per ADR 0036 follows. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eration recorded Both frozen re-runs passed (seed 1148: 80/400 vs the form's 84.8, z = -0.59, races exact; the ordered flooder: 400/400 with race columns identical to the decimal). m2-comparison re-validated at the new generation (three quoted send figures at quoted precision; every other measurand value-identical); resolution addenda at the N-042 references. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…egistries Pre-existing on main, surfaced by the CI toolchain update: the traits are async for I/O-backed registries; the in-memory implementations are synchronous under their mutex by design. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
The instrument pass chartered at the E20 merge: the N-042 fix and the parked failure-severity run-row change, batched into one re-baseline generation per ADR 0036.
The arrival-order fix (ADR 0044, resolves N-042)
The wavefront's canonical (sender rank, addressee rank) delivery sort made every victim process its intra-wave arrivals in the same global sender-rank order, so under saturated budgets a low-ranked dialer won every admission race population-wide and a high-ranked dialer lost every one. Class-level measurands were exact under that order (ranks are independent of the class draw — every class-level prediction in E12/E18/E19 matched), but per-node tail events composed of many dial outcomes were amplified by orders of magnitude relative to the independent per-victim orders a real network approximates. Two passes measured the amplification: the E19 ordered flooder (386/400 good vs ≈ 400/400 under independent orders) and E20's seed-1148 pubseam cell (188/400 bad vs the corrected form's 84.8), both attributed to N-042 by rank dissection.
The fix: the wave sort key becomes (addressee rank, arrival key, sender rank, message identity), where the arrival key is
SHA-256(lp("experiments/arrival-order/v1") ‖ run_seed ‖ lp(recipient) ‖ lp(sender))— each recipient's intra-wave order over senders is decorrelated from every other recipient's by construction, and the whole run remains a pure function of (configuration, seeds), worker-count-independent. Driver-only; core untouched. The manifest's recorded seed-derivation rule names the arrival-key derivation.Both frozen validation re-runs passed (the fix's own pre-registrations, recorded in the charter before the pass ran):
pubseam-mu40-n4k-k12-bp100-cap10): 80/400 bad vs the independent-order form's 84.8 (z = −0.59), split 72 mute-class / 8 deaf-class (registered ~83 %/17 %; the deaf count's z ≈ −1.9), refusals 23 060/run vs the registered 23 063. The canonical order had measured 188/400.ordered-flood-b50-cap16-s800): 400/400 good (canonical order: 386/400 — all fourteen strandings were the instrument's), with the class-level race columns identical to the decimal (40 617.4 rejected/run, 230 394.6 dial sends/run) — the budget refuses the same load under both orders; only the per-node race allocation changed.The failure-severity row pair (the parked PR #152 batch partner)
Run rows gain
deaf(vertices the largest component cannot reach — the in-defect) andmute(vertices that cannot reach it — the out-defect), the formal severity tables' stranded-node classification, computed in the existing condensation pass (one forward and one backward walk from the giant; a vertex disconnected in both directions counts in both classes). Raw-digraph classification under every model — M3's seed rescue shows ingood, never here. The d-distribution (up_honest − largest_scc) was already derivable; the class split completes the formal folder's severity comparison surface.The re-baseline generation (ADR 0036)
All seven baseline sweeps re-run and stored at
0764da3, compared against the9197868generation with the two added fields stripped: every measurand of record is value-identical — good counts equal in all seven sweeps, zero changes across topology verdicts, coverage, receipts, depth distributions, degree and standing-degree histograms, and all dial columns. The one anticipated movement is thesends/sends_by_kind/suppressedattribution triple (split-horizon origin ties among same-wave duplicate deliveries resolve by the new order): Δsends ≡ Δsuppressed on every publish slice, mean |Δ| < 1 send per publish against 10²–10⁵-send totals.docs/experiments/m2-comparison.mdis re-validated and carries this generation's values (three quoted send figures moved at quoted precision; every other figure unchanged). Manifests differ intool_commitand the extendedseed_derivationonly.Records
specs/IMPLEMENTATION_NOTES.mdwith both re-runs' measured numbers.docs/experiments/symmetric-flooding.md,docs/experiments/m4-synthesis.md, and the program of record.configs/experiments/README.md) documents the new columns and cites ADR 0044.No new registered cells: both validation re-runs reuse their frozen seeds (1148, 1137); seeds 1150+ remain untaken.
🤖 Generated with Claude Code