HardYards/web/world/js
type-two 397d9435bc Lane A S18: 👁️ played the callout — five bugs 535 green asserts could not see, all fixed and pinned; gate 5's A half
Eyes on the cards found what the suite structurally cannot:
· the board advertised $57 while the dispatch quoted $114 one click apart — the
  quote-vs-settle lie walking back in through an unreachable closure inside
  boot(). pricedOffers is now the exported pure priceOffer(), rigRecordFor's
  precedent, and the bug has its own pin.
· the emergency wore the same grey "callout" tag as the Tuesday alternative
  beside it — the tell rule broken on the surface the tell rule is for.
· the invoice argued with itself: the ledger said CB1 "is not on you" and the
  verdict blamed CB1. verdictFor now reads `yours`, and the ruling is extracted
  as answerableFor() so the RULING is pinnable, not just its consequences.
· the shop lied by $20 — the session charged me for the cowboy's carabiners.
· "the Hendersons IS expecting you", live, on the ruling's headline line.

Gate 5 (A's half): collateralKeyClashes() turns D's second-rust-post landmine
into a tripwire carrying both harnesses' numbers. It reports and does not throw
(D and E are authoring in parallel), and it deliberately does NOT make
exposureOf dedupe — the card is the honest side, the failure route is what needs
per-instance keys, and matching a bug converts a loud disagreement into a quiet
lie.

⚠️ RETRACTED IN THREADS: my $180 balance measurement is contaminated. C found
SailRig.step accepts `t` and never reads it, so setPhase('storm',{at:30}) moves
the sky and not the cloth (4.12× understated load, 93× light rain). B must not
rule the garden bonus against my $38. The TELL survives — CB1 still blows at
t≈33 — the ECONOMY does not.

Selftest 539/0/0 — 522 + 17, the exact sum. 19 mutations, all red with their own
words, controls green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-25 19:53:47 +10:00
..
tests Lane A S18: 👁️ played the callout — five bugs 535 green asserts could not see, all fixed and pinned; gate 5's A half 2026-07-25 19:53:47 +10:00
anchor_ratings.gen.js WIP Lane E S17 gate 3.1: corroded tier (PREDECESSOR STATE — negative control M1 still applied) 2026-07-21 01:18:44 +10:00
board.js Lane A S18: 👁️ played the callout — five bugs 535 green asserts could not see, all fixed and pinned; gate 5's A half 2026-07-25 19:53:47 +10:00
broom.js Lane D: calibrate the douse to B's real ponds; fix the sagging-belly refusal 2026-07-17 09:23:17 +10:00
camera.js Sprint 13 gate 2.5: two camera fixes — spawn framing, aftermath cloth-swallow 2026-07-18 01:18:29 +10:00
contracts.js WIP Lane E S17 gate 3.1: corroded tier (PREDECESSOR STATE — negative control M1 still applied) 2026-07-21 01:18:44 +10:00
debris.js debris: delete the dead sail.nodes seam — sail._applyDebris is the one contact model 2026-07-18 19:03:36 +10:00
editor_score.js Lane B S17 gates 0.3 + 2: the card names its cloth, the session speaks for the client 2026-07-21 02:45:49 +10:00
editor_storm.js Lane C S16: gate 3 lands — the fabric bet pinned, forecast argues it, storm in the lists; selftest 438/0/0 2026-07-20 20:33:10 +10:00
editor.js Lane A S17 second shift: separation-block fabric field RULED (B's S16 ask), E's corroded-post palette hunk applied verbatim, enum widening endorsed 2026-07-21 02:22:27 +10:00
editor.wind.js Lane C S15: converge gate 2.2 onto B's THREADS proposal — B's filename/global/source/default taken, storm+time API kept; THREADS: seam receipt + gate-1.3 storm-side zero-delta confirmation 2026-07-20 18:23:31 +10:00
garden.js Sprint 13: garden model exported as garden.js (B's gate-1.2 blocker) + applyMute(sky,on) as a value 2026-07-18 12:44:37 +10:00
hud.js Lane A S18: 👁️ played the callout — five bugs 535 green asserts could not see, all fixed and pinned; gate 5's A half 2026-07-25 19:53:47 +10:00
interact.js Lane D: calibrate the douse to B's real ponds; fix the sagging-belly refusal 2026-07-17 09:23:17 +10:00
ladder.js Lane D: ladder survives a mid-carry knockdown, and the prompt names the right bracket 2026-07-18 01:00:01 +10:00
main.js Lane A S18: 👁️ played the callout — five bugs 535 green asserts could not see, all fixed and pinned; gate 5's A half 2026-07-25 19:53:47 +10:00
player.js Lane D: the player leans into the wind (gate 2.4 — as a root pose, not a clip) 2026-07-18 01:33:47 +10:00
player.sim.js Lane D: the player leans into the wind (gate 2.4 — as a root pose, not a clip) 2026-07-18 01:33:47 +10:00
ratings.js Lane E S15 gate 1.2: ratings.js — factoryExtras(type), the runtime end of the manifest; refuses to guess for ambiguous types, warns once 2026-07-20 17:49:38 +10:00
rigging.js Lane B S17 gates 0.3 + 2: the card names its cloth, the session speaks for the client 2026-07-21 02:45:49 +10:00
rigging.selftest.js Lane B S17 gate 3: the corroded tier prices honestly in the card 2026-07-21 03:59:53 +10:00
sail.js Lane B S17 gate 0.2: THE SECOND WIRE — a fully-lost sail re-arms the heal 2026-07-21 02:45:28 +10:00
sail.selftest.js Lane B S17 gate 0.2: THE SECOND WIRE — a fully-lost sail re-arms the heal 2026-07-21 02:45:28 +10:00
skyfx.js Lane C S13 gate 2.3 + D's sliver: ambient leaves from 30 km/h; hail pool hides at zero 2026-07-18 11:51:26 +10:00
stormgen.js Lane C S16: makeStorm(seed) — seeded storms inside authored envelopes (gate 3.2) 2026-07-20 20:11:34 +10:00
testkit.js Gate 0: name the harness dispute's cause; make skips real (testkit) 2026-07-17 10:21:01 +10:00
weather.core.js Lane C S16: gate 3 lands — the fabric bet pinned, forecast argues it, storm in the lists; selftest 438/0/0 2026-07-20 20:33:10 +10:00
weather.js Lane C S17 gate 1 (cont.): the OFFER BAND and the PAIRING law — night 7 stops lying 2026-07-21 03:07:02 +10:00
week.js Lane A S18 gate 1 spine: 🚨 THE EMERGENCY CALLOUT — a night that starts in storm, a DISPATCH, double rates, the ledger unchanged 2026-07-25 19:30:19 +10:00
world.js Sprint 15 integration: merge all lanes (418/0/0), apply E's world.js manifest patch, [I] entry 2026-07-20 19:38:11 +10:00