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>
This commit is contained in:
parent
f179d6c25e
commit
4a5e5bc037
102
LANE_PROMPTS.md
102
LANE_PROMPTS.md
@ -832,3 +832,105 @@ byte-identical JSON out) even though its UI needn't be.
|
||||
> number, a wreck where priceable, negative-control asserts (your bike
|
||||
> discipline — build the wrong one on purpose and watch it go red). Flag D
|
||||
> in THREADS the moment the palette is ready — their cold yard waits on it.
|
||||
|
||||
---
|
||||
|
||||
# SPRINT 15 prompts (teeth — your work follows you)
|
||||
|
||||
Same rules: own clone, own branch, rebase onto latest main FIRST
|
||||
(`git fetch origin && git reset --hard origin/lane/<x>` on a clean tree —
|
||||
your local branch is BEHIND after integration fast-forwards). Read
|
||||
**ROADMAP.md** (new — the growth canon; John resolved S14's gate 4: all three
|
||||
branches, sequenced, teeth first), THREADS from the last [I] entry (the
|
||||
fresh-eyes review landed six fixes on main — the fabric key, the divergence
|
||||
break and the pond clamp are news your lane builds on), then SPRINT15.md.
|
||||
Ports: A 8824, B 8825, C 8826, D 8827, E 8828 (untracked launch.json, copy
|
||||
the example). Baseline selftest **409/0/0**. The one-variable rule is law:
|
||||
the new site and the new storm never debut on the same night.
|
||||
|
||||
## Lane A — Sprint 15
|
||||
> You are Lane A on HARD YARDS, Sprint 15. Rebase onto main, read ROADMAP.md,
|
||||
> THREADS' last [I], then SPRINT15.md. Gate 1 is yours: THE LEDGER. The week
|
||||
> records every committed rig (corners, hardware, what broke, what was
|
||||
> repaired); a corner still broken at dawn books a WARRANTY line on the next
|
||||
> morning's job sheet — hardware's shop price, off the fee AT QUOTE TIME, so
|
||||
> week.js's quote==settle invariant holds by construction. Reputation is one
|
||||
> number on the letterhead (job sheet AND invoice, E's contract): clean
|
||||
> nights up, warranty down, collateral down harder, and it moves the callout
|
||||
> fee multiplier ON THE SHEET so trust becomes visible money. Night 5's
|
||||
> gardenBeyondSaving must not cost rep — a designed loss the ledger punishes
|
||||
> is the verdict lying again. Aftermath and end-of-week card speak rep.
|
||||
> a.test: warranty only on unrepaired breaks; quote==settle with a warranty
|
||||
> line; rep untouched on designed losses; clean-week negative control. You
|
||||
> also print C's hail-size and rain lines on the forecast block (their gate
|
||||
> 3.3 exposes them). Pool: dev-line visibility default, second carry. Do NOT
|
||||
> build the job board — that's arc 2, and gate 6 aims it.
|
||||
|
||||
## Lane B — Sprint 15
|
||||
> You are Lane B on HARD YARDS, Sprint 15. Rebase onto main, read ROADMAP.md,
|
||||
> THREADS' last [I] (the review touched YOUR files: the divergence break in
|
||||
> _checkFailure, the post-flow pond clamp, the F key in your rigging UI, and
|
||||
> a fixed tautology in your own suite — read the receipts), then SPRINT15.md.
|
||||
> Gate 2 is yours. (a) THE HEAL: after a divergence break, non-finite node
|
||||
> positions reset from the nearest finite neighbour (prev matched — verlet
|
||||
> must not invent velocity); assert finite within 1 s, mutation-proof, and
|
||||
> the existing divergence test stays untouched. (b) THE RECORD: the chosen
|
||||
> fabric prints in prep summary, invoice, and the verdict when it mattered —
|
||||
> the F key exists, now the paperwork remembers the bet. (c) THE PIN: site_02
|
||||
> declares no separation block and the SCORE IT card calls it out — run
|
||||
> gardenfly, pin the honest held-vs-bare target, assert it; if the yard
|
||||
> can't separate at $80, that's a FINDING for THREADS, not a fudged pin.
|
||||
> Pool: the >83 ms determinism bound gets a pinning test or a documented
|
||||
> waiver; membrane pricing stays parked until rain's drain weight moves.
|
||||
|
||||
## Lane C — Sprint 15
|
||||
> You are Lane C on HARD YARDS, Sprint 15. Rebase onto main, read ROADMAP.md,
|
||||
> THREADS' last [I], then SPRINT15.md. Gate 3 is yours. (1) STORM_06, the
|
||||
> pea-hail soaker: stones under your own 2 mm-weave blocking ruling, heavy
|
||||
> rain, mild wind — the first night membrane is the RIGHT answer. Cloth must
|
||||
> leak fine hail all night; membrane must pond (the broom matters); the
|
||||
> membrane line must be affordable at $80 and MEASURABLY better — gardenfly
|
||||
> and site_audit numbers pinned in your selftest, funnel state in the header.
|
||||
> If cloth still wins, retune until the bet is real: a decoration night is
|
||||
> worse than no night. (2) makeStorm(seed): a seeded generator inside
|
||||
> authored envelopes, deterministic (same seed → byte-equal def), schema-
|
||||
> valid across 100 seeds, storm_envelope-tested — arc 4's roguelite eats
|
||||
> this; no shipped night uses it yet. (3) Expose hail stone size and rain
|
||||
> rate for the forecast block (A prints them) — bands, not promises. The
|
||||
> one-variable rule binds you to D: storm_06 flies over a yard the player
|
||||
> already knows.
|
||||
|
||||
## Lane D — Sprint 15
|
||||
> You are Lane D on HARD YARDS, Sprint 15. Rebase onto main, read ROADMAP.md,
|
||||
> THREADS' last [I], then SPRINT15.md. Gate 4 is yours and it's the sprint's
|
||||
> acceptance test again. (1) site_03 SHIPS this time: author it cold in the
|
||||
> editor (no JSON hand-editing, no console — the S14 discipline), any theme
|
||||
> E's palette supports, winnable-but-mean at $80, separation pinned,
|
||||
> collateral priced, _design/_why filled; file every editor friction in
|
||||
> THREADS. (2) The week becomes SIX nights: you own the NIGHTS order and the
|
||||
> two new briefs (client flavour is data — the corner block got a name and a
|
||||
> reason; match that bar). One-variable rule: site_03 debuts under a storm
|
||||
> the player has survived; storm_06 flies over a yard they know; never both
|
||||
> new at once. Night 5's beyond-saving arc and going-broke-never-on-the-
|
||||
> final-night must survive your re-ordering — a.test will tell you. (3)
|
||||
> Cold-play all six on one wallet and file the verdict: is a warranty line
|
||||
> FAIR when it lands? Does rep-moves-pay feel earned? Is night 6's bet
|
||||
> legible from the forecast alone? Your play is gates 1–3's acceptance.
|
||||
> Pool: the phantom-sail seam, third sprint — verify A's fix or keep the
|
||||
> repro honest.
|
||||
|
||||
## Lane E — Sprint 15
|
||||
> You are Lane E on HARD YARDS, Sprint 15. Rebase onto main, read ROADMAP.md,
|
||||
> THREADS' last [I], then SPRINT15.md. Gate 5 is yours: arc 2 needs yards
|
||||
> this palette cannot dress. Build TWO of three, factory-built, byte-stable,
|
||||
> negative-control-proven (build the wrong one on purpose, watch red): the
|
||||
> GLASSHOUSE (collateral apex — priced, wrecked variant, collateral_key
|
||||
> wired so a SECOND one placed in the editor still bills; nothing about it
|
||||
> adopts as an anchor), the POOL KIT (pool + compliant fence ring where
|
||||
> every fence post is honest tie_off:false — adoptAnchor's `?? 1` makes a
|
||||
> silent node the best steel in the game, and the pool yard's whole puzzle
|
||||
> is that the legal tie-offs are in the wrong places), the TRAMPOLINE + tie-
|
||||
> down kit (if S14's pick didn't land it — typed honestly in the checked
|
||||
> enum). Flag D in THREADS as each lands; site_03's theme may want one.
|
||||
> Axis trap stands: measure exported GLBs in three.js coords, look at the
|
||||
> render in assetcheck, never trust a docstring about orientation.
|
||||
|
||||
@ -24,9 +24,10 @@ No pip, no npm, no build. Python 3.8+ and a browser.
|
||||
1. `DESIGN.md` — the design canon (what the game is)
|
||||
2. `PLAN3D.md` — the build canon (stack, contracts, lane model)
|
||||
· `docs/MANUAL.md` — the HOW: tool map, asset/site cookbooks, earned gotchas
|
||||
· `ROADMAP.md` — the growth canon (the arcs from the week to the business)
|
||||
3. `THREADS.md` — the append-only lane log. **The project's memory.** Read the
|
||||
last few `[I]` integrator entries to know the current state.
|
||||
4. `SPRINT12.md` — the current sprint (highest-numbered SPRINTn.md wins)
|
||||
4. `SPRINT15.md` — the current sprint (highest-numbered SPRINTn.md wins)
|
||||
5. `LANE_PROMPTS.md` — copy-paste prompts per lane, per sprint (bottom = newest)
|
||||
|
||||
## The lane model (how this repo is built)
|
||||
|
||||
166
ROADMAP.md
Normal file
166
ROADMAP.md
Normal file
@ -0,0 +1,166 @@
|
||||
# HARD YARDS — the growth canon (where the game goes after the week)
|
||||
|
||||
*Written 2026-07-18 at John's direction, following the fresh-eyes review (THREADS
|
||||
[I] same date). DESIGN.md says what the game IS — it remains the design canon and
|
||||
nothing here overrides it. PLAN3D.md said how to BUILD the first game — done, 14
|
||||
sprints, live at partly.party/hardyards. This file says how the shipped week
|
||||
becomes the landscaping business DESIGN.md describes, in arcs that each end with
|
||||
something playable on the public URL. Sprints draw gates from here; when a sprint
|
||||
and this file disagree, the sprint is newer — fix this file.*
|
||||
|
||||
**John's ruling, 2026-07-18 (this is gate 4 of SPRINT14, resolved):** all three
|
||||
deferred branches — reputation/warranty, more sites, heatwaves — are wanted. Not
|
||||
picked between: SEQUENCED. Teeth first, clients and yards second, slow pressure
|
||||
third. "It doesn't just have to be one night… it's clearly much more than that
|
||||
now."
|
||||
|
||||
---
|
||||
|
||||
## Where we are (the honest baseline)
|
||||
|
||||
Five 90-second nights, two yards, five storms, one wallet, ~15 minutes of
|
||||
campaign. Selftest 409/0/0. An editor that makes new yards cheap and scores them
|
||||
through the real engines. An economy whose own comments say the balance is
|
||||
unmeasured, and a scorecard that says a bare bed reads 82.6 where the best clean
|
||||
rig reads 91.3 — **doing nothing scores 90% of doing everything, and that is the
|
||||
single number this roadmap exists to fix first.** The sim is the strongest thing
|
||||
in the repo; the thinnest thing is consequence.
|
||||
|
||||
## The principles (each one was earned, none is negotiable)
|
||||
|
||||
1. **Every arc ends live.** partly.party/hardyards after every integration, a
|
||||
stranger can play it. No arc is "infrastructure for the next arc" — if it
|
||||
doesn't change a night a player feels, it isn't an arc, it's a gate inside one.
|
||||
2. **No mechanic without a surface.** The fabric bet shipped in SPRINT6 and no
|
||||
key reached it until SPRINT15. A sim feature the player cannot reach and the
|
||||
job sheet does not argue about does not exist. Every new mechanic lands with
|
||||
its input, its HUD read, and its line on the paperwork, in the same sprint.
|
||||
3. **Balance is measured, not reasoned.** The audit gauntlet (site_audit,
|
||||
gardenfly, storm_envelope, SCORE IT) runs before a night ships, and the pinned
|
||||
numbers go in THREADS. The bare-beds number is what "reasoned" balance looks
|
||||
like after eight sprints of everyone being careful.
|
||||
4. **Sites are data; storms are data; clients are data** (week.js proved the
|
||||
third). Content arcs must not add code paths per night — they add JSON and
|
||||
surfaces that read it.
|
||||
5. **One new variable per night.** A new site, a new storm, and a new mechanic
|
||||
never debut together — a player who loses must be able to name what beat them.
|
||||
6. **The full water sim stays a trap until it isn't** (DESIGN.md's own warning).
|
||||
Slices of water that reuse the pond (runoff aim, clogged inlets) are fair
|
||||
game; the heightmap flow layer waits for its own PLAN document and its own
|
||||
proof of fun in a bench, like the cloth had.
|
||||
|
||||
---
|
||||
|
||||
## ARC 1 — TEETH (SPRINT15, speced in full in SPRINT15.md)
|
||||
|
||||
*The week gets consequences. Your work follows you.*
|
||||
|
||||
Reputation and warranty hang off the invoice exactly as DESIGN.md drew it: a
|
||||
corner of yours that blew and stayed blown books an unpaid warranty line on the
|
||||
next morning's job sheet; a clean night builds the number on the letterhead; the
|
||||
number moves what clients pay. The fabric bet gets its paper trail (forecast
|
||||
argues hail size and rain, invoice records the cloth you chose). site_03 finally
|
||||
ships, the week becomes six nights, and one of them — C's pea-hail soaker — is
|
||||
the first night where the default fabric is the wrong answer. The bare-beds
|
||||
separation fight starts here and does not end until held-vs-bare is a pinned,
|
||||
teeth-bearing number on every shipped site.
|
||||
|
||||
## ARC 2 — THE BOOK OF CLIENTS (≈ two sprints)
|
||||
|
||||
*From a scripted week to a job board. Variety without new engines.*
|
||||
|
||||
- **The job board**: mornings offer N callouts, you take one. Pay, risk, client,
|
||||
and site visible before you commit — income becomes a choice, replay becomes
|
||||
real, and BROKE_BELOW starts meaning something because you can chase money
|
||||
into jobs you shouldn't take. The week structure (five-to-seven nights, one
|
||||
wallet) survives; what changes is that no two weeks need be the same list.
|
||||
- **Job types beyond "rig for tonight"** — each is a variation on engines that
|
||||
already exist, none needs new sim:
|
||||
- *Emergency callout* — you arrive MID-STORM at double rates to someone
|
||||
else's failing rig: triage, repair, cut-away. The storm phase already does
|
||||
everything this needs except spawn you at t=30 with a rig you didn't build.
|
||||
- *The cowboy audit* — storm-proofing someone else's work 36 hours out: walk
|
||||
the yard, find what's about to fail (frayed wire, unmoused pins, a carabiner
|
||||
where a shackle should be — the inspection tells exist as rating hints and
|
||||
hardware states), fix the worst of it on a budget that cannot fix all of it.
|
||||
- *Warranty callout* — arc 1's ledger, now as a full night: your own past
|
||||
work, revisited in weather, unpaid.
|
||||
- **Client personalities as constraints** (DESIGN.md's soft-constraint idea):
|
||||
"nothing attached to the house", "the pool fence is off limits", "cheapest
|
||||
option and I'll sue" — data on the night, enforced by the rigging session,
|
||||
argued on the job sheet. Cheap to build, huge puzzle variation.
|
||||
- **Yards 4–6 out of the editor**: the pool yard (fence compliance + corroded
|
||||
cheap hardware), the granny-flat alley (the venturi as the whole level), the
|
||||
glasshouse yard (maximum collateral, E's arc-1 asset). D authors them cold,
|
||||
the gauntlet prices them, separation pinned before they ship.
|
||||
|
||||
## ARC 3 — SLOW PRESSURE (≈ two sprints)
|
||||
|
||||
*DESIGN.md's other half: days, sun, and water you can see coming.*
|
||||
|
||||
- **Heatwave days**: the sun arcs, the shadow moves, shade-hours-delivered is
|
||||
the score (coverageOver() already ground-projects; it needs a sun path and an
|
||||
hourly integral). No storm — the tension is coverage over TIME, a different
|
||||
brain. Slow days between violent nights is the Overcooked rhythm DESIGN.md
|
||||
named, and it makes the storms land harder.
|
||||
- **The seasonal sun**: the same yard needs a different rig in February than
|
||||
July (sun elev/azim already live in site JSON — make them a season, not a
|
||||
constant). Seasonal-adjustment callouts fall out for free.
|
||||
- **Water, the honest slice**: sail runoff has to GO somewhere — one corner low
|
||||
dumps the pond's drainage where you aimed it (the veggie bed: bad; the path:
|
||||
fine; the neighbour's side: a bill). Reuses the pond machinery wholesale, adds
|
||||
aim. Second slice: leaves clog the one drain inlet and the puddle drowns the
|
||||
bed corner — the leaf layer already exists in debris.js as an ambient tell.
|
||||
Both slices are legible without a flow sim, and both make yards read as
|
||||
plumbing, which is the door arc 5 walks through.
|
||||
- **Heat affects you**: work slows in the blaze, water breaks are real, dawn
|
||||
and dusk are the smart hours — player.sim already has the shove/stagger
|
||||
scaffolding for one more environmental pressure.
|
||||
|
||||
## ARC 4 — THE SEASON (≈ two sprints)
|
||||
|
||||
*The campaign clock, persistence, and the roguelite.*
|
||||
|
||||
- **Save the business**: localStorage persistence — wallet, rep, gear, week
|
||||
number. The week loop closes into a season of weeks with a job-board economy.
|
||||
- **Storm season (roguelite)**: fixed starting budget, procedurally generated
|
||||
storm sequences inside authored envelopes (C's makeStorm(seed) groundwork
|
||||
lands in SPRINT15), survive the season solvent. The seeded weather core was
|
||||
built for this from day one.
|
||||
- **Gear that persists**: hardware tiers into TOOL tiers — the petrol auger vs
|
||||
the shovel (post placement time), the laser level (free grading intel), the
|
||||
second trailer (carry more spares). DESIGN.md's life-changing-upgrade list.
|
||||
- **Sandbox**: the storm designer sliders (dev_skyfx.html is 80% of it) plus
|
||||
the editor, public. Break your own yard for fun; the chaos physics carries it.
|
||||
|
||||
## ARC 5 — THE WATER TABLE (the big swing — gated, not scheduled)
|
||||
|
||||
*Retaining walls, drainage, the heightmap that flows. DESIGN.md's second game.*
|
||||
|
||||
Not scheduled until it passes the same bar the cloth passed: a bench that proves
|
||||
the fun before a lane builds the feature. The gate to open this arc is a
|
||||
tools/water_bench/ prototype — coarse-grid flow on a heightmap, one swale tool,
|
||||
one wall that can blow out, played in a probe page and felt to be a game. Arc 3's
|
||||
runoff/clog slices will have taught players (and us) how much water legibility
|
||||
buys at what sim cost. Everything DESIGN.md says about walls, weep holes,
|
||||
surcharge and the mudslide entering the debris system waits here, intact.
|
||||
|
||||
---
|
||||
|
||||
## The standing rails (every arc, no gate needed)
|
||||
|
||||
- **Perf floor**: the game must hold 60 fps on the M1 Ultra and stay playable on
|
||||
an Intel MacBook's integrated GPU. The review's 12-fps embedded-pane datum was
|
||||
the reviewer's harness, not the game — but nobody has MEASURED a low-end
|
||||
machine, and "measure, don't reason" applies to frame rate too.
|
||||
- **Sound**: every new mechanic that can kill a corner gets a tell by ear
|
||||
(DESIGN.md: players learn to defend by ear). The tink of a backing-out pin is
|
||||
still unbuilt and is the single highest-value audio asset in the design.
|
||||
- **Touch**: the notice locks phones out honestly. A touch rigging UI is a real
|
||||
future (the editor's raycast placement is most of one) — parked until arc 4,
|
||||
named here so nobody half-builds it sooner.
|
||||
- **Deploy**: tools/deploy_hardyards.sh after every integration; the live site
|
||||
is currently one sprint behind main and that gap should never exceed one.
|
||||
- **The sim's debt, tracked**: node-position heal after divergence (SPRINT15
|
||||
gate 2), the >83 ms frame determinism bound (documented, un-tested), membrane
|
||||
pricing the day rain's drain weight moves (rigging.js's comment names it).
|
||||
164
SPRINT15.md
Normal file
164
SPRINT15.md
Normal file
@ -0,0 +1,164 @@
|
||||
# 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 1–3.
|
||||
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
|
||||
```
|
||||
Loading…
Reference in New Issue
Block a user