Failure codes
Failure codes are the machine-readable half of every verdict — the part your agent branches on.
They follow one pattern: died_at names the gate, failure_codes name the causes.
Gates (died_at)
| value | the signal failed at… |
|---|---|
| gate_1_net_edge | net edge — nothing left after realistic costs, spread and delay |
| gate_2_family_deflation | multiple-testing deflation — the family tried too often for this result to mean anything |
| gate_3_placebo | the placebo trial — random twins with the same profile did just as well |
| gate_4_capacity_robustness | capacity & robustness — died under delay, cost stress, jackknife, regime split or parameter wiggle |
Codes you will meet most often
| code | diagnosis | what it usually means for you |
|---|---|---|
| edge_collapses_at_lag1 | the edge vanishes when execution is delayed one bar | look-ahead leakage — check your data pipeline before anything else |
| family_budget_exhausted | this strategy family has used up its honest tries | stop tweaking; a new variant cannot be distinguished from luck anymore |
The survival map
Independent of the gates, five attacks always report their result:
delay_1bar, cost_stress, jackknife, regime_split,
param_wiggle — each survives or dead. A signal that passes overall
but shows regime_split: dead is telling you where its risk hides.
The response is self-describing: every code your agent encounters arrives together with its human-readable diagnosis in the same document.