docs: Stage 0 --- `*workers*` has a binding; what it lacks is one that OPENS it

"`*workers*` has no binding at all" was false. The view carries a
buffer-local `C-c C-k` for `workers.cancel-at-point`
(`builtin/runtime/async.lua`, documented at `docs/keybindings.md:282`).
Corrected at all four sites it had spread to: the table row, the
contract paragraph, the summary, and the framing's historical example.

The absent thing is narrower and is now said precisely: NO BINDING
OPENS `editor.list-workers`. A binding that only works once you are
already inside the view cannot satisfy a discoverability subclaim ---
which is the same shape as the route-versus-binding distinction the
previous commit drew, one level further in. A route reaches the view
but is not a binding; `C-c C-k` is a binding but does not reach it.
11(c) asks for the conjunction, and neither half alone supplies it.

The Missing grade is unchanged, and so is the two-step GPU deficit. What
changes is that the row now states a fact about the tree rather than an
overstatement that happened to point at the right grade --- which is the
distinction this table exists to hold, since a grade resting on a false
premise is not falsifiable, it is merely unfalsified.

Left alone deliberately: the audit quote at COHERENCE.md:562, where
"no bindings at all" refers to opening a file, opening a terminal and
running a build. That is a historical observation about OTHER commands,
and the paragraph immediately below it already records that all three
were answered.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
Levi Neuwirth 2026-08-11 20:32:03 +02:00
parent 926ac75def
commit be73766638
No known key found for this signature in database
2 changed files with 16 additions and 7 deletions

View File

