lnd/simulation/lab/experiments
Olaoluwa Osuntokun 18cc7719ac simulation/lab: retract exp-016's mechanism, three guesses deep
The published explanation of why served weights hurt lnd was wrong, and
it reached the dashboard. It said lnd files a failure as a pair penalty
carrying no amount, suppressing a corridor for every payment size.
probability_apriori.go:363 returns the unpenalized prior whenever
amt < FailAmt, so the estimator gates on amount correctly. A Fable
advisor found it by reading the estimator rather than the summary.

Its replacement hypothesis was wrong too. Node-level contagion is real
-- getNodeProbability folds pair results into a node prior used for all
that node's untried channels, which the "761 edges, 761 pairs" check
never ruled out -- but disabling it with apriori.weight=1.0 leaves the
loss at -0.038 against -0.046.

The third guess, staleness, looked decisive and was a confound.
Failures from a one-payment server cost lnd +0.000 on 0 of 10 files,
but that set holds 232 observations against the stale set's 2,808. A
size-matched random subsample of the STALE set gives -0.003. At equal
volume stale and fresh are indistinguishable.

What survives is volume. Each imported failure blocks one directed edge
at or above its amount, and server and consumer draw amounts from the
same distribution, so the bounds land where the consumer is about to
send. At 232 observations nothing happens; at 2,808 over a 761-edge
graph lnd finds its amount blocked almost everywhere and can only route
around, onto longer and worse paths.

The upstream thesis survives in a sharper form. lnd's estimator does not
ignore amounts. Nothing DOWNSTREAM of it can act on an amount bound,
because findPath takes the amount as a fixed argument -- so knowing that
at least X fails on an edge can only subtract routes, never resize the
payment. That is exp-002b's finding from the opposite direction, and the
two now converge on one patch instead of two observations.

Two further claims are labelled rather than deleted. exp-011's paradigm
ceiling is confounded with the optimizer, since every run in this
program used engine="gepa" and three lineages converging on one band is
evidence about that engine's attractor as much as about the problem; the
adjudicating run is specified in the writeup. And the proposer law from
exp-010b was fitted to two opposite-sign runs, so it is downgraded to a
hypothesis.

Also stages params_lnd_no_contagion.json, the weight=1.0 configuration
that isolates node-level aggregation, so the contagion control is
reproducible.
2026-07-26 23:44:36 -07:00
..
exp-001-param-smoke.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-002-param-run1.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-002b-bimodal-knob.md simulation/lab: turn the knob WHY.md said we never turned 2026-07-26 13:55:48 -07:00
exp-003-seed-router-vs-lnd.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-004-code-evolution.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-004-sim-audit.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-005-sim-audit.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-006-breakthrough.md simulation/lab: correct the record on the bimodal prior 2026-07-26 02:33:34 -07:00
exp-007-mix-followup.md simulation: add evolved router champions and lab notebook 2026-07-24 13:01:06 -07:00
exp-008-drift-evolution.md simulation/lab: close exp-008 -- time-awareness re-evolves, loses anyway 2026-07-24 20:08:33 -07:00
exp-008-drift1-best-candidate.go simulation/lab: close exp-008 -- time-awareness re-evolves, loses anyway 2026-07-24 20:08:33 -07:00
exp-008-drift1-best-candidate.md simulation: document the drift1 winner, resolve exp-008 in the docs 2026-07-24 20:26:46 -07:00
exp-009-mainnet-validation.md simulation/lab: add mainnet-graph validation results 2026-07-24 13:24:22 -07:00
exp-010-opus1-best-candidate.go simulation/lab: close exp-010 with the Opus 5 reflection A/B verdict 2026-07-25 17:07:02 -07:00
exp-010-opus1-best-candidate.md simulation/lab: document the exp-010 challenger routers 2026-07-25 18:01:15 -07:00
exp-010-opusmed1-best-candidate.go simulation/lab: close exp-010 with the Opus 5 reflection A/B verdict 2026-07-25 17:07:02 -07:00
exp-010-opusmed1-best-candidate.md simulation/lab: document the exp-010 challenger routers 2026-07-25 18:01:15 -07:00
exp-010-split2-best-candidate.go simulation/lab: record the exp-010 codex-arm verdict 2026-07-25 03:11:51 -07:00
exp-010-splitting-pressure.md simulation/lab: correct the exp-010 collapse attribution 2026-07-25 18:02:28 -07:00
exp-010b-atomic-splitting.md simulation/lab: close exp-010b -- the champion survives its honest arena 2026-07-26 01:03:37 -07:00
exp-010b-atomic1-best-candidate.go simulation/lab: close exp-010b -- the champion survives its honest arena 2026-07-26 01:03:37 -07:00
exp-010b-atomic1-best-candidate.md simulation/lab: document the exp-010b challenger routers 2026-07-26 02:04:23 -07:00
exp-010b-atomicopus1-best-candidate.go simulation/lab: record the exp-010b Opus-arm verdict 2026-07-25 20:03:04 -07:00
exp-010b-atomicopus1-best-candidate.md simulation/lab: document the exp-010b challenger routers 2026-07-26 02:04:23 -07:00
exp-011-code-gen2.md simulation/lab: retract exp-016's mechanism, three guesses deep 2026-07-26 23:44:36 -07:00
exp-011-gen2-best-candidate.go simulation/lab: add exp-011, the code_gen2 insight-transfer run 2026-07-24 16:37:25 -07:00
exp-012-cold-cache.md simulation: reconcile the stale stubs the docs pass found 2026-07-26 14:41:37 -07:00
exp-013-hybrid-continuation.md simulation/lab: exp-013, the give-up attractor 2026-07-26 18:55:53 -07:00
exp-013-hybrid1-best-candidate.go simulation/lab: exp-013, the give-up attractor 2026-07-26 18:55:53 -07:00
exp-013-hybrid1-validation.json simulation/lab: exp-013, the give-up attractor 2026-07-26 18:55:53 -07:00
exp-014-traffic-engine.md simulation/lab: write up exp-014, the traffic engine fix 2026-07-26 19:20:52 -07:00
exp-015-churn-ladder.json simulation/lab: exp-015, exp-008 called a tie a loss 2026-07-26 19:58:09 -07:00
exp-015-churn-ladder.md simulation/lab: kill the hb1-churn hypothesis at n=40 2026-07-26 22:42:13 -07:00
exp-015-hb1-churn-n40.json simulation/lab: kill the hb1-churn hypothesis at n=40 2026-07-26 22:42:13 -07:00
exp-016-atomic1-importer.go simulation/lab: exp-016, free knowledge helps the champions and hurts lnd 2026-07-26 23:06:50 -07:00
exp-016-mxc3-importer.go simulation/lab: exp-016, free knowledge helps the champions and hurts lnd 2026-07-26 23:06:50 -07:00
exp-016-served-weights.json simulation/lab: exp-016, free knowledge helps the champions and hurts lnd 2026-07-26 23:06:50 -07:00
exp-016-served-weights.md simulation/lab: retract exp-016's mechanism, three guesses deep 2026-07-26 23:44:36 -07:00