From 0e260e03773920fadb473c5ba124c60d905b218f Mon Sep 17 00:00:00 2001 From: Levi Neuwirth Date: Sun, 9 Aug 2026 13:55:17 +0200 Subject: [PATCH] docs: clear three stale references revision 3 left behind Revision 3 corrected the cache model in section 3.2 and the clipping rule in 3.4, then failed to propagate either. Internal contradictions in a framing document are worse than the original errors: a later reader resolves them by picking whichever statement they read first. - Q#D2-4 still summarised the design as "per-variant cache keys", contradicting 3.2's corrected one-per-peer model. Now names the `peer_knows_minibuffer_rows` producer gate and the single per-peer cache, with a parenthetical recording that the sentence was stale rather than silently rewriting history. - Section 6 still required the cross-version cache test that revision 3 removed as unfalsifiable. Replaced with what IS assertable --- a v22 and a v23 peer attached simultaneously each receive their own variant and only their own --- and the bullet says why the other test is absent, so it does not get "restored" later by someone who notices the gap. - The active-work lane still called the framing revision 2. Swept for the same class of residue from the other two corrections ("the name must survive", "both frontends render"); the remaining hits are the notes ABOUT those corrections, which are deliberate. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai --- docs/active-work.md | 2 +- docs/discovery-stage2-framing.md | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/docs/active-work.md b/docs/active-work.md index 352eb53..23c7d20 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -275,7 +275,7 @@ from #171 and #215. tip** — the ref, not a SHA. Recover with `git fetch githubsucks && git checkout discovery-stage2`. -- **Framing `docs/discovery-stage2-framing.md`, revision 2**, in +- **Framing `docs/discovery-stage2-framing.md`, revision 3**, in review. Scope: `COHERENCE.md` §5's "M-x rows are still bare names". Descriptions already exist on `Command` and are already rendered by `help.list-commands`; they are missing at the one moment they would diff --git a/docs/discovery-stage2-framing.md b/docs/discovery-stage2-framing.md index a7b461a..993ab75 100644 --- a/docs/discovery-stage2-framing.md +++ b/docs/discovery-stage2-framing.md @@ -248,14 +248,19 @@ later. has yet asked to disable is how a registry becomes noise. If somebody wants it off, that is use evidence and a later one-line addition. -### Q#D2-4 — older frontends — **RESOLVED in rev 2, in §3.1–3.2** +### Q#D2-4 — older frontends — **RESOLVED, in §3.1–3.2** No longer open, and the revision-1 answer was wrong. "Gate the richer form at `>= 23`" would have **removed the minibuffer entirely** from every v12–v22 peer, because there would have been only one variant to gate. Compatibility requires the legacy shape to still exist and still -be sent — hence the additive `MinibufferPromptRows` variant, per-peer -selection, per-variant cache keys, and matched open/close families. +be sent — hence the additive `MinibufferPromptRows` variant, a +per-peer `peer_knows_minibuffer_rows` producer gate, **one per-peer +minibuffer cache**, and matched open/close families. + +*(Revision 2 said "per-variant cache keys" here. §3.2 corrected that in +revision 3 — the render state is per peer with its version baked in, so +a cache cannot span two versions — and this sentence was left stale.)* The `CompletionPopup` gate I proposed copying (`daemon-gated >= 15`) **is** the right precedent for *how to select per peer*; it is not a @@ -300,9 +305,12 @@ the temptation arrives with the feature. encoding changes. Two fixtures: an open prompt with candidates and a selection, and a cleared band — the two shapes the existing semantic test already covers, so the corpus is not a new judgement call. -- **The cache key is per variant**: a session that opens for a v23 peer - and a later one for a v22 peer are not suppressed as duplicates of - each other (§3.2). +- **No cross-version cache test.** Revision 2 required one; it asserts + a condition this architecture makes impossible (§3.2), and a test + that cannot fail passes forever while teaching the next reader that + the hazard is real. What *is* asserted is the producer gate: a v22 + peer and a v23 peer attached simultaneously each receive their own + variant and only their own. - **Close matches open**: a `MinibufferPromptRows` session is closed by its own family, witnessed by the popup actually clearing. - **The TUI renders `name — description` for the selected candidate**