Lane B S16: adopt C's gardenfly porosity hunk byte-identical — convergent, uncontested
Both lanes added the identical param (same name, same 0.30 default, one-line rig change) the same day. C's copy taken verbatim so integration merges clean; my default-unmoved + membrane-heavier asserts in gardenfly.selftest.js stand and cover both copies. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
458e9a5412
commit
7a2024c2f9
@ -89,14 +89,14 @@ export function hardwareByName(name) {
|
|||||||
* @param {Array} [o.ids] 4 anchor ids; null/omitted = bare bed (the control)
|
* @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 {Array|object} [o.hw] hardware per pick (aligned with ids), or one tier for all 4
|
||||||
* @param {number} [o.tension]
|
* @param {number} [o.tension]
|
||||||
* @param {number} [o.porosity] fabric flown. DEFAULT 0.30 (shade cloth — the
|
* @param {number} [o.porosity] fabric: 0.30 = shade cloth (the default every
|
||||||
* fabric a competent player flies, same as sweep.js,
|
* audit number to date was flown on — unchanged),
|
||||||
* and every pinned number to date was measured on
|
* 0 = membrane. SPRINT16 gate 3.1 measures the
|
||||||
* it); pass 0 for membrane. SPRINT16: the F key is
|
* fabric bet through THIS chain, same driver as
|
||||||
* live and storm_06's whole bet is membrane-vs-
|
* every other garden number, so cloth-vs-membrane
|
||||||
* cloth, so the audit engine must be able to fly
|
* differ by exactly one variable. [Lane C addition,
|
||||||
* both — C's gate-3.1 pin and B's membrane-balance
|
* THREADS 2026-07-20 — B: contest at integration if
|
||||||
* tables ride this parameter.
|
* you want a different door.]
|
||||||
* @returns {{ hp, state, byHail, byRain, cornersLost, peaks, marginal, cost }}
|
* @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 }) {
|
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) {
|
if (ids) {
|
||||||
const hwArr = Array.isArray(hw) ? hw : Array(4).fill(hw ?? hardwareByName('rated shackle'));
|
const hwArr = Array.isArray(hw) ? hw : Array(4).fill(hw ?? hardwareByName('rated shackle'));
|
||||||
cost = hwArr.reduce((s, h) => s + (h.cost || 0), 0);
|
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);
|
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
|
// 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.
|
// bed and the number LOOKS plausible. Refuse to fly it.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user