HardYards/tools/site_audit
type-two e1e14018bf Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture
The scoring quantity is the FLOWN garden state now, not static cover%.
New gardenfly.js: windForSite (C's shared builder — venturi + shelters, one
copy in the repo) → real attach (throws on D's skipped-attach trap) → skyfx
exposure → garden.js, per candidate line; cover% demoted to a labelled
geometry diagnostic. audit.html flies every affordable line + bare bed and
judges the site's pinned separation block on the block's own storm; audit.mjs
(node) keeps fast winnability, gains p5 in its verified dump, and points at
the browser for garden truth.

On C's correction, three structural adoptions:
- windForSite everywhere (three harnesses independently mis-built site wind;
  no fourth copy);
- LIVE anchors via the re-pointable wind proxy — the audit's own frozen-sway
  remap was C's landmine 2 wearing my file's name (audit.html:69);
- the MARGIN rule (AUDIT.MARGIN = 0.15, one copy): every row prices twice —
  $hw holds vs $cleanHw with >=15% headroom — and only clean lines are
  winners; verdict code 'marginal-only' when the budget can only buy the
  knife edge (D's 39.8-TATTERED wild night, C's dead 91.9 headline).

Also game-true flight: the phantom 12s calm settle is GONE from the sweep
(commit->attach->storm is one keypress; the settle skewed every storm sample
12 s off the authored curve — SailRig samples wind at its INTERNAL clock).
That skew is not academic: it is a.test's separation-flight harness too, and
gardenfly.selftest now pins BOTH chains (game-true 63.8 tattered vs skewed
68.4 'full' on the pinned p5 line — the disagreement is flagged to A in
THREADS, not overruled here). The pinned recipe also sweeps regardless of the
18-45 band (it is 45.9 m² — the band predates p5; flagged to A).

Selftest 356/0/0 on the scratch merge (b+a+c@45bdc2d). Mutation-checked:
MARGIN=0 reddens the margin test (node); dropping siteDef from gardenfly's
windForSite call reddens the venturi test (browser, exact test named).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 13:50:15 +10:00
..
audit.html Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
audit.mjs Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
garden_probe.html Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
gardenfly.js Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
gardenfly.selftest.js Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
sweep.js Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00
sweep.selftest.js Lane B S13: THE AUDIT REWRITE — the audit predicts the garden, on C's corrected picture 2026-07-18 13:50:15 +10:00