# SPRINT 11 — THE CORNER BLOCK IS MEAN, THEN THE JOB SHEET *Sprint 10 delivered its headline: sites are data. Two yards load from JSON, night 3 moves to the corner block, the ladder keys on mechanism not type, the carport is a priced trap with its own wreck, and the fabric plumbing has an end-to-end assert. 296/0/0. What's left on the site is TUNING and PROOF — then the game grows its last missing organ: the job sheet.* Read THREADS from the last [I] entry. ## Gate 1 — prove the corner block (the site seams, all short) 1. **C + A: reconcile the venturi.** Site JSON ships axis 2.1 / gain 1.5; C measured storm_03b's post-change wind at −1.08 and proposed gain 1.35. Either A oriented the gap differently (tell C the built angle, C matches) or the numbers are placeholders (take C's). One THREADS exchange, one edit. 2. **B: fix site_audit's headless false-negative** (your setWorld ask — A is reading THREADS), then run it on site_02 WITH the venturi. If no $80 line survives the funnel, C drops the gain (their standing offer) before E moves the tree. 3. **D: play site_02 cold** — third sprint waiting, now truly unblocked. The carport traps should read tempting-not-buggy; the ladder trip through a funnelled southerly is the site's whole thesis. Feel notes in THREADS. 4. **A: two small rulings** — the carport collateral number (E proposes $180 with reasoning in the asset; change the constant, not the asset) and the Anchor.type enum widening D flagged (a carport typed 'post' silently joins the sail-post family; typed 'carport' it breaks the contract — widen it). ## Gate 2 — THE JOB SHEET (A owns; the landscaper service arrives) DESIGN.md's callout structure, minimum viable: the week becomes a JOB — a client, a brief, and pay that reads like an invoice. - Each night entry gains client + brief text ("the Hendersons want the seedlings alive — they leave for Cairns Friday") and a pay schedule (base + garden bonus + no-collateral bonus). The forecast card becomes the job sheet; the aftermath becomes the invoice. - Client flavor is data (site JSON or night entry), not code. - Keep scope honest: no reputation system yet, no job select — one week, five jobs, the framing. Sprint 12 decides if reputation/warranty (DESIGN.md's consequence loop) is next. **E**: client-facing juice — job-sheet letterhead, invoice styling, one per-client prop if cheap (the Hendersons' kid's bike against the fence). **C**: per-night forecast lead — the job sheet shows tomorrow's ± band resolving (your forecastLines lead param has waited two sprints for this). ## Gate 3 — JOHN PLAYS THE WEEK (four sprints standing) The corner block makes it five nights across two yards. `python3 server.py`, play it with the mouse, three sentences in THREADS. Sprint 12's shape — more sites vs reputation vs heatwave days — is genuinely undecidable without them. ``` gate 1: venturi reconciled · site_audit passes site_02 · D's notes filed · carport priced · enum widened gate 2: five jobs with briefs and invoices; the week reads as a landscaper's week, not a survival ladder gate 3: John's three sentences ```