docs: Stage 0 --- sweep the discoverability class instead of one site at a time
Three review rounds have each surfaced one more instance of the same false claim, so this commit greps the class rather than fixing the site that was reported. §4's beginner inventory carried THREE, in a single bullet: "neither is advertised anywhere but the keymap", "terminal ✓ but M-x-only", and "build ✓ but M-x-only with empty prompt". All three are false. `C-x C-f` and `C-c t` and `C-c c` are in the welcome's key table DIRECTLY, `C-x d` is advertised transitively, and the build prompt is prefilled from the detected project kind. Every one was answered by the welcome buffer and by those two bindings --- the same fixes the paragraph after §2's audit quote already records as landed. They survived because a level-by-level inventory was never re-run against them, which is the failure mode this document is otherwise good at naming. A fourth was MINE. The superseded table's step 11 row said `*workers*` has "no keybinding"; I wrote that two commits ago, before the route/binding/opens-it distinction existed, and it did not get corrected when the other four sites did. Now: no binding that OPENS it, with `C-c C-k` noted as working buffer-locally once inside. One "M-x-only" is left standing because it is TRUE: project.search has no binding that invokes it. Its `RET`/`n`/`p` bindings are buffer-local inside the results buffer --- exactly the inside-versus-opens shape that `*workers*` has, checked rather than assumed while sweeping. The pattern across all seven sites is one thing: "advertised" had no definition in this document until §2b needed one, so nothing could be measured against it and every claim about it drifted. Defining the term is what made them findable, and the first act of a checkable claim is to fail. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
b618b32166
commit
25bdc3abfd
22
COHERENCE.md
22
COHERENCE.md
|
|
@ -578,7 +578,7 @@ Full verdict table:
|
||||||
| 8 | Open terminal | **Works** | Full PTY with scrollback + modeline segment, bound to `C-c t` and configurable through three registered settings (`terminal.default-profile`, `terminal.scrollback-rows`, `terminal.escape-key`) plus named `pmacs.terminal.profiles` (PR #173), and searchable through `M-x terminal.copy-mode` / `C-c C-t`, which materializes the retained scrollback into an ordinary read-only buffer (Stage 2). Named limitations: `C-c t` is unreachable from *inside* a terminal window, where `C-c` is consumed as the escape — `M-x terminal` still works there; and `C-c t` is not re-advertised there. **The "no close/kill command" claim previously recorded here was false**: `M-x buffer.kill-this` is global (`builtin/commands/default.lua:1209`) and killing a terminal buffer prunes the session and reaps the owned process (`tests/vterm_stage1_acceptance.rs:336`). Corrected in place because it is a statement about the tree, not a historical grade. *Was broken outright on the GPU frontend until the double terminal-layout sync was fixed: the child took a `SIGWINCH` storm at tick cadence, so typing into it was impossible while output still flowed.* |
|
| 8 | Open terminal | **Works** | Full PTY with scrollback + modeline segment, bound to `C-c t` and configurable through three registered settings (`terminal.default-profile`, `terminal.scrollback-rows`, `terminal.escape-key`) plus named `pmacs.terminal.profiles` (PR #173), and searchable through `M-x terminal.copy-mode` / `C-c C-t`, which materializes the retained scrollback into an ordinary read-only buffer (Stage 2). Named limitations: `C-c t` is unreachable from *inside* a terminal window, where `C-c` is consumed as the escape — `M-x terminal` still works there; and `C-c t` is not re-advertised there. **The "no close/kill command" claim previously recorded here was false**: `M-x buffer.kill-this` is global (`builtin/commands/default.lua:1209`) and killing a terminal buffer prunes the session and reaps the owned process (`tests/vterm_stage1_acceptance.rs:336`). Corrected in place because it is a statement about the tree, not a historical grade. *Was broken outright on the GPU frontend until the double terminal-layout sync was fixed: the child took a `SIGWINCH` storm at tick cadence, so typing into it was impossible while output still flowed.* |
|
||||||
| 9 | Build / test | **Works** | Journey Stage 1b-1 (#203): `C-c c` runs `compile.run`, and the first prompt is prefilled from the detected project kind (`pmacs.compile.defaults`, seeded `rust = "cargo build"`, extensible from `init.lua`) via `ProjectKind::Rust` — **not** `Cargo`, see §24. The prompt **captures** its directory rather than re-resolving at accept time, so the command it offers and the directory it runs in cannot drift while the minibuffer waits. Still defaults cwd to the detected project root and parses Rust `-->` errors. Named limitation: after `pmacs <dir>` the active buffer is dired's and pathless, so the cwd falls back to the process cwd — §8's execution-location model owns that, and the degradation stays coherent (no suggestion is offered for a directory with no detected Cargo project) |
|
| 9 | Build / test | **Works** | Journey Stage 1b-1 (#203): `C-c c` runs `compile.run`, and the first prompt is prefilled from the detected project kind (`pmacs.compile.defaults`, seeded `rust = "cargo build"`, extensible from `init.lua`) via `ProjectKind::Rust` — **not** `Cargo`, see §24. The prompt **captures** its directory rather than re-resolving at accept time, so the command it offers and the directory it runs in cannot drift while the minibuffer waits. Still defaults cwd to the detected project root and parses Rust `-->` errors. Named limitation: after `pmacs <dir>` the active buffer is dired's and pathless, so the cwd falls back to the process cwd — §8's execution-location model owns that, and the degradation stays coherent (no suggestion is offered for a directory with no detected Cargo project) |
|
||||||
| 10 | Inspect error | **Partial (good once reached)** | `E:n W:n` modeline counts, underlines, `M-g n/p` + ``C-x ` `` walking a unified compile/grep/diag source, message echo, `RET` visits. Gated entirely on step 6 or 9 succeeding first |
|
| 10 | Inspect error | **Partial (good once reached)** | `E:n W:n` modeline counts, underlines, `M-g n/p` + ``C-x ` `` walking a unified compile/grep/diag source, message echo, `RET` visits. Gated entirely on step 6 or 9 succeeding first |
|
||||||
| 11 | See background work | **Partial** | **Statusline activity indicator since #232** — in-flight count plus the oldest job's purpose, absent entirely when idle, through `ui.activity-indicator`. `*workers*` view via `M-x editor.list-workers`, **still with no keybinding**; `C-c C-k` cancel-at-point. *Was "Works but undiscoverable — no statusline spinner/progress indicator anywhere"; #232 shipped exactly that indicator on 2026-08-09 and the row went stale the same day* |
|
| 11 | See background work | **Partial** | **Statusline activity indicator since #232** — in-flight count plus the oldest job's purpose, absent entirely when idle, through `ui.activity-indicator`. `*workers*` view via `M-x editor.list-workers`, **with no binding that OPENS it**; `C-c C-k` cancel-at-point works buffer-locally once inside. *Was "Works but undiscoverable — no statusline spinner/progress indicator anywhere"; #232 shipped exactly that indicator on 2026-08-09 and the row went stale the same day* |
|
||||||
| 12 | Close + restore | **Partial** | Per-file cursor+scroll (saveplace), recent files, minibuffer history, autosave recovery all restore zero-config. Open-buffer set and window layout do **not**: desktop-save is opt-in (`pmacs.session.desktop_mode(true)`) *and* a documented no-op under a daemon (`src/desktop.rs:323-326`, `:353-356`, Q#DS9) |
|
| 12 | Close + restore | **Partial** | Per-file cursor+scroll (saveplace), recent files, minibuffer history, autosave recovery all restore zero-config. Open-buffer set and window layout do **not**: desktop-save is opt-in (`pmacs.session.desktop_mode(true)`) *and* a documented no-op under a daemon (`src/desktop.rs:323-326`, `:353-356`, Q#DS9) |
|
||||||
|
|
||||||
A journey observation worth keeping verbatim from the audit:
|
A journey observation worth keeping verbatim from the audit:
|
||||||
|
|
@ -678,10 +678,22 @@ level is the one missing. Audited level-by-level:
|
||||||
build actions, menus, missing-tool guidance):
|
build actions, menus, missing-tool guidance):
|
||||||
|
|
||||||
- files ✓ since #162 / #165 (`C-x C-f` opens a path, `C-x d` browses;
|
- files ✓ since #162 / #165 (`C-x C-f` opens a path, `C-x d` browses;
|
||||||
neither is advertised anywhere but the keymap) · buffers ✓ (`C-x
|
**both are advertised** — `C-x C-f` directly in the welcome's key
|
||||||
b`, `*buffer-list*`) · search ✓ (`C-s`/`C-r`/`C-M-s`; project.search
|
table, `C-x d` transitively through `M-x help` →
|
||||||
is M-x-only) · diagnostics ✓ once a server runs · terminal ✓ but
|
`help.list-keybindings`) · buffers ✓ (`C-x b`, `*buffer-list*`) ·
|
||||||
M-x-only · build ✓ but M-x-only with empty prompt · menus △
|
search ✓ (`C-s`/`C-r`/`C-M-s`; project.search is M-x-only) ·
|
||||||
|
diagnostics ✓ once a server runs · terminal ✓ **and advertised**
|
||||||
|
(`C-c t`, in the welcome) · build ✓ **and advertised** (`C-c c`, in
|
||||||
|
the welcome; the prompt is **prefilled from the detected project
|
||||||
|
kind**, not empty) · menus △
|
||||||
|
|
||||||
|
*Three claims in this bullet were false and are corrected together:
|
||||||
|
"neither is advertised anywhere but the keymap", "terminal ✓ but
|
||||||
|
M-x-only", and "build ✓ but M-x-only with empty prompt". All three
|
||||||
|
were answered by the welcome buffer and by `C-c t`/`C-c c` — the very
|
||||||
|
fixes the paragraph after §2's audit quote already records as
|
||||||
|
landed. They survived because a level-by-level inventory was never
|
||||||
|
re-run against them.*
|
||||||
(right-click only, 11 items) · missing-tool guidance ✗ (§1.2).
|
(right-click only, 11 items) · missing-tool guidance ✗ (§1.2).
|
||||||
|
|
||||||
**Intermediate** (should discover: palette, keybinding search, workspace
|
**Intermediate** (should discover: palette, keybinding search, workspace
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue