From 453f6cb9d28402280e93405c7749222ddc6f9ff1 Mon Sep 17 00:00:00 2001 From: type-two Date: Mon, 20 Jul 2026 20:21:57 +1000 Subject: [PATCH] =?UTF-8?q?Lane=20E=20S16:=20'pergola'=20enters=20ANCHOR?= =?UTF-8?q?=5FTYPE=20=E2=80=94=20A's=20file,=20my=20edit,=20the=20swing=5F?= =?UTF-8?q?frame=20precedent,=20flagged=20in=20THREADS.=20A=20deck=20is=20?= =?UTF-8?q?not=20concrete;=20the=20type=20string=20is=20the=20player's=20p?= =?UTF-8?q?re-rig=20read?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- web/world/js/contracts.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/web/world/js/contracts.js b/web/world/js/contracts.js index b8e4485..989fd0b 100644 --- a/web/world/js/contracts.js +++ b/web/world/js/contracts.js @@ -81,9 +81,17 @@ export const PHASES = ['forecast', 'prep', 'storm', 'aftermath']; * concreted steel. This is a welded joint on a frame standing on grass: good * steel, no footing, rating_hint 0.45. Same lesson as the carport, which was * also nearly smuggled in as a post. + * + * `pergola` (SPRINT16 gate 5, E): a pergola's bolted post-beam corner — the + * ladder's middle rung (0.65), D-endorsed in S15. Not a `post` for the same + * reason the swing frame isn't: the word promises the footing, and this one's + * footing is a DECK — real bolts into real joists, so better than + * loose-on-grass (0.45), but the deck flexes and the timber cracks before + * concrete would notice (1.00). One rating for the whole type, per the + * manifest rule (THREADS [E] S15): unambiguous types stay node-less-safe. */ export const ANCHOR_TYPE = Object.freeze([ - 'house', 'tree', 'post', 'carport', 'carport_post', 'swing_frame', + 'house', 'tree', 'post', 'carport', 'carport_post', 'swing_frame', 'pergola', ]); // ---------------------------------------------------------------------------