{
  "id": "backyard_01",
  "name": "The Backyard",
  "blurb": "You've worked this one for years. You know where everything is, which is the only advantage you get.",
  "_blurb": [
    "SPRINT11: this said 'Your own place' until the job sheet put a client's name at the top of the",
    "card and the two lines called each other liars on screen — THE HENDERSONS over 'your own place'.",
    "The blurb gave way, and it wasn't close: 'your own backyard' is a leftover from when the game had",
    "exactly one yard, and DESIGN.md has never wanted it — line 3 is 'every callout is a different",
    "site, a different client', and gate 2 is the sprint where that frame actually arrives.",
    "The line's JOB survives, which is why it's a rewrite and not a deletion: night 1 is the tutorial",
    "because you know this yard, and that advantage now comes from having worked it for years instead",
    "of owning it. Client-agnostic on purpose — the yard is the site's business, the client is the",
    "night's (week.js NIGHTS). Caught by looking at the card, not by a test. No assert reads a blurb."
  ],

  "yard": { "width": 30, "depth": 20 },

  "sun": { "elevationDeg": 55, "azimuthDeg": -125 },

  "gardenBed": { "x": 1, "z": 2, "w": 6, "d": 4 },

  "house": {
    "model": "house_yardside_v1",
    "wreckedModel": "house_yardside_wrecked_v1",
    "collateralKey": "gutter",
    "collateralValue": 90,
    "collateralLabel": "the gutter",
    "_collateral": [
      "SPRINT12 gate 3.3 - A's ruling: $90, E's proposal ADOPTED unchanged. The band is established",
      "(gnome 25, carport 180, ceiling ~250) and the gutter goes between ornament and structure",
      "because that's what it is. At 90 the night the fascia trap fires is WIPED - kit (~80) and fee",
      "(~76 on the wild night) together - which is the fascia's whole lesson priced: the 'free'",
      "anchors were the dearest kit in the yard. Under ~50 it couldn't wipe its own night; over ~130",
      "the tutorial yard outbids half a carport for a smaller lie (fascia 0.35 is honestly better",
      "steel than the beam's 0.22). First trap a player can hit costs them a night, not the week.",
      "The house is NOT in structures[] - it keeps its own loader block (graybox, north boundary,",
      "bed shading) - so collateralKey names which collateral string this price answers, per E's",
      "chain: fascia anchors carry collateral 'gutter', this prices it, the wreck swaps on it.",
      "Canonical number lives HERE (sites are data); the GLB's baked extras are E's proposal and",
      "the fallback. Rule a different number -> change the factory too, or two sources tell two lies."
    ],
    "x": 0, "z": -10.5,
    "anchors": [
      { "id": "h1", "node": "fascia_anchor_01", "type": "house", "work": "bracket" },
      { "id": "h2", "node": "fascia_anchor_02", "type": "house", "work": "bracket" },
      { "id": "h3", "node": "fascia_anchor_03", "type": "house", "work": "bracket" }
    ]
  },

  "trees": [
    {
      "id": "t1", "model": "tree_gum_01_v1",
      "x": -9, "z": 2, "phase": 0.7, "trunkH": 4.2, "anchorY": 3.4,
      "anchors": [
        { "id": "t1", "node": "branch_anchor_01", "type": "tree", "work": "cloth" },
        { "id": "t1b", "node": "branch_anchor_02", "type": "tree", "work": "cloth" },
        { "id": "t1c", "node": "branch_anchor_03", "type": "tree", "work": "cloth" }
      ]
    },
    {
      "id": "t2", "model": "tree_gum_02_v1",
      "x": 8, "z": -2, "phase": 2.9, "trunkH": 3.8, "anchorY": 3.1,
      "anchors": [
        { "id": "t2", "node": "branch_anchor_01", "type": "tree", "work": "cloth" },
        { "id": "t2b", "node": "branch_anchor_02", "type": "tree", "work": "cloth" }
      ]
    }
  ],

  "posts": [
    { "id": "p1", "x": -4.5, "z": 5.5, "h": 4.0, "type": "post", "work": "cloth" },
    { "id": "p2", "x": 4.0, "z": 6.0, "h": 4.0, "type": "post", "work": "cloth" },
    { "id": "p3", "x": 0, "z": 7.0, "h": 4.0, "type": "post", "work": "cloth" },
    {
      "id": "p4", "x": -3.2, "z": -1.2, "h": 4.0, "type": "post", "work": "cloth",
      "_why": [
        "DO NOT move this post toward the bed. Its position is swept, not chosen, and it is the",
        "single number holding DESIGN.md's central tension open.",
        "",
        "Before p4 the wild night had NO winnable line, for a geometric reason: every anchor near",
        "the bed (p1/p2/p3) is SOUTH of it and nothing stands north short of the house 10 m away,",
        "so covering rigs had to span the yard and died while rigs small enough to survive sat",
        "beside the bed rather than over it. p4 supplies the missing north-west corner.",
        "",
        "Swept against the smallest quad covering 90% of the bed:",
        "    (-2.2, -1.2) -> 44.4 m2   DO NOT: full coverage lands INSIDE the survivable band,",
        "                              so covering the bed stops costing risk and the rigging",
        "                              puzzle loses its wrong answers.",
        "    (-3.2, -1.2) -> 48.6 m2   <- here (with the 8 deg rake the top anchor lands at",
        "                              -3.72,-1.40 and full coverage costs 51.6 m2)",
        "    (-3.2, -2.0) -> 51.7 m2",
        "    (-4.2, -3.0) -> 60.0 m2",
        "    beyond z=-4  -> 63.5 m2, i.e. too far out to matter at all",
        "",
        "Full coverage costs 63.5 m2 without it and 51.6 with: a real new option, still bigger",
        "than the 23-38 m2 rigs that survive unaided. a.test.js asserts the >45 m2 floor, so",
        "moving this inward goes red — that assert is the tension's only guard."
      ]
    },
    {
      "id": "p5", "x": 5.5, "z": -2, "h": 2.6, "type": "post", "work": "cloth",
      "_why": [
        "SPRINT13 gate 1 — A's backyard ruling, the anchor C's diagnosis routed here. The old",
        "clothesline post: galvanised steel sunk in concrete by the back path, NE of the bed,",
        "shorter than the sail posts because it was never a sail post. Honest steel (ratingHint 1),",
        "8 m from the fascia, so the house trap keeps its whole lesson.",
        "",
        "WHY IT EXISTS, measured (probeA on C's garden_bench chain, wildnight, funnel-free yard):",
        "before it, the backyard could not beat TATTERED on the wild night at any price - every",
        "vertical-covering quad needs a house corner (fascia caps the best steel at 2.27 kN while",
        "those quads pull 3-7 kN -> tear in the settle), and the best HOLDING line p1..p4 ceilings",
        "at hp 61.3 through 25% cover. D played both halves through the real UI and confirmed to",
        "the decimal. Placement, not budget, not weather.",
        "",
        "WHY (5.5, -2) at h 2.6 and not somewhere kinder: the LOW top is the point - it twists the",
        "p1+p2+p3+p5 quad so it spills the gusts (small+twisted survives, DESIGN.md), and the",
        "position is swept against the $80 wallet. NUMBERS CORRECTED to the game-true chain after",
        "B's 12s-skew finding (no phantom settle; the first sweep's hp column ran ~4 HP hot):",
        "    (4.5,-2)  h2.6 -> p1 3.35 kN, needs RATED, line costs $90  DO NOT",
        "    (5,-2.5)  h2.8 -> p5 6.20, p1 3.75           -> $90       DO NOT",
        "    (5.5,-2)  h2.6 -> p5 5.10, p2 3.08, p1 2.96, p3 1.81 -> $75, hp 63.6 WIN  <- here",
        "    (6,-2)    h2.6 -> shadow drops                             DO NOT",
        "A second, LOWER-still or wider post cannot buy FULL either: the twin-post covering quad",
        "(p6 at (-3,-2) h2.6 + p5 + p1 + p2, 100% cover) pulls 6.9/6.7/6.2 kN and tears - full",
        "cover honestly exceeds the wild night at ANY buyable price, which is decision 2's tension",
        "doing its job. The separation block below pins the recipe; a.test flies it game-true.",
        "The smallest full-cover quad stays >45 m2 (a.test's floor holds). And the ICE night still",
        "refuses the $80 wallet: same line needs $105 there (p1 3.25, p2 3.22 vs a shackle's 3.20",
        "- the same few-hundredths miss as C's q3), so night 5 stays the night the bank pays for."
      ]
    }  ],

  "separation": {
    "_why": [
      "SPRINT13 gate 1.4 — A's ruling on C's proposed target, RULED TWICE and honest the second",
      "time. C proposed: 'on a wild night the best buyable line reads FULL (>66) and a bare bed",
      "reads DEAD (<33)'. First ruling amended the bare half (nowhere does a bare bed read DEAD;",
      "35.7 is tattered, and tuning storm_02 until a slogan lands is the fudge gate 1 exists to",
      "kill) and kept FULL — then B's audit rewrite caught that FULL was only ever met through the",
      "assert's own 12 s phantom settle (SailRig samples wind at its INTERNAL clock: game-true",
      "63.8/63.6, skewed 68.4/68.3). The geometry was re-swept game-true: nothing buyable reaches",
      "66 (the twin-post covering quad tears at 6.9 kN; every FULL-flavoured candidate is also",
      "knife-edged under B's 15% margin rule). So the target is RESTATED to the boundaries the",
      "game actually stakes, with real headroom, instead of pinning another knife edge:",
      "  - the best buyable line HOLDS (0/4) and WINS COMFORTABLY: hp > 60 (win line is 50;",
      "    game-true 63.6 - a red means the wild night's best line regressed, not noise),",
      "  - a bare bed LOSES: hp < 50 (game-true 35.7),",
      "  - the spread reads as most of a plant state: >= 25 HP (game-true 27.9).",
      "DESIGN CANON, written down on purpose: the wild night's garden is WON SCARRED, never FULL,",
      "and sometimes the win is PYRRHIC - the sail is spendable, the bed is not. PLAYED, per D's",
      "ask (real pointer events on the markers, real Enter, real invoice, night 4 as shipped):",
      "hp 55.7 WIN, 2/4 lost (p2 then p3), banked +$21, verdict 'THE GARDEN MADE IT. The sail",
      "didn't... That is what the sail was for.' The played number sits ~8 under the pinned",
      "sim-chain 63.6 because the real yard also throws the t=38 crate and ponds rain - and that",
      "gap lands exactly on p2's 4% shackle margin. RULED DELIBERATE: the wild night sells no",
      "clean line (B's margin rule labels this recipe marginal-only, which is the audit telling",
      "the truth) - the best $75 the shop has is a gamble that saves the bed and may cost the",
      "sail, which is DESIGN.md's firework, priced. The week's garden arc: full/full/full on",
      "nights 1-3, won-scarred night 4, beyond saving night 5 (week.js gardenBeyondSaving).",
      "The thresholds below pin the SIM CHAIN (rig+sky+garden, deterministic, no debris) as the",
      "regression tripwire; the played reference above is what the numbers must keep buying.",
      "B's audit reads the same recipe (heldMustExceed/bareMustLoseBelow are B's field names too -",
      "renaming them breaks gardenfly). A target nothing checks is decoration - the repo's oldest",
      "lesson."
    ],
    "_playedReference": "2026-07-18 UI run, night 4 as shipped: hp 55.7 WIN, 2/4 lost (p2,p3), +$21",
    "stormKey": "storm_02_wildnight",
    "tension": 1.0,
    "line": [
      { "anchor": "p5", "hw": "rated shackle" },
      { "anchor": "p1", "hw": "shackle" },
      { "anchor": "p2", "hw": "shackle" },
      { "anchor": "p3", "hw": "shackle" }
    ],
    "heldMustExceed": 60,
    "bareMustLoseBelow": 50,
    "separationAtLeast": 25
  },

  "shed": { "model": "shed_01_v1", "x": 11.8, "z": 6.2, "rotYDeg": -90 },
  "shedTable": { "model": "shed_table_v1", "x": 9, "z": 6, "rotYDeg": -90, "pickupNode": "pickup_anchor" },

  "gnome": { "model": "garden_gnome_01_v1", "x": 4.3, "z": 4.4, "rotYDeg": -126, "collateralValue": 25 },

  "bike": {
    "model": "bike_kid_01_v1", "x": -7, "z": 9.69, "rotYDeg": 180,
    "_why": [
      "The Hendersons' kid's bike, against the south fence. THE LEAN IS BAKED INTO THE GLB and it",
      "leans toward local -Z (E's THREADS note; e.test pins it) - a bike doesn't stand up on its own.",
      "rotYDeg 180 turns that lean into global +Z, INTO the fence. Any placement that doesn't point",
      "the lean at something to lean ON reads as a physics bug and isn't one.",
      "z is MEASURED, not reasoned: the bars' grip reaches 0.286 m past the origin (the tyre contact",
      "line) toward the lean, and the fence rails sit at z = 10 +/- 0.02, so 9.69 + 0.286 = 9.98 =",
      "the rail's inner face - bars touch the fence, tyres stand 0.31 m clear. x = -7 sits between",
      "fence posts (-7.5 and -5), so the grip meets rail, not post.",
      "NO collateralValue, BY RULING (THREADS [A] sprint 12): the sim cannot knock a bike over, and",
      "billing $60 for an event the player never sees is the kind of lie the invoice exists to kill.",
      "Leaning on the windward fence is the one pose a southerly can't falsify - the gust pins it",
      "harder. Price it the day it can fall."
    ]
  },

  "fence": {
    "sides": ["south", "west", "east"]
  },

  "wind": {
    "venturi": []
  }
}