@ -452,8 +452,12 @@ is what produced the earlier `Partial` at steps 4 and 7.
**A binding is a stronger claim than a route, and 11(c) asks for the **A binding is a stronger claim than a route, and 11(c) asks for the
binding.** That is why step 11 still fails while step 7 passes: both are binding.** That is why step 11 still fails while step 7 passes: both are
reachable through the help graph, but `*workers*` has **no binding for reachable through the help graph, but **no binding reaches
any listing to name**. `editor.list-workers`**. `*workers*` is not binding-free — it carries a
buffer-local `C-c C-k` for `workers.cancel-at-point`
(`async.lua`; `docs/keybindings.md:282`) — and that binding lives
*inside* the view, so it cannot help anyone find it. The absent thing is
specifically **a binding that opens it**.
| # | Step | local TUI | attached TUI | GPU | binding subclaim | | # | Step | local TUI | attached TUI | GPU | binding subclaim |
|---|---|---|---|---|---| |---|---|---|---|---|---|
@ -467,7 +471,7 @@ any listing to name**.
| 8 | Open terminal | Works | Works | Works | 8(c) satisfied by the **global** `M-x buffer.kill-this` (`default.lua:1209`); killing a terminal buffer prunes the session and reaps the process (`vterm_stage1_acceptance.rs:336`). 8(c) never required a terminal-*specific* command. 8(d) passes on the welcome's `C-c t` | | 8 | Open terminal | Works | Works | Works | 8(c) satisfied by the **global** `M-x buffer.kill-this` (`default.lua:1209`); killing a terminal buffer prunes the session and reaps the process (`vterm_stage1_acceptance.rs:336`). 8(c) never required a terminal-*specific* command. 8(d) passes on the welcome's `C-c t` |
| 9 | Build / test | Works | Works | Works | 9(d) passes on the welcome's `C-c c` entry, not on the bare binding; 9(a) runs in the detected project's context | | 9 | Build / test | Works | Works | Works | 9(d) passes on the welcome's `C-c c` entry, not on the bare binding; 9(a) runs in the detected project's context |
| 10 | Inspect error | Works | Works | Works | all of 10(a–c) hold. *Being gated on step 6 or 9 is a **dependency, not a subclaim**, and §2a's membership rule forbids an annotation from lowering a grade — an earlier draft let it do exactly that. Grading the dependency would require adding it as a subclaim first* | | 10 | Inspect error | Works | Works | Works | all of 10(a–c) hold. *Being gated on step 6 or 9 is a **dependency, not a subclaim**, and §2a's membership rule forbids an annotation from lowering a grade — an earlier draft let it do exactly that. Grading the dependency would require adding it as a subclaim first* |
| 11 | Understand background work | **Missing** | **Missing** | **Missing** | 11(c) — the `*workers*` view has **no binding at all**, so a keybinding listing cannot reveal it: the subclaim is **absent**, not degraded, and it floors the cell. 11(b) fails too — #232 gives **purpose**, never an accountable **owner**, and the planes stay disjoint (jobs in `*workers*`, processes in `pmacs.process.list`, servers in `*lsp*`, terminals **nowhere**). 11(a) passes on the activity indicator | | 11 | Understand background work | **Missing** | **Missing** | **Missing** | 11(c) — **no binding opens `editor.list-workers`**, so a keybinding listing cannot lead anyone to it: the subclaim is **absent**, not degraded, and it floors the cell. *The view is not binding-free — `C-c C-k` runs `workers.cancel-at-point` buffer-locally inside it (`docs/keybindings.md:282`) — but a binding that only works once you are already there cannot satisfy a discoverability subclaim.* 11(b) fails too — #232 gives **purpose**, never an accountable **owner**, and the planes stay disjoint (jobs in `*workers*`, processes in `pmacs.process.list`, servers in `*lsp*`, terminals **nowhere**). 11(a) passes on the activity indicator |
| 12 | Close + restore | **Partial** | **Missing** | **Missing** | 12(c) — local restores nothing beyond per-file state (desktop-save is opt-in); on **both daemon-backed frontends it is a structural no-op** (Q#DS9), so they fail it **by construction** | | 12 | Close + restore | **Partial** | **Missing** | **Missing** | 12(c) — local restores nothing beyond per-file state (desktop-save is opt-in); on **both daemon-backed frontends it is a structural no-op** (Q#DS9), so they fail it **by construction** |
**Closure condition 2 currently FAILS, at exactly two steps.** GPU is **Closure condition 2 currently FAILS, at exactly two steps.** GPU is
@ -481,9 +485,11 @@ is a property of the tree rather than of the grader.
**The journey's two worst steps are frontend-INDEPENDENT**, and that is **The journey's two worst steps are frontend-INDEPENDENT**, and that is
the table's other finding. Steps 6 and 11 grade `Missing` in all three the table's other finding. Steps 6 and 11 grade `Missing` in all three
columns: language intelligence dies silently after a server crash, and columns: language intelligence dies silently after a server crash, and
background work has no advertised **binding** — a route exists **no binding opens** the background-work view — a route exists
(`M-x help` → `help.list-commands` → `editor.list-workers`), which is (`M-x help` → `help.list-commands` → `editor.list-workers`), and a
why 11(c)'s wording asks for a binding and not a route. Neither is GUI work, buffer-local `C-c C-k` exists *within* the view, but nothing bound leads
to it. That is why 11(c) asks for a binding rather than a route, and why
the binding it asks for is one that **reaches** the view. Neither is GUI work,
neither is closed by this arc, and both were previously carried as neither is closed by this arc, and both were previously carried as
`Partial` — which is how they stayed off the critical path. `Partial` — which is how they stayed off the critical path.

View File

@ -427,7 +427,10 @@ step. They quote the **pre-Stage-0** verdict strings, not today's table:
`help.list-keybindings`, which names every registered binding. `help.list-keybindings`, which names every registered binding.
- **Step 11** — the row then read "**Works but undiscoverable**". Same - **Step 11** — the row then read "**Works but undiscoverable**". Same
shape, and here the outcome **stands**: Stage 0 also graded it shape, and here the outcome **stands**: Stage 0 also graded it
`Missing`, because `*workers*` has no binding for any listing to name. `Missing`, because **no binding opens `editor.list-workers`** for a
listing to name. The view does carry a buffer-local `C-c C-k`
(`workers.cancel-at-point`), which is reachable only once you are
already inside it.
The rule these examples exist to establish is untouched by either The rule these examples exist to establish is untouched by either
outcome: **the head-grade rule would have graded both `Works`**, and outcome: **the head-grade rule would have graded both `Works`**, and