- backyard_01 gains p5 (5.5,-2) h2.6, honest steel NE of the bed: before it the yard could not beat tattered on the wild night at any price (covering quads need a fascia corner capped at 2.27 kN; the holding line ceilings at 61.3). Swept against the $80 wallet; position/height table in the site JSON. - Separation target adopted AMENDED (ruled on D's funnel-corrected picture): wild night, best buyable line FULL (>66) and WIN; bare bed LOSES (<50). Pinned as site data (backyard_01.separation names the $75 recipe p5=rated + p1/p2/p3=shackle) and FLOWN by a.test through the real chain: shop at START_BUDGET -> commit -> attach -> skyfx -> garden.js. Measured 68.3 FULL / 0 lost vs bare 35.7 (sep 32.6). - Full cover stays unbuyable (covering quads still pull 6.4-6.9 kN), the >45 m2 floor holds, and the ice night still refuses $80 (needs $105 - p1/p2 miss their shackles by 0.05 kN) - night 5 stays bank-funded canon. - New asserts: M reaches the real bus / is only advertised when real; anchor census now 13 (5 posts). Selftest 341/0/0.
194 lines
11 KiB
JSON
194 lines
11 KiB
JSON
{
|
|
"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:",
|
|
" (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.8 -> p2 3.08, p1 3.06 (4% margin on shackle) - legal but knife-edged",
|
|
" (5.5,-2) h2.6 -> p5 4.88, p2 3.14, p1 2.91, p3 1.82 -> $75, hp 68.3 FULL <- here",
|
|
" (6,-2) h2.6 -> shadow drops, hp 65.8 tattered DO NOT",
|
|
"The separation block below pins the recipe; a.test flies it. Full cover STAYS unbuyable:",
|
|
"the covering quads (p1+p2+p4+p5 and up) still pull 6.4-6.9 kN and still tear - the",
|
|
"smallest full-cover quad stays >45 m2 (a.test's floor holds), so the tradeoff decision 2",
|
|
"protects is intact. 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, exactly as ruled in SPRINT9."
|
|
]
|
|
} ],
|
|
|
|
"separation": {
|
|
"_why": [
|
|
"SPRINT13 gate 1.4 — A's ruling on C's proposed target, AMENDED to the numbers the real game",
|
|
"measures (ruled on D's funnel-corrected picture, not C's original headline). C proposed:",
|
|
"'on a wild night the best buyable line reads FULL (>66) and a bare bed reads DEAD (<33)'.",
|
|
"Adopted in spirit, amended in both halves:",
|
|
" - The bare half becomes 'a bare bed LOSES the night (hp < 50, the win line)'. Nowhere in",
|
|
" the shipped game does a bare bed read DEAD on the wild night (35.7, tattered) — D's",
|
|
" check — and tuning storm_02's damage budget until a slogan lands is exactly the fudge",
|
|
" gate 1 exists to kill. The felt boundary is the WIN line, and 35.7 fails it honestly.",
|
|
" - The FULL half binds THIS yard, because the shipped week's only wild night is here",
|
|
" (week.js night 4). C's passing example was site_02, whose wild night the corner block",
|
|
" never plays — and with its venturi live the example dies anyway (D's landmine).",
|
|
"This block is the pin: the recipe below is the measured best $80 line, a.test flies it",
|
|
"through the real chain (session -> commit -> attach -> skyfx) every run, and B's audit can",
|
|
"read the same recipe instead of inventing one. A target nothing checks is decoration —",
|
|
"the repo's oldest lesson, and the reason this is data and not a THREADS sentence."
|
|
],
|
|
"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": 66,
|
|
"bareMustLoseBelow": 50
|
|
},
|
|
|
|
"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": []
|
|
}
|
|
}
|