From 8f81d8f9d0fc8a9616707787306531323ad8a7ff Mon Sep 17 00:00:00 2001 From: Vuong Hoang Date: Tue, 22 Sep 2026 10:04:51 -0700 Subject: [PATCH] memory: no fleetwide notice for U4, and the measurement caveat it creates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator decision 2026-09-22: no broadcast to the 17 consuming handles. Same posture as U5 — adoption gets told apart from design because nobody was primed. The consequence is a measurement one and it needed writing down before it was lost. U4's two halves have different adoption costs: the hold rides for free (a session runs `booth ask` and its booth is held, knowing nothing), but NOT pressing `keep` has to be learned. So a flat `.forever` rate on 2026-10-06 is exactly what 'the mechanism works and nobody was told' looks like, and reading it as a falsification would retire a correct diagnosis on an uncontrolled measurement. Records the three counts to report instead, and states the sensitivity floor: only 4 of 24 booths carry marks at all, so the hold can touch at most a sixth of the fleet and an effect below one or two booths is not resolvable. --- ...tice-and-what-it-does-to-the-prediction.md | 54 +++++++++++++++++++ persistent-memory.md | 9 ++-- 2 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 persistent-memory.d/2026-09-22-no-notice-and-what-it-does-to-the-prediction.md diff --git a/persistent-memory.d/2026-09-22-no-notice-and-what-it-does-to-the-prediction.md b/persistent-memory.d/2026-09-22-no-notice-and-what-it-does-to-the-prediction.md new file mode 100644 index 0000000..0c34070 --- /dev/null +++ b/persistent-memory.d/2026-09-22-no-notice-and-what-it-does-to-the-prediction.md @@ -0,0 +1,54 @@ +# No fleetwide notice for U4 — and what that does to the prediction + +_2026-09-22 · booth_ + +**Operator decision, 2026-09-22: do NOT tell the 17 consuming handles that +`keep` has stopped being the way to say "waiting on an answer".** No broadcast. +Same posture he took on U5, and the same instrument: adoption gets told apart +from design because nobody was primed. + +⚠ **THIS CHANGES HOW THE 2026-10-06 RE-COUNT MUST BE READ, and a session that +misses this will draw the wrong conclusion from a true number.** + +U4 has two halves and they do NOT have the same adoption cost: + +- **The hold rides for free.** A session that runs `booth ask` gets its booth + held with no knowledge of anything. The operator answering releases it. No + peer has to learn a thing for the mechanism to work. +- **NOT PRESSING `keep` HAS TO BE LEARNED.** U4 makes the sentinel unnecessary + for the "not yet" case; it does not make it unavailable, and nothing stops a + habit. An agent that has always pressed `keep` while waiting will keep + pressing it. + +**So a flat `.forever` rate on 2026-10-06 does NOT falsify the diagnosis.** It +is exactly what "the mechanism works and nobody was told" looks like — the U5 +shape, one unit later. Reporting a null result without this caveat would retire +a correct diagnosis on the strength of an uncontrolled measurement. + +**Use these instead, and report all three.** The raw rate stays as context, not +as the verdict: + +1. **The overlap — booths with an open pick AND `.forever`.** Was **3** on + 2026-09-22, which is the positive control for the whole diagnosis. It falls + only if peers learn; it is the *adoption* number. + + comm -12 <(grep -l '"shape": "pick"' ~/booth-data/*/.marks.json | xargs -n1 dirname | sort) \ + <(dirname ~/booth-data/*/.forever | sort) | wc -l + +2. **Did the hold ever bind?** Count booths that were held past their TTL and + therefore survived a sweep they would otherwise have lost. This needs no + peer to change anything, so it is the honest test of whether the mechanism + is load-bearing at all. **If it is ZERO over a fortnight, the diagnosis was + wrong about VOLUME** — the "not yet" case is rarer than the sentinel rate + suggested — and that is a real finding. The sweeper logs what it wipes; + nothing yet logs what it spares, so **this counter does not exist and would + have to be added before it can be read.** Say so rather than guessing. +3. **The raw `.forever` rate** — 17 of 24 (70%) on 2026-09-22. Context only, + now that the no-notice decision has made it a measurement of habit rather + than of need. + +⚠ **Sensitivity floor, stated because a bare "no effect" is unfalsifiable:** +only **4 of 24** booths carried marks at all on 2026-09-22. The hold cannot +bind on a booth with no marks, so at that population the mechanism can touch at +most a sixth of the fleet, and an effect smaller than one or two booths is not +resolvable by any of these counts. Related: `[[2026-09-22-forever-had-a-live-positive-control]]`. diff --git a/persistent-memory.md b/persistent-memory.md index 715e163..21ba807 100644 --- a/persistent-memory.md +++ b/persistent-memory.md @@ -29,9 +29,11 @@ _As of 2026-09-22:_ `c3a97c1` is the unit; the release commit carries the pre-existing fixes the bug-hunt panel surfaced in touched files. The tag waited for the last gate to close, per the `v0.2.0` lesson — see Tried and abandoned. -- ⚠ **The 17 consuming handles have NOT been told** that `keep` no longer means - "waiting on an answer". That is the one coordination this release genuinely - warrants, and a fleetwide post needs operator approval before it is sent. +- ⚠ **The 17 consuming handles are NOT being told** that `keep` no longer means + "waiting on an answer" — operator decision, 2026-09-22, no broadcast. This is + deliberate and it CHANGES HOW THE 2026-10-06 RE-COUNT READS: the hold rides + for free, but not-pressing-`keep` has to be learned, so a flat `.forever` rate + does not falsify anything. Read its entry before measuring. - **THE NEXT UNIT IS THE OPERATOR'S CALL.** U3 (declared embed seam) and U6 (benches) are both unblocked; U7 waits on the rest. U6 is independent of everything and was conceptually unblocked by U5 giving job 5 a home; U3 is @@ -64,6 +66,7 @@ _As of 2026-09-22:_ - `[2026-09-22]` **U4 landed — lifetime is derived, not declared** — three states, viewing is activity, and no new arithmetic anywhere → `persistent-memory.d/2026-09-22-u4-derived-lifetime-landed.md` - `[2026-09-22]` **The `.forever` diagnosis got a live positive control** — 3 of the 4 booths awaiting an answer were ALSO hand-pinned — RE-COUNT 2026-10-06 → `persistent-memory.d/2026-09-22-forever-had-a-live-positive-control.md` +- `[2026-09-22]` **No fleetwide notice for U4, and what that does to the prediction** — READ BEFORE THE 2026-10-06 RE-COUNT; a flat rate does not falsify the diagnosis → `persistent-memory.d/2026-09-22-no-notice-and-what-it-does-to-the-prediction.md` - `[2026-09-22]` **Four independent paths to one fail-open delete** — the bug-hunt panel's class, and the zsh word-splitting trap that shipped an empty bundle → `persistent-memory.d/2026-09-22-four-paths-to-one-fail-open-delete.md` - `[2026-09-22]` **Two reads of one file are not one read of one state** — a TOCTOU seam that composes two correct readers into a fail-open delete → `persistent-memory.d/2026-09-22-two-reads-are-not-one-state.md` - `[2026-09-22]` **Five of seven INV falsifiers did not falsify anything** — read before writing a *Falsifiable:* line; a green test cited one rather than being one → `persistent-memory.d/2026-09-22-vacuous-falsifiers.md`