diff --git a/PENDING.md b/PENDING.md index 14f23ea..c6d5a35 100644 --- a/PENDING.md +++ b/PENDING.md @@ -4813,6 +4813,27 @@ Link 1 to link 4 directly. **The trial built to test whether a fool could reach --- +### ⚖ The empty-window question — SETTLED 2026-08-25, and it needs no amendment + +**Question, banked before the beacon:** when the mumble ticks and nothing is in the window, does the tick **consume its draw** or **get skipped**? + +**Answer: it consumes. There is no skip branch, and none should be written.** Two reasons from §8's own text, and then the reason the case does not arise at all. + +**1 · Skipping re-keys frequency to content — the exact defect §8 was written to remove.** §8: *"Frequency and content are separated, which is what v1 conflated."* If an empty window suppresses the tick, utterance rate becomes a function of event presence: quiet days silent, busy days loud. That is v1's burst defect in mirror image, and §8's own diagnosis was that the fix *"is to restore the original generator, not to patch the re-keyed one."* A skip-on-empty branch is a patch on the re-keyed one. + +**2 · Skipping introduces state.** To skip is to decide not to draw. If the draw is not consumed it is conserved, and a conserved draw is a budget. §8: *"This has no memory and no budget, so the cadence stays unlearnable"* — and the hard daily cap was rejected in part because *"it also introduces a budget-spent state, which is memory, and memory is the beginning of learnability."* Same objection, same force, and it was already ruled once. + +**3 · The case does not arise.** The executor's four-way expansion (*what are the proportions of? what counts as content?*) collapsed once **material was settled as the live session** rather than as governance-events-since-last-tick. A session in progress always has material. The genuinely empty window is **no session** — and with the tick on the status line's own refresh, no session means no refresh, therefore no tick. **The mechanism excludes the case by construction rather than by rule**, which is why the correct answer adds nothing. + +⚠ **The degenerate case, named rather than glossed:** a session open but *idle* — the steward reading, not acting. The window holds no new events; the session still holds material. **That is not an empty window.** §8's *"in the room, hears everything"* property is precisely what covers it: presence does not require novelty. And since the refresh amendment moved the tick onto wall-clock-in-session, this is the **common** case, not the edge — the fool will often remark on something that has not changed, and that is the specification working, not failing. + +**If it reads as noise, §8 already names the lever, and it is not an emptiness check:** *"If it reads as noise, the interval lengthens — the proportions do not become adaptive."* + +**Filed as a DETERMINATION, not an amendment.** REVIEWED-125 binds that an answer requiring the trigger key to change is an amendment to §8 and must be filed as one. This answer changes no trigger key, adds no branch, and deletes a special case that was never specified — **the spec gets smaller.** ⚠ If the jurist reads it as an amendment nonetheless, **this is the block to strike**, and it should be struck rather than reinterpreted. + +**Consequence — §8a is unblocked.** Nothing in the body's rendering depends on window content, so the body renders identically whether or not the window holds events. The remaining §8a question is only *what the body renders when silent* (REVIEWED-125 condition 2: variation from time or nothing, never content). + + ## PENDING-153 — The Thistleweld kind-3 read: the arrangement critiqued from outside, and the record lost where it came from **Date:** 2026-08-22 **Tag:** [PROPOSAL] @@ -5005,3 +5026,65 @@ This is the shape census 01 already found: **decay, not construction, is how gat **Files affected:** `scripts/governance-drift-check.py` (parser, due-ness, register-integrity lane, selftest); `PENDING.md` — the one existing `DISCHARGED-DECISION` block reverts to `DEFERRED-DECISION` with `resolved:` set, which is also the migration's own test case. **Awaiting:** Steward authorization. **Not urgent, and not open-ended:** the condition that makes it urgent is a second trigger coming due, and there are three that can. + +--- + +## PENDING-158 — Negative state-claims carry no falsifier, and nothing in this system reads them +**Date:** 2026-08-25 +**Tag:** [HARDENING] +**Summary:** Governance documents routinely assert *"X has not happened"*; five such claims were found false in a single day, two of them stale for five days across a jurist ruling and multiple working sessions in the same directory. Every one was caught by a person opening the file for an unrelated reason. There is no mechanism that reads them. + +**The diagnosis changed under measurement, and that is the point of filing it.** The first reading was *negative-status lists are fragile* — a property of the lists, calling for care. That is wrong. The third instance occurred **inside the section that names the pattern**, written hours earlier, by an executor actively watching for it. Care does not fix this. The two five-day instances sat through a ruling and several sessions. **The property is not fragility. It is that nothing reads them.** + +**The five, all 2026-08-25:** + +| claim | in | false since | caught by | +|---|---|---|---| +| *"the target pulse has not been fetched"* | `FOOL-SEED-RULE.md` §6 | 12:00Z, same day | reopening the file for an unrelated `[FIX]` | +| *"No bones have been derived"* | `FOOL-SEED-RULE.md` §6 | 12:00Z, same day | same | +| *"the filed rule not edited"* | `FOOL-BONES` §7 | `5737d4d`, ~1 h | writing the name into the same file | +| *"No regeneration ruling"* | `FOOL-SOUL` §6 | the ruling itself | editing the file to record the ruling | +| *"the run is held"* ×3 lines | `trial-09-PRERUN-ADDENDUM`, `…JURIST-PACKAGE` | **2026-08-20 — five days** | a steward remark whose premise was wrong | + +⚠ **The last row is the load-bearing one.** It was found because the steward said trial 09 was unruled and unrecorded. **It was ruled** (REVIEWED-124, same day it was filed) **and the void was recorded** — in one document. Two others still said *held*. So the instinct was right, the premise was false, and **the only reason the truth surfaced was a wrong belief being stated out loud.** That is not a detection mechanism. + +### The asymmetry, which is the actual architectural finding + +`DEFERRED-DECISION` exists because the steward said *"I abhor deferring so many things and then forgetting them."* Its comment block states the principle exactly: *"A deferral is a claim: 'not yet'. When its trigger fires, the substrate contradicts that claim."* + +**A negative state-claim is the same sentence about a different object.** A deferral says *not yet* about a **decision**; a status line says *not yet* about a **state**. Same words, same forgetting, same substrate available to contradict them — and one has a machine-checkable trigger while the other has nothing. **The mechanism for this was built weeks ago and was never generalised past decisions.** + +### Proposal — `STATE-CLAIM`, reusing the deferral parser wholesale + +``` + +``` + +Identical shape, identical vocabulary, **`trigger_fired()` reused verbatim** — only the *meaning* of firing inverts: for a deferral, firing means *the decision is now due*; for a state-claim, firing means **the claim is now false**. Reported in its own line beside the deferral line. + +### Discriminating power, measured rather than asserted + +Run against the five instances above: + +- **3 of 5 fire on the EXISTING trigger vocabulary, unchanged** — the pulse, the bones, and the soul are each falsified by `path-exists` on a file that now exists. Verified by running the check, not by reasoning about it. +- **2 of 5 need two small new kinds**: `file-changed-since ` (the filed rule) and `text-present ` (the trial-09 hold, falsified by REVIEWED-124's existence). + +So: **60% coverage for near-zero new code; 100% for two trigger kinds of a few lines each.** + +### ⚠ What it cannot do, stated before anyone hopes otherwise + +- **It cannot check claims that have no mechanical falsifier.** `manual` is the honest recording for those, exactly as in the deferral schema — and a claim whose author *cannot name what would falsify it* has learned something worth knowing about the claim. +- **It only reads claims that opt in.** A status line with no block is as invisible as it is today. **This does not solve the class; it makes the class expressible.** Retrofitting is separate work and should not be smuggled in as though the schema did it. +- **The 57 figure is a grep, not a census.** `grep -E` over the governance tree returns 57 candidate negative-state claims. They are **not classified** and it is unknown how many are currently false; most are probably correct past-tense statements. Reporting it as "57 stale claims" would be the proxy-census error this record already carries twice. What the number establishes is only that **the volume is past what eye-checking reliably covers**, which is itself the argument. + +**Files affected:** `scripts/governance-drift-check.py` (parser reuse, one new report line, two new trigger kinds, selftest); no governance document need change until a claim opts in. + +**Relation to PENDING-157:** same file, same schema family, and **they should be ruled together** — 157 gives deferrals a resolution state, 158 gives states a falsifier. Ruling one without the other leaves the schema half-built in a way that invites a third patch later. + +**Required controls, per the standing rule that an absence is not evidence until the instrument is shown able to detect presence:** a positive control that a state-claim whose falsifier has fired **is** reported; a negative control that one whose falsifier has not fired is **not**; and a control that `manual` is listed-but-never-fired rather than silently dropped. + +**Awaiting:** Steward authorization, jointly with PENDING-157.