From a012225259f39c08d1b61ca02207695109d995f8 Mon Sep 17 00:00:00 2001 From: type-two Date: Tue, 21 Jul 2026 06:32:13 +1000 Subject: [PATCH] Sprint 17 integration [I] entry: the board live, seven nights, convergence recorded --- THREADS.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/THREADS.md b/THREADS.md index d5fef1c..6f249a8 100644 --- a/THREADS.md +++ b/THREADS.md @@ -9394,3 +9394,58 @@ anchors are your GLB), but the tooling is now waiting, not TODO. for the same night — a fiction question, not a bug. Night 2 happens to offer the same southerly over two yards and reads noticeably more coherent for it. Yours to rule if it ever matters; the band tells the truth either way. + +[I] 2026-07-21 — **SPRINT 17 INTEGRATION (main) — THE BOARD IS LIVE, SEVEN NIGHTS, arc 2 open.** + Selftest **522/0/0**, the exact sum (D's 515-integration + lane/b's 3 corroded cross-lane pins, + green now that lane/e is present + lane/c's 4 offerBand/pairing pins). Verified in the browser + and deployed to partly.party/hardyards. This integration was UNUSUAL and worth recording: + + **Two full sets of lane sessions ran — mine (a workflow, on Opus after the Fable limit killed + the first wave) and a parallel set on John's other Mac.** Every lane hit the collision and + CONVERGED rather than clobbered: B reset to the landed 0.2/0.3/2 and added only gate 3; C reset + onto the other session's better forecast design and added only the offer band + pairing law; D + dropped their whole pool-yard cut and adopted the other session's (which ships ONE corroded post, + dodging the two-rust-post exposure-harness split their own cut walked into). E resumed the + Fable-killed session's uncommitted tree, found it was mid-negative-control (both GLBs were the + UNTELLED post, two asserts defective — one that couldn't fail, one whose stated reason was + backwards), and rebuilt it honestly. The convergence protocol C invented in S14 held across four + lanes and two machines. lane/d's own "pt-1 integration" commit did the heavy merge; I layered + lane/b and lane/c's newest commits on top. + + **The one integrator hunk, applied verbatim (C filed it; hud/main are A's files):** C measured + that A's board LIED ABOUT NIGHT 7 — the soaker's offer read SOFTER than the buster's on the two + printed lines (55 vs 76 km/h gusts) while carrying 6× the hail (14.9 s vs 2.4) and 2.7× the rain. + The board was recommending its own trap in the storm's own voice. `offerBand(def, lead)` returns + the ORDERED list (wind · hail · rain · change · confidence) so the card can never drop a fact by + picking two fields. Applied the main.js `band:` line + the hud.js card map + two CSS rules (the + hail line lit brighter — the one a player must not skim). VERIFIED LIVE: night 7's two cards now + read the soaker as pays-less/risks-less/worse-night, the game arguing instead of flattering. The + fix is the same species as A's own `stormsToPreload(nights, pool)` split — an omission that is + possible eventually happens. + + **What shipped, gate by gate:** the JOB BOARD (A) — two offers a morning, seeded deterministically + off week+night, the chosen job carrying a WHOLE night entry so sheet/quote/invoice/ledger/warranty/ + rep read it through the seven surfaces they already had, ZERO changed lines; CONSTRAINTS (A data + + B enforcement) — house-ban refused at pick time in the client's own words, budget cap thrown at + commit, SCORE IT drops banned candidates and prices at the client's ceiling; the CORRODED TIER (E) + — 0.55 on the ladder because it is the only rung whose true capacity is unknowable by inspection, + $45, the tell verified to read at 20 m by the game's own renderer; the POOL YARD (D) — authored + cold, the legal tie-offs and the trustworthy tie-offs deliberately DIFFERENT SETS, in the game only + by being chosen off the board (the Karalis place, live on night 1's board with the corroded post + billed in its risk column). + + **Rulings (A):** hail-light balance is CANON (the mild-night market buys the steel and the + collateral, not the bed — the refused separation pins already say so); constraint premiums +25% + (anchor ban) / +20% (budget cap), both flagged UNMEASURED and cut-first; the rain drain-weight + lever DECLINED at its proper price (its own gate, full re-measure). + + **Carried to SPRINT18 (its callout types are John's gate-4 pick):** A's `stormsToPreload` preload + assert can't currently fail (every pool storm also lives in NIGHTS — the calm-day coincidence + again; split it so a pool-only storm can bite); C's `stoneWord` has no floor (size 0 words itself + "fine pea stones"); D's two-corroded-post exposure-harness split ($115 per-structure vs $45 per-key) + is the receipt for arc-2's multi-hazard yards; B's optional heal-control strengthening (spy the + call, not the event). + + **Gate 4 stands and it now steers the next sprint: John plays the seven — partly.party/hardyards, + a board offering choices, a constrained client or two — and picks Sprint 18's callout type: + emergency mid-storm arrival, the cowboy audit, or warranty-as-a-full-night.**