HardYards/SPRINT15.md
m3ultra 4a5e5bc037 Sprint 15 plan: TEETH — ledger/warranty/rep, the membrane night, site_03, six nights
ROADMAP.md is the new growth canon: five arcs from the shipped week to
DESIGN.md's landscaping business (teeth → job board/clients → slow
pressure → the season → the water table), with the earned principles up
front — every arc ends live, no mechanic without a surface, balance is
measured, one new variable per night. SPRINT15.md and the lane prompts
draw arc 1's gates; John resolved S14 gate 4 as all-three-sequenced.

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

10 KiB
Raw Blame History

SPRINT 15 — TEETH: YOUR WORK FOLLOWS YOU

Sprint 14 built the editor and the editor built the argument: SCORE IT put the bare-beds number on a card (bare 82.6 vs best clean 91.3) and nobody can unsee it. John played, ruled on gate 4 (ROADMAP.md, 2026-07-18): all three branches, sequenced, teeth first. This sprint the week grows consequences — reputation on the letterhead, warranty on the job sheet, a sixth night, a third yard, and the first night where the default fabric is the wrong answer. Baseline selftest 409/0/0 (the fresh-eyes review landed six fixes on main — read THREADS [I] 2026-07-18 before you start; the fabric key, the divergence break and the pond clamp are all news your lane may be building on). 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 five-night 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. Assert: poison → break → every node finite within 1 s of sim, render-safe. 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. The SCORE IT card says NONE PINNED and calls it out — a shipping site should promise held-vs-bare and be held to it. 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 and gate 4's balance fight starts there, not at a fudged pin.

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), 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 — SITE_03 AND THE SIX-NIGHT WEEK (D owns)

  1. site_03 ships. Your S14 cold-authoring run never landed a yard — the editor is a sprint older now and SCORE IT prices collateral. Author it cold (editor only, the S14 discipline), any theme E's palette supports, winnable-but-mean at $80, separation pinned, collateral priced, _design/ _why filled. File the friction in THREADS — every place the editor fights you is still gate-1/2 feedback one sprint late.
  2. The week becomes six nights. Wire site_03 and storm_06 into NIGHTS under the one-variable rule: site_03 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 briefs (client flavour is data — write clients worth meeting; the corner block got a name and a reason, match that bar). Night 5's beyond-saving flag and the went-broke arc 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 re-test, third sprint running — if A's view fix landed, verify and close it in THREADS; if not, your repro keeps it honest.

Gate 5 — THE NEXT TEMPTATIONS (E owns)

Arc 2 needs yards this palette cannot dress yet. Two of these three, factory- built, honest extras, negative-control asserts (your discipline — build the wrong one on purpose and watch red):

  1. The glasshouse — the collateral apex. Priced high, wreck variant, collateral_key wired so a second one placed in the editor bills (the carport's five-sprint lesson is one sprint old). 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 (silence is not neutral — adoptAnchor's ?? 1 makes an unrated node the best steel in the game), because the whole point of the pool yard is that the legal tie-offs are all in the wrong places.
  3. The trampoline — if S14's pick didn't land it: typed honestly in the checked enum, plus a tie-down kit prop (the prep-phase counter to the storm's opening projectile, priced like it matters). Flag D in THREADS as each lands — site_03's theme may want one.

Gate 6 — JOHN: PLAY, THEN AIM ARC 2

Six nights at partly.party/hardyards (deploy after integration — the live gap is one sprint and ROADMAP says it never exceeds that). 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: dev-line visibility default (A, second carry); bench-vs-UI residual cause (open since S13; the margin rule stands in); 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;
        site_02 separation pinned 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: site_03 cold-authored and shipped; six nights, one-variable rule;
        the whole week cold-played and judged
gate 5: two temptation assets, honest extras, negative controls
gate 6: John's three sentences + the arc-2 job-type ruling