Merge Sprint 5 lanes; wire decision 13 garden drain; measure the balance gap
Selftest on merged main: 240 pass / 0 fail. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
9010a2c784
commit
b1acbd6668
14
THREADS.md
14
THREADS.md
@ -1788,3 +1788,17 @@ Format: `[lane letter] YYYY-MM-DD — note`
|
||||
rigSail/attach) so Lane-D systems that need the rig but are built by createPlayer — the broom needs
|
||||
`ponds`/`drainPondAt` — can read it without main.js threading it through. Same pattern and same reason
|
||||
as `interact.ladder`. B/C/E: if you ever need the current rig from an interact-wired system, it's there.
|
||||
|
||||
[I] 2026-07-18 — **SPRINT 5 INTEGRATION (main).** Lanes b/c/d/e merged; selftest **240/0/0**. Wired
|
||||
decision 13 into A's one-term seam (hail×5.0 + rain×0.25 feeding garden.step; weights are integration
|
||||
guesses, tune freely). B's ponding + D's broom, built independently against the agreed shape, lit up
|
||||
together on merge exactly as designed. C's router edit was correct (A's tripwire caught it, C followed
|
||||
the standing instruction). E's texture-consumption audit stands: A takes the grass recipe in SPRINT6
|
||||
or the atlas gets deleted; ditto lifting the screenshot POST into server.py.
|
||||
**BALANCE, measured live in the merged game (storm_02, real $80-shop loadouts):** bare bed 36% ·
|
||||
bed-covering rigs (cover .29-.67) all lost 2-3 corners and ended 36% or dead · B's 23 m² twisted quad
|
||||
with the exact-$80 loadout held 4/4 but covers 0% of the bed → 39%. Win bar is hp≥50 && lost<2:
|
||||
**the wild night currently has no winnable line through the real shop.** Nothing is broken — C
|
||||
flagged exactly this joint call when holding 0.45 — but it is now measured and it is SPRINT6 gate 1.
|
||||
Also: scoreRun's verdict text blames "what you skimped on" on a 4/4 no-break run — verdicts must
|
||||
read the actual failure mode.
|
||||
|
||||
@ -546,7 +546,15 @@ export async function boot(opts = {}) {
|
||||
// extends exactly this shape (+ gardenHailExposure) — so when hail lands
|
||||
// this is one added term here, not a rewrite.
|
||||
if (game.phase === 'storm') {
|
||||
garden.step(dt, sky?.gardenExposure ? sky.gardenExposure(world.gardenBed, windT) : 0);
|
||||
// Decision 13 (SPRINT5): hail is the headline garden threat — it falls
|
||||
// steep, so the sail blocks it and the score finally rewards rigging
|
||||
// (C proved 4.4× separation). Rain stays as the small honest drain that
|
||||
// walks under a sail in a gale. Weights chosen so storm_02 unprotected
|
||||
// loses ~50 HP to its hail bursts (11.4 hail-seconds × 5.0 × 0.9/s) and
|
||||
// ~10 to rain, while a bed-covering rig cuts the hail term ~4.4×.
|
||||
const rainExp = sky?.gardenExposure ? sky.gardenExposure(world.gardenBed, windT) : 0;
|
||||
const hailExp = sky?.gardenHailExposure ? sky.gardenHailExposure(world.gardenBed, windT) : 0;
|
||||
garden.step(dt, hailExp * 5.0 + rainExp * 0.25);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user