lnd/simulation/lab
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
..
experiments simulation/lab: retract exp-016's mechanism, three guesses deep 2026-07-26 23:44:36 -07:00
DECISIONS.md simulation/lab: add decisions log 2026-07-24 13:31:17 -07:00
IDEAS.md simulation: prep exp-010 prompt and design exp-012 cold-cache study 2026-07-24 21:08:40 -07:00
NOTEBOOK.md simulation/lab: retract exp-016's mechanism, three guesses deep 2026-07-26 23:44:36 -07:00
WHY.md simulation/lab: retract exp-016's mechanism, three guesses deep 2026-07-26 23:44:36 -07:00