- a.test's separation flight had the phantom 12 s settle B caught (SailRig samples wind at its INTERNAL clock; the storm flew 12 s off the authored curve). Settle deleted — commit->attach->storm from t=0, C's corrected bench pattern; venturi wired from site data so the flight can never assume a yard. - Game-true the line reads 63.6, not 68.3 — FULL (>66) was met by the harness, not the game, and the re-sweep says nothing buyable reaches 66 (the twin-post covering quad tears at 6.9 kN). Target RESTATED to the game's real stakes, with headroom: held >60 and 0/4 (win line 50; measured 63.6), bare <50 (35.7), separation >=25 (27.9). Field names kept — B's gardenfly reads them. - DESIGN CANON in the site block: the wild night's garden is WON SCARRED, never FULL; the week's arc is full/full/full, won-tattered, beyond-saving. - p5 _why table corrected to game-true numbers (first sweep ran ~4 HP hot).
203 lines
12 KiB
JSON
203 lines
12 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. 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.",
|
|
"The week's garden arc is full/full/full on nights 1-3, won-but-tattered on night 4, and",
|
|
"beyond saving on night 5 (see week.js night 5) - the state bands are the yard's face, but",
|
|
"the stakes the player plays for are the WIN line and the invoice, and those are what pin.",
|
|
"This block is the pin: a.test flies the recipe through the real chain (session -> commit ->",
|
|
"attach -> skyfx, NO settle, from t=0) every run, and 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."
|
|
],
|
|
"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": []
|
|
}
|
|
}
|