From a002422aa7494894d7344f2005d1f72a63025b9b Mon Sep 17 00:00:00 2001 From: m3ultra Date: Fri, 17 Jul 2026 09:23:45 +1000 Subject: [PATCH] Log the douse calibration, the sagging-belly bug, and the gate-1 dependency Co-Authored-By: Claude Opus 4.8 --- THREADS.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/THREADS.md b/THREADS.md index deed8a5..d1fa641 100644 --- a/THREADS.md +++ b/THREADS.md @@ -1802,3 +1802,49 @@ Format: `[lane letter] YYYY-MM-DD β€” note` flagged exactly this joint call when holding 0.45 β€” but it is now measured and it is SPRINT6 gate 1. Also: scoreRun's verdict text blames "what you skimped on" on a 4/4 no-break run β€” verdicts must read the actual failure mode. + +[D] 2026-07-18 β€” πŸͺ£ **DOUSE CALIBRATED to Lane B's real ponds (Β§Lane D) β€” measured on the live sim, not + modelled.** B, thank you for the numbers and for freezing the API; I rebuilt against the frozen + shape, and **your shape is better than the one I asked for** β€” one `pondCentroid()` beats the + `ponds[]` array I proposed (your belly genuinely pools into a single heaviest place), and per-frame + `drainPondAt(node, dt, radius)` is right for a hold. It also gives a rule I like: an **interrupted + poke sheds only what it got through**, so half a poke is half the water. (I added an `onHold` hook + to interact.js for actions that do work DURING a hold rather than at the end.) + Measured on your sim β€” flat rig, storm_02, pond mass at poke β†’ kg shed by one 1.5 s poke β†’ outcome: + ` 8 s Β· 85 kg β†’ 76 shed β†’ wet` (caught it before A's 200 kg ticker even fires) + `12 s Β· 152 kg β†’ 104 shed β†’ STAGGER` (you answered the warning) + `20 s Β· 281 kg β†’ 182 shed β†’ KNOCKED` (you ignored it) + Bands: `stagger β‰₯ 100`, `knocked β‰₯ 180`. **Note I did NOT take your suggested 150-kg stagger line + or my own first guess of 350 for the knockdown** β€” both were derived from your ~290-shed "loaded + belly", and this rig's biggest real poke sheds **182**, so a 350 knockdown would have been + unreachable dead code. That is the StumbleBack mistake precisely (tuned against a mock, shipped + inert), so d.test.js now guards all three bands against the measured shed range and **will fail + loudly when gate 1's balance pass moves pond masses.** Expect that failure; it's the guard working. + If your ~310 kg belly is the more typical case post-balance, say so and I'll re-measure β€” my + numbers come from one flat oversized rig, which is exactly the rig gate 1 is deleting. + +[D] 2026-07-18 β€” πŸ› **My bug, found only by poking a REAL pond: the broom refused the sagging belly.** + Worth logging because the failure mode is instructive. I'd stubbed ponds politely at head height, + so every test passed. Against B's live ponding a real pond's centroid **rides from y=1.2 down + through y=-1.0 as it fills** β€” the belly sags toward you, which IS the mechanic β€” and my reach gate + rejected anything with `up < 0`. Result: **"nothing pooling here" with 281 kg hanging over the + garden.** Fixed to a physical band (`sagFloor -1.5 … reach +3.2`), with the floor set between two + measured cases rather than guessed: a LIVE 281 kg belly at y=-0.8 with the rig still up (pokeable) + and post-tear wreckage at y=-4.5 (nothing coherent to poke). Regression test pins both. + +[D] 2026-07-18 β€” ❓ **LANE B β€” a question, not a bug report: should the cloth sag THROUGH the lawn?** + Fell out of the above. Measured on a flat oversized rig in storm_02, the pond centroid reaches + **y = -0.8 while the rig is still standing**, and y = -4.5 after the belly-tear β€” i.e. the sail is + up to 4.5 m under the grass. Nothing of mine breaks (my sagFloor handles it), and it's plainly the + decision-2 oversized-rig regime that gate 1 is removing, so I'm **not asking for a fix** β€” but if + cloth↔ground collision is simply absent, the balance pass is a good moment to know that, because + "the belly rests ON the lawn" is a much better read than "the belly is inside it", and a sail + touching down is a real drainage/ponding event in DESIGN.md terms. Your call entirely. + +[D] 2026-07-18 β€” ⏳ **Β§Lane D feel pass on the BALANCED storms is pending gate 1 β€” flagging so nobody + waits on me.** Gate 1 (A+B+C) hasn't landed; storms today are still the pre-balance ones the + integrator measured as unwinnable (bare bed 36%, covering rigs die, twisted rigs don't cover). A + feel pass against those would only re-report what's already quantified in THREADS. **The moment + gate 1 lands I'll play all the balanced storms end to end and file notes before it ships**, which + is the order SPRINT6 asks for. My douse re-measure is queued behind the same gate β€” the guard + assert is the tripwire. Everything else in my lane is landed: 61 Lane D asserts, 0 fail.