docs: the 2026-07-22 lessons — resolution-timing survivorship (round 3)

FINDINGS: full round-3 section (mechanism, the 81%-vs-26% audit, how the
paper harness caught it, corrected verdicts, three standing rules) +
scorecard updates (surge dead, sub5c dead 0/38, oracle revived at E>=0.07)
+ correction banner on the 07-20 tape-era section. HANDOFF: queue +
snapshot reflect the kill, surgebot's instrument role, scorer law, Friday's
combined agenda. research/README: SCORER LAW + independent-instrument rule
+ full current layout. recorder/README: sync transport fallback. README:
/surge dashboard + research row truth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
jaxperro
2026-07-22 17:39:46 -04:00
parent 7cb6c620ee
commit 790ef42c40
5 changed files with 118 additions and 32 deletions
+23 -6
View File
@@ -16,17 +16,34 @@ anything on the live bot"):
verdict + kill criteria) BEFORE their forward window opens. Exploration
happens on already-collected tape; **verdicts only come from
`forward_ledger.jsonl` rows dated after the params freeze commit.**
- **SCORER LAW (2026-07-22, FINDINGS "round three"): every scorer resolves
outcomes through `forward.payouts_for()` — tape proxy first, CTF chain
overlay for the remainder. A "pending" bucket is NEVER ignorable on
Polymarket: market liveness encodes the outcome (a losing bet's winning
sibling keeps trading, so losses hide in pending while wins score).
This bug inflated Study A from a true $6/fill to +$46/fill.**
- **Every study gets one instrument that does not share the scorer's
assumptions** — the surge paper harness (chain-graded from day one) is
what caught the bug. Divergence between instruments is signal, not noise.
Layout:
tape.py read-only loaders · tape proxy-resolution (terminal-VWAP +
sibling veto, the 742/742 chain-validated method) · title
parsers (niche, crypto strike/expiry/sprint)
sibling veto — exact per-bet, but resolution TIMING is
win-biased; see SCORER LAW) · title parsers · chain_overlay()
sim.py execution replayer calibrated on OUR live fills ledger
(lag, FAK no-match, protected band, 3% taker fee)
study_flow.py Study A — informed-flow state signal
study_oracle.py Study B — crypto oracle fair value vs the book
requote.py crater→requote timing measurement (retry tuning)
forward.py scores frozen studies on new tape days → forward_ledger.jsonl
study_flow.py Study A — surge momentum (KILLED 2026-07-22, #16)
study_oracle.py Study B — crypto oracle fair value (#17: E0.04 killed,
E≥0.07 accumulating)
requote.py crater→requote timing (feeds the bots' per-niche retry)
forward.py scores frozen studies on new tape days → forward_ledger
(payouts_for chain overlay mandatory; controls + sub5c
exploratory arm — 0-for-38, dead)
informed_set.py publishes params/informed_set.json nightly (surgebot input)
surgebot.py real-time PAPER harness (wwf-surgebot, /feed endpoint →
jaxperro.com/surge) — $100 book, $5 stakes, event cap 2
grade_surge.py nightly chain-truth re-grade of the surge paper book
→ surge_paper_ledger.jsonl
params/ frozen study parameters (committed = frozen)
nightly.sh launchd runner (fires 09:15, then WAITS for fresh tape —
Stage 0 keeps the tape ~15-min fresh whenever the Mac is