THREADS: gutter price proposal ($90) for A's ruling, wreck contract + wiring seam, negative-control receipt, ratings position for B/C's audit
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
b7f065cd57
commit
a52e2377fb
77
THREADS.md
77
THREADS.md
@ -3966,3 +3966,80 @@ anchors are your GLB), but the tooling is now waiting, not TODO.
|
||||
· **gate 3 — John plays the week. FIVE sprints standing, and for the first time the excuse is
|
||||
gone: the week is playable end to end.** §BROKE_BELOW watch: if the bank runs away, A's
|
||||
declared first cut is the $20 clean bonus, not feeFor/gardenBonusMax.
|
||||
|
||||
[E] 2026-07-17 — 💰 **LANE A — the gutter has a price to rule on: $90, and the reasoning is baked
|
||||
beside it in the asset, the carport ruling's shape exactly.** `GUTTER_COLLATERAL = 90` in
|
||||
build_yard_assets.py, carried as root extras on BOTH house GLBs. The case, to argue with rather
|
||||
than adopt:
|
||||
· the band is established now — gnome 25 at the floor, carport 180, my stated ceiling ~250.
|
||||
The gutter goes between the ornament and the structure, because that's what it is;
|
||||
· a night's shop budget is 80 and the wild night's fee is ~76 (feeFor at a 32 m/s peak). At 90
|
||||
the night the trap fires on is WIPED, kit and fee together — the fascia's lesson in one
|
||||
number: the "free" anchors were the dearest kit in the yard;
|
||||
· under ~50 it's a shrug (less than the fee alone — the trap couldn't even wipe its own
|
||||
night); over ~130 the backyard outbids half a carport for a smaller lie: the fascia (0.35)
|
||||
is honestly better steel than the beam (0.22), it's three anchors not four, and it's the
|
||||
tutorial yard — the first trap a player can hit should cost them a night, not the week.
|
||||
**One NEW field, and it exists because the carport never needed it:** the GLBs also carry
|
||||
`collateral_key: "gutter"`. There, the structure and the thing you take share a name; here the
|
||||
structure is a house and the thing you take is the gutter, so the key names WHICH collateral
|
||||
string the value prices — your wiring never has to guess. e.test pins the chain
|
||||
(anchor.collateral === root.collateral_key) and the band (gnome < gutter < carport), not the
|
||||
digit — if you rule a different number, change it in the factory and re-export so site JSON and
|
||||
the GLB never tell two prices. Adoption shape is the carport's: the canonical number goes in
|
||||
site JSON (sites are data), the GLB stays proposal-and-fallback. Your a.test line 375
|
||||
(`collateralFor('gutter')` is null) is yours to flip when you wire it.
|
||||
|
||||
[E] 2026-07-17 — 🏚 **`house_yardside_wrecked_v1.glb` — the torn-gutter wreck, the carport pattern,
|
||||
second time around.** 9.46 × 2.10 × 2.92 m, 340 tris, 33 KB. Same origin, same footprint, same
|
||||
façade — mesh-for-mesh swap, and this time it's structural: both variants build their walls/
|
||||
door/window/glow/roof through one shared `_house_facade()`, so they CANNOT drift. Proof the
|
||||
refactor moved nothing: the re-exported intact house's binary chunk is byte-identical to the
|
||||
committed GLB — the only diff is the three new price extras — and all 33 factory GLBs hashed
|
||||
byte-identical across two full runs (house pair `a77d7536…`/`228e9d14…`, identical between
|
||||
--only and full runs too).
|
||||
**It fails the way DESIGN.md always said it would** ("holds until the first real gust, then
|
||||
rips off taking the gutter with it") — and unlike the carport, the HOUSE does not fall. A
|
||||
gutter unzips: the fascia is torn through the span the fixings held (splintered ends past each
|
||||
break, the gap is where fascia_anchor_02 was), the left run still hangs off the surviving board
|
||||
by its last bracket with its torn end sagged to ~1.3 m, the right run is ON the grass out in
|
||||
the yard, kinked where it landed, the downpipe leans out of plumb, and the offcuts lie flat on
|
||||
the lawn (the carport wreck's sunk-corner lesson — nothing sinks). I LOOKED before shipping —
|
||||
three close renders from the yard side, per last sprint's lesson that the verify can't answer
|
||||
"is this the right shape".
|
||||
**NO fascia_anchor_* empties survive into the wreck.** You cannot re-tie to a ripped eave, and
|
||||
an anchor that outlived its fascia would be the free-failure bug back again wearing a wreck for
|
||||
a costume. e.test pins the absence.
|
||||
**LANE A — the wiring seam, named so it doesn't bite you:** `collateralFor()` and
|
||||
`wreckStructure()` iterate `structures`, and the house is NOT a structure — `site.house` is its
|
||||
own top-level key, loaded by its own block in dress(). So the gutter stays unpriced and
|
||||
unswappable until you either move the house into `structures[]` (it already fits the shape:
|
||||
model + wreckedModel + anchors + solid) or teach those two functions about the house entry.
|
||||
The wreck is built for the same swap the carport uses — load at dress, park invisible, flip
|
||||
visible on the event. `window_glow` ships in the wreck too (hidden_by_default, same name): if
|
||||
the swap lands mid-night, re-flip it or the client's lights go out with the gutter.
|
||||
|
||||
[E] 2026-07-17 — 🔒 **the DOWN assert failed before it passed, on purpose.** The wreck's whole
|
||||
message is vertical — the gutter that was UP at the eave is DOWN — so the test measures both
|
||||
halves and the intact house is the control that proves the measurement measures. Negative
|
||||
control, the bike-lean discipline: rebuilt the wreck with the ground run parked back at eave
|
||||
height ("someone quietly un-tore it"), and the selftest went red — **1 failed / 319 passed,
|
||||
"gutter_down tops out at y=2.68 — the run is not on the grass"** — while the Blender verify
|
||||
said `[PASS] 9.46 × 2.10 × 2.92` on the SAME bad file, because only z moved and no box span
|
||||
changed. That's the axis-blindness this suite exists for, third time it's earned its keep.
|
||||
Restored build round-tripped to the identical hashes. Status: selftest **320/0/0** (315 + 5),
|
||||
Lane E is 72 asserts.
|
||||
|
||||
[E] 2026-07-17 — 📊 **B, C — on the ratings, position stated BEFORE the audit lands so nobody
|
||||
argues with a ghost.** Read C's envelope entry (origin/lane/c) — it's the second harness the
|
||||
repo rule wants, and one flag in it needs an answer now: **the branch-anchor ladder is
|
||||
deliberate, not drift.** t1b/t2b/tr1b = 0.88 and t1c = 0.76 are the `1.0 − 0.12·i` descent I
|
||||
baked in Sprint 7 — the fork is honest steel, the limb thins as you climb, and that gradient is
|
||||
the intel DESIGN.md wants inspection to buy. Audit against the DRESSED anchors, as C says, not
|
||||
the sprint doc's "tree 1.0" shorthand — the doc compressed, the assets didn't. My stance for
|
||||
the re-audit: **0.22 / 0.30 / 0.35 and the ladder stand until a measured night has no winnable
|
||||
$80 line through the real shop.** If that day comes, the agreed order still holds — C's gain
|
||||
drop first, and the tree-move stays CANCELLED (integrator's call, sprint 11) — and softening
|
||||
the ratings stays last, because the ratings ARE the site: e.test pins them with the reasons
|
||||
attached. Propose retunes here with the audit as evidence and I'll move my own numbers in the
|
||||
factory; nudge them in site JSON and two sources of truth will tell two lies.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user