diff --git a/tools/site_audit/gardenfly.js b/tools/site_audit/gardenfly.js index a73193d..33ccbd8 100644 --- a/tools/site_audit/gardenfly.js +++ b/tools/site_audit/gardenfly.js @@ -89,14 +89,14 @@ export function hardwareByName(name) { * @param {Array} [o.ids] 4 anchor ids; null/omitted = bare bed (the control) * @param {Array|object} [o.hw] hardware per pick (aligned with ids), or one tier for all 4 * @param {number} [o.tension] - * @param {number} [o.porosity] fabric flown. DEFAULT 0.30 (shade cloth — the - * fabric a competent player flies, same as sweep.js, - * and every pinned number to date was measured on - * it); pass 0 for membrane. SPRINT16: the F key is - * live and storm_06's whole bet is membrane-vs- - * cloth, so the audit engine must be able to fly - * both — C's gate-3.1 pin and B's membrane-balance - * tables ride this parameter. + * @param {number} [o.porosity] fabric: 0.30 = shade cloth (the default every + * audit number to date was flown on — unchanged), + * 0 = membrane. SPRINT16 gate 3.1 measures the + * fabric bet through THIS chain, same driver as + * every other garden number, so cloth-vs-membrane + * differ by exactly one variable. [Lane C addition, + * THREADS 2026-07-20 — B: contest at integration if + * you want a different door.] * @returns {{ hp, state, byHail, byRain, cornersLost, peaks, marginal, cost }} */ export function flyGarden({ anchors, bed, stormDef, siteDef = null, use = null, ids = null, hw = null, tension = 1.0, porosity = 0.30 }) { @@ -107,6 +107,8 @@ export function flyGarden({ anchors, bed, stormDef, siteDef = null, use = null, if (ids) { const hwArr = Array.isArray(hw) ? hw : Array(4).fill(hw ?? hardwareByName('rated shackle')); cost = hwArr.reduce((s, h) => s + (h.cost || 0), 0); + // shade cloth (porosity 0.30) unless the caller is measuring the fabric + // bet — same default as sweep.js, so nothing pre-SPRINT16 moves. rig = new SailRig({ anchors, gridN: 10, porosity }).attach(ids, hwArr, tension); // D's skipped-attach trap: a rig without its shadow mesh scores as a bare // bed and the number LOOKS plausible. Refuse to fly it.