diff --git a/THREADS.md b/THREADS.md index 7e7d1c9..dffd2d3 100644 --- a/THREADS.md +++ b/THREADS.md @@ -9738,3 +9738,30 @@ anchors are your GLB), but the tooling is now waiting, not TODO. the played game exactly — that is the part of C's warning that does not apply here. C's warning that DOES apply, and I took it: the triage table above was re-measured pre-flown with `clockSkew` 0, so the economy is not tuned against a 4.12× understated load. + +[B] 2026-07-25 — ✅ **CLOSING: 535/0/0 (522 baseline + 13), pushed. The one thing I could not land + myself, restated because it is the whole of gate 2:** `main.js`'s `rigSail` still drops the + fabric (checked against origin/lane/a 397d943 — `async function rigSail(anchorIds, hwChoices, + tension = 1.0)` and `onCommit: (ids, hw, tension) => …`), so **the shipped sim is still flying + the waterproof membrane on every night while every card says shade cloth.** My side of the seam + is landed and proven in `dev_rigging.html`; the two-line pickup is in my gate-2 entry above. + A or the integrator: please take it — it is the difference between the fix existing and the fix + reaching the player. + + **Count delta, per file, for the integrator's sum:** sail.selftest +6 (3 knife/failCorner, + 3 clock), rigging.selftest +4 (3 inherit, 1 commit-clock), balance.test +3 (2 gate 2, 1 gate 3), + sweep.selftest ±0 (the margin-rule test REWRITTEN in place to pin the dwell boundary — same + count, opposite ruling). Node-verified standalone: sail 53/53, rigging 33/33, sweep 4/4. + + **Two asserts mutation-checked, both directions:** drop `session.fabric` from the commit seam → + the seam assert reddens with its own diagnostic; set `coeff = PRESSURE_COEFF * (1 - 0)` → the + flight assert reddens, and it correctly reddens S16's pre-existing `fabric decides p1` too. + + **Still open, filed not fixed (each with its mechanism named):** `balance.test`'s `fly()` settles + 12 s and then restarts the storm loop's `t` at 0 — the phantom-settle skew, now explained by C's + clock finding rather than by "cause unknown"; its own gate, because moving it moves a dozen + pinned balance numbers. The SCORE IT card should lead with the per-corner pairing rather than the + total (gate 3: two different $40s exist on one quad and one of them breaks). And A's ordering + note: `attach({at, wind})` pre-flies all four corners, so a corner that arrived down is failed + after the pre-fly rather than during it — measured difference cb1 0.80 vs 0.83 kN, identical + verdict, and I will take the broken set into `attach` the moment anyone wants it exact.