HardYards/SPRINT16.md
m3ultra 3dee2a7c83 Merge origin/main: S14 lane integration + review fixes; TEETH becomes SPRINT16
Two same-day integrations reconciled: their SPRINT15 (post ruling, editor
iterative, honest edges) stands and runs first because it re-measures the
numbers TEETH pins; the TEETH plan moves to SPRINT16 with a fires-after-15
banner, its D gate rewired to the landed swing lawn. ROADMAP arc 0 records
the fork. THREADS keeps both sides chronologically.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 10:34:21 +10:00

10 KiB
Raw Blame History

SPRINT 16 — TEETH: YOUR WORK FOLLOWS YOU

⚠️ PRE-SPECED, FIRES AFTER SPRINT 15 INTEGRATES. Sprint 15 (the post ruling, the iterative editor, the honest edges) re-measures numbers this sprint pins — do not start these gates on a pre-15 tree, and treat every number below that S15's gate-1 re-measure moves as "re-measure first". Written 2026-07-18 at John's direction (ROADMAP.md — gate 4 of S14 resolved: all three branches, sequenced, teeth first).

The week grows consequences — reputation on the letterhead, warranty on the job sheet, a sixth night, the swing lawn in the rotation, and the first night where the default fabric is the wrong answer. Baseline selftest: whatever Sprint 15 lands (409/0/0 pre-15 plus S15's additions). Keep it green; mutation-check anything you'd call coverage.

The one-variable rule is LAW this sprint (ROADMAP principle 5): six nights, exactly one flies the new storm, exactly one is the new site, and they are NOT the same night. A player who loses night 6 must be able to say whether the yard beat them or the weather did.

Gate 1 — THE LEDGER (A owns: week.js, hud.js surfaces, main.js wiring)

Reputation and warranty, hung off the paperwork that already exists. No new phase, no new sim — this is week-state plus three surfaces telling the truth.

  1. The work history. Every committed rig is recorded on the week: corners, hardware, effective ratings, what broke, what was repaired by dawn. This is data the night already computes — the ledger just keeps it.
  2. Warranty. A corner of YOURS that broke and was still broken at dawn books a warranty item: the NEXT morning's job sheet carries it as a line — "warranty — q3, shackle, no charge to the client" — and its cost (the hardware's shop price, unpaid labour is the point) comes off that night's fee AT QUOTE TIME. week.js's own invariant is non-negotiable: the sheet and the invoice never diverge — the quote already carries the deduction, so settle pays exactly what was quoted. A repair you made mid-storm is NOT a warranty item; riding it out broken is.
  3. Reputation. One number on the letterhead (pick the unit — stars read as client-speak; whatever it is, it appears under the ABN on job sheet AND invoice, E's letterhead contract). Clean night (no breaks, no collateral): up. Warranty item: down. Collateral event: down harder. It MOVES PAY at quote time — a trusted outfit's callout fee multiplier, printed on the sheet, so the player watches their number become money. Start neutral; night 5's beyond-saving garden must NOT cost rep (the flag exists — read it; a designed loss the ledger punishes is the verdict lying again).
  4. Aftermath teaches it. The invoice's verdict line and the end-of-week card both speak rep: a week that ends broke-but-clean and a week that ends rich-with-warranties are different endings and should read as such.
  5. Tests, a.test: warranty fires only on unrepaired breaks (repaired = no item); quote==settle holds with a warranty line on the sheet; rep never moves on gardenBeyondSaving nights for garden reasons; the multiplier is on the sheet the night it applies. Negative control: a clean week books zero warranty items and ends rep-positive.

Gate 2 — THE HEAL + THE PAPER TRAIL + THE PIN (B owns)

  1. Divergence heal. The review landed the break (a NaN corner now lets go, reason:'divergence', production path) — but the freed node then integrates from NaN forces and the cloth renders ugly after one. Sanitize on the break: any non-finite node position resets from its nearest finite neighbour (or the corner's anchor), prev matched so verlet doesn't invent velocity, and non-finite water zeroed (a NaN pond re-poisons the heal through the weight term). Assert: poison → break → every node finite within 1 s of sim. Mutation: heal off, assert red. The existing divergence test must keep passing untouched — the heal is IN ADDITION to the break, not instead.
  2. Fabric on the paperwork. The chosen fabric prints in the prep summary, on the invoice, and in the aftermath verdict when it mattered (a membrane night survived in cloth should say what the leak cost). The FORECAST half is C's (gate 3.3) — yours is that the choice the player made is on the record.
  3. Pin site_02's separation — AFTER S15's re-measure. The SCORE IT card says NONE PINNED and calls it out. Once the post ruling has settled the numbers, run gardenfly, pick the honest target, pin the block in site_02's JSON, assert it like backyard_01's. If the honest answer is "this yard cannot separate held from bare at $80", that is a FINDING about the yard — post it in THREADS; the balance fight starts there, not at a fudged pin. Same pass, same rule for site_03_swing_lawn if S15 left it unpinned.

Gate 3 — THE MEMBRANE NIGHT + THE SEEDED STORM (C owns)

  1. storm_06 — the pea-hail soaker. Small stones (under the 2 mm-weave ruling's blocking threshold), heavy rain, mild wind. The night the bet flips: cloth leaks fine hail onto the bed all night; membrane stops everything and the mild wind means its doubled load is affordable — but it PONDS, so the broom matters. Author it so both lines exist and the membrane line is genuinely better: measure with gardenfly/site_audit (funnel state in the header, per the discipline; post-ruling numbers only), pin membrane-vs-cloth garden separation in the storm's own selftest, and make sure a $80 wallet affords the membrane line on the night's site. If the measured numbers say cloth still wins, retune the hail spectrum until the bet is real — the storm exists to make the F key matter, and a decoration night is worse than no night.
  2. makeStorm(seed) — groundwork, not a shipped night. A seeded generator inside authored envelopes (base curve, gust budget, direction change window, rain/hail ranges as data), producing storm defs that pass the schema validator and the storm_envelope harness. Deterministic from seed — ROADMAP arc 4's roguelite eats this. Selftest: same seed → byte-equal def; 100 seeds → all schema-valid, all inside the envelope; a seed that violates the envelope is a red test, not a shrug.
  3. The forecast argues the bet. Hail stone size and rain rate join wind on the job sheet's forecast block (the data is in the storm JSON; A prints what you expose). The band-not-a-promise rule holds — forecast bands, real values inside them.

Gate 4 — THE SIX-NIGHT WEEK (D owns)

  1. The swing lawn enters the rotation. Your site_03_swing_lawn landed in S14 — authored cold, scored, played, inert. Re-score it on the post-ruling tree with S15's faster loop (the numbers that made it winnable-but-mean may have moved), fix what moved, then wire it into NIGHTS. If S15's edges work added a separation field or B pinned one for it, carry it; otherwise gate 2.3 covers it.
  2. The week becomes six nights. Wire the swing lawn and storm_06 into NIGHTS under the one-variable rule: the new site debuts on a storm the player has already survived; storm_06 flies over a yard they already know. You own the order and the two new briefs (client flavour is data — the corner block got a name and a reason; the swing set's kid deserves one too). Night 5's beyond-saving flag and going-broke-never-on-the-final-night must both survive re-ordering — the a.test week asserts will tell you.
  3. Cold-play the whole six, wallet from night 1, and file the verdict: does a warranty callout read as FAIR when it lands on your sheet? Does rep moving pay feel earned or arbitrary? Is night 6's bet legible from the forecast alone? Your play IS the acceptance test for gates 13.
  4. Pool (yours): the phantom-sail seam if S15 didn't close it.

Gate 5 — THE NEXT TEMPTATIONS (E owns)

Arc 2 needs yards this palette cannot dress yet. Two of these three, factory- built, byte-stable, negative-control-proven (build the wrong one on purpose, watch red) — and every anchor-bearing node passes the S15 gate-1 mechanism (a baked hint that cannot reach a JSON-declared anchor is the bug class that cost the posts their truth):

  1. The glasshouse — the collateral apex. Priced high, wreck variant, collateral_key wired so a SECOND one placed in the editor still bills (the carport's five-sprint lesson). Panes that read as fragile at a glance; nothing about it may adopt as an anchor.
  2. The pool kit — pool + compliant fence ring. The fence posts are the temptation: honest tie_off:false on every one (silence is not neutral — adoptAnchor's ?? 1 makes an unrated node the best steel in the game), because the pool yard's whole puzzle is that the legal tie-offs are all in the wrong places.
  3. The trampoline + tie-down kit — typed honestly in the checked enum; the tie-down is the prep-phase counter to the storm's opening projectile, priced like it matters. Flag D in THREADS as each lands.

Gate 6 — JOHN: PLAY, THEN AIM ARC 2

Six nights at partly.party/hardyards (deploy after integration — ROADMAP: the live gap never exceeds one sprint). Three sentences in THREADS. Then one ruling for arc 2's first sprint: emergency mid-storm callout or the cowboy audit — which job type leads THE BOOK OF CLIENTS?

Pool, spread by ownership: whatever S15's pool leaves standing, plus: membrane pricing the day rain's drain weight moves (B, rigging.js's comment names the start); the >83 ms determinism bound gets a pinning test or a documented waiver (B).

gate 1: ledger — warranty on the sheet, rep on the letterhead, quote==settle
        holds, a designed loss costs nothing
gate 2: divergence heal (finite in 1s, mutation-proof); fabric on the record;
        separations pinned post-ruling or honestly refused
gate 3: storm_06 makes membrane the right answer, measured not asserted;
        makeStorm(seed) deterministic inside envelopes; forecast argues the bet
gate 4: swing lawn re-scored and wired; six nights, one-variable rule;
        the whole week cold-played and judged
gate 5: two temptation assets, honest extras, negative controls, S15-clean
gate 6: John's three sentences + the arc-2 job-type ruling