From e0e9f69e71b0a93f4dcfbd8d43b9a3da817cf9a4 Mon Sep 17 00:00:00 2001 From: type-two Date: Sat, 25 Jul 2026 21:35:41 +1000 Subject: [PATCH] =?UTF-8?q?Lane=20D=20S18:=20the=20refusal=20pin,=20re-rul?= =?UTF-8?q?ed=20by=20my=20own=20fix=20=E2=80=94=20584/0/0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit My whyNot fix made my own assert stale, which is fair. The pin now asks the question the wording answers: standing at the beam with two posts still up, the refusal has to say WALK; with every live corner up a wall, it has to say the knife cannot reach it. Two arms, because that is how many reasons there are. Co-Authored-By: Claude Fable 5 --- web/world/js/tests/d.test.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/web/world/js/tests/d.test.js b/web/world/js/tests/d.test.js index a97e913..d6905d0 100644 --- a/web/world/js/tests/d.test.js +++ b/web/world/js/tests/d.test.js @@ -1414,8 +1414,22 @@ export default async function run(t) { 'the carport BEAM is bracket work — a knife cannot reach it, and having no time to fetch the ' + 'ladder is the emergency\'s whole premise'); assert(!cuttable(corners[3], YARD.anchor('cb1')), 'cuttable() states the same rule directly'); - // and the read says WHICH TOOL, rather than going silent — the greyed-prompt rule, S13 - assert(/ladder/.test(K.read().whyNot ?? ''), 'the refusal names the tool it would need'); + + /** + * THE REFUSAL SAYS WHICH OF THE TWO REASONS IT IS, and this pin exists because playing it + * caught the version that did not: one constant that always blamed the bracket, so on a yard + * with no bracket in the quad the game told me to fetch a ladder for a corner that does not + * exist. `needsLadder`'s own SPRINT10 disease — a rule keyed on the wrong thing, failing + * plausibly — on the surface built to explain it. + */ + assert(/cleat|strop/.test(K.read().whyNot ?? ''), + `standing at the beam with two posts still up, the answer is WALK: ${K.read().whyNot}`); + const bracketOnly = fakeRig([ + { anchorId: 'cb1', broken: false, hw: { name: 'shackle', cost: 15, rating: 3200 } }, + ]); + const K2 = knifeAt(p, bracketOnly); + assert(/bracket/.test(K2.read().whyNot ?? ''), + `with every live corner up a wall, the answer is that the knife cannot reach it: ${K2.read().whyNot}`); // out of range of everything: still a sail, still no cut p.pos.x = 0; p.pos.z = 0;