From 4383d250bec79d4d174d6d43a703d5f0c2a676e5 Mon Sep 17 00:00:00 2001 From: jaxperro Date: Thu, 23 Jul 2026 14:01:39 -0400 Subject: [PATCH] docs: #16 formally closed (kill executed as pre-registered); T1 sim hardened (per-second vol memo + streamed progress) Co-Authored-By: Claude Fable 5 --- HANDOFF.md | 10 +++++----- research/README.md | 2 +- research/maker_quote_sim.py | 19 ++++++++++++++++++- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/HANDOFF.md b/HANDOFF.md index bcbe622b..9aae37d6 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -25,11 +25,11 @@ LOW urgency, the platform auto-redeems winners itself. auto_redeem OFF. Open now: #1 Signal A, #2 tape research, #4 redeem builder-key, #13 Fri bench, #14 edge verdict, #15 tape-pull batching (Stage-0 fold+mirror superseded the bulk path; sync now sftp-with-base64-fallback), #16 surge -momentum (**KILL CRITERIA MET 2026-07-22** — resolution-timing scorer bug, -FINDINGS round-3 section; formal close at Friday's read), #17 oracle fair -value (sample ×30 under chain scoring; E0.04 tier killed, E≥0.07 slightly -positive and accumulating), #19 surge sprint plan (Friday decision matrix; -surgebot stays paper through the read). #18 (empty-cond copies +momentum **CLOSED 2026-07-23** (kill executed as pre-registered — both +instruments chain-true; A2 runs through Friday's #19 read), #17 oracle fair +value (E0.04 killed; higher tiers ledger-positive but harness-vetoed — +taker arm evidence-dead, decision Friday), #19 surge sprint plan (Friday: +disposition + #20/#21 flip decisions). #18 (empty-cond copies unsettleable) closed same day: RTDS seed enrichment + falsy-cond repair pass + 1h alarm. diff --git a/research/README.md b/research/README.md index 4d7a6138..ed71fcd8 100644 --- a/research/README.md +++ b/research/README.md @@ -39,7 +39,7 @@ Layout: 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 — surge momentum (KILLED 2026-07-22, #16; A2 + study_flow.py Study A — surge momentum (#16 CLOSED 2026-07-23; A2 chain grade −$7.54/fill × 1,344 independently confirms) study_oracle.py Study B — crypto oracle fair value (#17: E0.04 killed; E≥0.07/0.1 ledger-positive but the harness chain grade diff --git a/research/maker_quote_sim.py b/research/maker_quote_sim.py index 23cd5ee2..39c51a7f 100644 --- a/research/maker_quote_sim.py +++ b/research/maker_quote_sim.py @@ -49,6 +49,18 @@ def main(): print(f"universe {len(uni)} tokens · tick span {span_d:.1f}d") cells = {(m, R): dict(fills=[], last=0.0, n_tok={}) for m in MARGINS for R in LATENCIES} + # per-(sym, second) vol memo: ticks are ~1/s, so vol_1s within one + # second is identical — this turns the O(window)-per-print killer into + # a dict hit (the un-memoized run needed hours and died unwitnessed) + vol_cache = {} + + def vol_at(s, sym, ts): + k = (sym, int(ts)) + if k not in vol_cache: + vol_cache[k] = s.vol_1s(ts) + return vol_cache[k] + + done = 0 for u in uni: mkt = u["mkt"] prints = db.execute("""SELECT ts, price FROM trades @@ -63,7 +75,7 @@ def main(): px = float(px) if mkt["kind"] == "sprint" and ts < (mkt["t0"] or 0): continue # no pre-window quoting - sig = s.vol_1s(ts) + sig = vol_at(s, mkt["sym"], ts) if sig is None: continue for R in LATENCIES: @@ -88,6 +100,11 @@ def main(): cells[k]["fills"].append( {"asset": u["asset"], "ts": ts, "bid": bid, "fair": f, "mo60": (f60 - bid) if f60 else None}) + done += 1 + if done % 500 == 0: + nf = sum(len(c["fills"]) for c in cells.values()) + print(f" … {done}/{len(uni)} tokens · {nf} fills so far", + flush=True) filled_assets = {f["asset"] for c in cells.values() for f in c["fills"]} pays = fwd.payouts_for(db, list(filled_assets)) print(f"grading {len(filled_assets)} filled tokens (chain overlay)…")