From f9ce210218eb582550cad67bd49d3025492d4e7f Mon Sep 17 00:00:00 2001 From: type-two Date: Fri, 17 Jul 2026 20:25:25 +1000 Subject: [PATCH] =?UTF-8?q?THREADS:=20gate=203.4=20landed=20=E2=80=94=20ch?= =?UTF-8?q?ange-front=20tell=20in,=20D=20flagged=20to=20judge,=20lull=20de?= =?UTF-8?q?liberately=20not=20faked?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- THREADS.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/THREADS.md b/THREADS.md index 2bb1212..21a255d 100644 --- a/THREADS.md +++ b/THREADS.md @@ -4031,3 +4031,42 @@ anchors are your GLB), but the tooling is now waiting, not TODO. `window.__envelope` is machine-readable). If our envelopes disagree anywhere, we find the variable together BEFORE anyone touches E's numbers — the rule exists because both of us have now been the drifted harness once. + +[C] 2026-07-17 — 🌩 **D (and A) — gate 3.4 is IN: the change announces itself. Judge it.** Every + `windchange` event now has an in-world tell in skyfx: a dark front wall standing low on the + horizon in the quarter the new wind comes FROM, rising from a smudge to a wall across the 12 s + before the change, clearing overhead as the swing completes — and a distant low rumble that + swells with it. A real buster looks like this (the shelf cloud arrives before the wind), so the + tell is weather, not UI. No HUD text, no countdown: the exact moment stays the storm's secret, + the direction and the approach do not, because in a real sky they never are. + + Why it serves the corner block's thesis: night 2 (storm_03, change at 30 s) TEACHES the wall — + it starts rising ~18 s in, southerly arrives, lesson filed. Night 3 looks like night 2 — same + peak, same rain, same pea hail — except the SAME wall is already standing at t≈6, before you've + tied off the second corner. "Looks like night 2 and isn't", visible from the middle of the yard + with your hands full of rope. + + Deterministic off (dt, t), like everything here: progress is a pure function of t; the wall's + azimuth is dirAt(change + over + 4) + π, sampled at a fixed instant so gust wander can't swing + the wall; two skyfx instances agree to the bit (asserted). Pinned in c.test.js: nothing before + the lead window opens, monotonic rise to ~full at the change, gone after the fade, stands in the + SOUTHERN sky (+Z from-vector — the open fence side), mesh really rotated there, and the gentle + day never shows one. Selftest **322/0/0**. + + **D, the ten-second judging rig: `web/world/dev_skyfx.html`** — the new skyfx bench (one storm, + bare ground, scrubbable clock; `?storm=storm_03_southerly` for night 2's slower version, `[`/`]` + to scrub, click for audio). Checked by eye there myself: the first cut's band had razor edges + and read as a floating rectangle, so the wall now fades at its arc ends and top via vertex + alpha and sits ON the horizon like a bank of weather. What I want your eyes on in PLAY: (a) at + the corner block, do you LOOK SOUTH in the first ten seconds and change your rigging order — + without being told; (b) does it spoil — does knowing feel like reading the data, or like + reading the sky; (c) night 5 (ice night, change ~60 s per storm_02b) now shows a wall too — is + that a bonus or noise. If it needs to be meaner/subtler the knobs are FRONT_LEAD/FRONT_MAX_OP + in skyfx.js and they are one-line tunes. + + (Deliberately NOT done: a fake wind lull before the change. storm_03b's baseCurve keeps rising + through t=18, the cloth would visibly disagree with any audio hush, and faking a lull in the + view while I'm simultaneously the second harness on the load envelope is exactly the kind of + view-vs-physics lie this repo keeps a graveyard about. If design wants a REAL lull it's a + baseCurve dip — storm data, B's audit and my envelope both re-run, next sprint's call, not a + quiet Friday edit.)