docs: Stage 0 --- correct three claims the tree had already falsified

Rebased onto e67ad07; the framing commit replayed with no conflict.

Three corrections, each verified against the tree rather than against
this lane's own notes:

COHERENCE.md said `v6..=v21` schema support. The ceiling moved TWICE
since: #221 to v22 for `LineWrapFacts`, #228 to v23 for
`MinibufferPromptRows`. Now v23. The same row's "production attach
remains v20" is correct --- `ADVERTISED_PROTOCOL_VERSION` is 20 --- and
is deliberately left alone.

Journey step 11 read "Works but undiscoverable --- no statusline
spinner/progress indicator anywhere". #232 shipped exactly that
indicator on 2026-08-09, so the row went stale the day it landed. Now
Partial, with what actually exists and what does not: the indicator is
there, the `*workers*` view still has no keybinding.

§9's "No progress indicator exists anywhere" carried the grep that was
the evidence for opening worker identity in the first place. Corrected,
with the part that did NOT change stated as plainly: a purpose says
what a job is doing, never who asked, and attribution is what §9
grades. THE SECTION'S GRADE IS LEFT UNTOUCHED pending a re-audit ---
moving a grade is an audit act, not a documentation correction, and
Stage 0 is docs-only.

U9's row claimed "whatever this is, it is not the tree" about a
same-tree green. This file's own rerun rule forbids that: a same-tree
green establishes intermittence only, and a tree can raise an
intermittent failure RATE without making it deterministic. Replaced
with "not deterministic on this tree; causation and rate effect
unresolved", and the wrong claim is quoted rather than deleted, because
it is the one a later reader would otherwise reach for.

Also corrects this lane's own earlier claim that `add0ba1` had done
half of Stage 0's absorption. It absorbed #227 and #234; five stale
lanes and both COHERENCE corrections remained.

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 18:18:17 +02:00
parent d2c51338fb
commit 9460bf721c
No known key found for this signature in database
3 changed files with 49 additions and 11 deletions

View File

@ -109,7 +109,7 @@ remain open to them.
| 13 | Package lifecycle UX | **Resolution without lifecycle** | Mature resolver/lockfile; init-only install; no uninstall/disable/search |
| 14 | Workbench primitives | **Partial (best trajectory)** | Listview is a real primitive but only **4** call sites, all LSP panels (`*lsp*` added post-audit by #204); buffer-list and search re-implement it; **the bottom panel is COMPLETE — both frontends, and Stage 3 flipped the adopter default so omission means the panel**. **Tree is implemented (◐) with the LSP outline as its one adopter; the remaining consumers, including dired's `i`, have not adopted** |
| 15 | Contextual affordances | **Weak** | Right-click menu only; code actions apply first-blindly; no git integration at all |
| 16 | Semantic frontend | **Strong** | v6..=v21 schema support; production attach remains v20 during the dark panel slice; degradation practiced |
| 16 | Semantic frontend | **Strong** | v6..=v23 schema support; production attach remains v20 during the dark panel slice; degradation practiced |
| 17 | Distribution | **Partial** | **v1.1.0 ships prebuilt Linux/macOS binaries on tag** (#211) with checksums and a stated glibc floor. No channels, in-place update, rollback, signing, or package-manager distribution |
| 18 | Onboarding | **Partial** | Journey Stage 1b-3: an unconfigured launch greets in `*scratch*` naming `M-x` and four real bindings, and `M-x help` renders a cheat sheet. Still no tutorial and `C-h` still deletes a word — deliberately, see §18 |
| 19 | Coherence acceptance tests | **Started** | `tests/journey_acceptance.rs` carries 45 pins over steps 2, 3, 4, 5, 6 and 9 — the ratchet is real and stages add rows to it. The other five §19 scenarios (workspace lifecycle, worker ownership, config provenance, package lifecycle, extension isolation) are still unwritten |
@ -399,7 +399,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 there is still **no close/kill command**, which is the remaining half of this step's discoverability gap. *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) |
| 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 | **Works but undiscoverable** | `*workers*` view via `M-x editor.list-workers`; `C-c C-k` cancel-at-point. No keybinding, no statusline spinner/progress indicator anywhere (§9) |
| 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* |
| 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:
@ -1008,13 +1008,31 @@ editor.list-workers`, auto-refreshing, `C-c C-k` cancel-at-point).
A terminal PTY appears in **no** user-visible activity view. An LSP
server appears in `*lsp*` (unreachable) and `list()`; its requests
appear in `*workers*`; nothing joins them.
- **No progress indicator exists anywhere** — no statusline spinner,
no busy count (grep for progress/spinner/busy in `src/statusline.rs`
is empty). "Visible asynchronous work" (§3) is currently false unless
the user knows to run `M-x editor.list-workers`.
- `ProcessSpec.label` is the nearest thing to attribution: caller-
supplied, unvalidated convention (`lsp:{name}`, terminal buffer
name).
- **A progress indicator now exists (#232, 2026-08-09)** — a statusline
provider rendering the in-flight count and the **oldest** job's
purpose, absent when idle, gated by `ui.activity-indicator`. So
"visible asynchronous work" (§3) is **no longer false**: activity is
visible without knowing to run `M-x editor.list-workers`, though that
view still has no keybinding of its own.
*This bullet previously read "No progress indicator exists anywhere —
no statusline spinner, no busy count (grep … is empty)". That grep was
the evidence for opening §9's worker-identity work, and #232 is what
answered it.* **The indicator's first act was to expose three months
of invisible LSP file-watcher polling (issue #233)** — which is §9's
own argument, demonstrated.
- **`purpose` is now required** on every job and process (#232), through
a single allocation funnel with no `Default`, so the compiler proves
every caller supplies one. That is a real per-job description where
there was none.
- **Attribution is still missing, and that is what §9 grades.** A
purpose says what a job is *doing*; it does not say **who asked** —
no owner, no parent, no package. `ProcessSpec.label` remains a
caller-supplied, unvalidated convention (`lsp:{name}`, terminal
buffer name). **This section's grade is left untouched pending a
re-audit**: the mechanism-without-identity finding is *partly*
answered, and moving a grade is an audit act, not a documentation
correction.
The audit's conclusion, worth preserving verbatim: *because identity is
missing, scoped cancellation has nothing to scope over and a unified

View File

@ -243,13 +243,25 @@ hazard in a shape that looks committed. **A documented error message
that never appears is worse than no documentation**, because the reader
waits for a signal that is not coming.
## The GUI arc — Stage 0 branch OPEN, PARKED behind #227, no PR yet
## The GUI arc — Stage 0 branch OPEN, UNPARKED 2026-08-11, absorption underway
**Written at the branch's first commit**, with the framing, which is
what this arc's own §5 requires of every PR in it. The standing
correction from #171 and #215 was missed at #224 and #225; this lane
exists to stop the streak rather than to note it again.
**The park is discharged**: #227 merged as `b867f64`, and the
file-watcher arc (#233) closed via #234 and #235. Rebased onto
`e67ad07`; the single framing commit replayed with no conflict.
**Stage 0's absorption scope was RE-DERIVED from the tree rather than
taken from this lane's own earlier text, and the earlier text was
wrong in the optimistic direction.** `add0ba1` absorbed **#227 and
#234 only**; a reading of its −532-line diff as "half of Stage 0's
absorption" was too generous. Five stale lanes remain below, and two
`COHERENCE.md` corrections had not been made at all. What is done here
is listed at the commit that does it, not promised here.
- **Branch `gui-arc-stage0`**, base `githubsucks/main` @ `0e4c58d` (the
#231 merge). **`githubsucks/gui-arc-stage0` is the authoritative
tip** — the ref, not a SHA. Recover with

View File

@ -801,7 +801,15 @@ only compare a red run against a *different* run. Here both selectors
ran green **inside the same gate invocation**, minutes earlier, on the
same tree and machine — `03-lib` (1928 passed, 0 failed) and
`04-lib-crdt` (2113 passed, 0 failed) — and then failed in `11-sweep`.
Whatever this is, it is not the tree.
So this is **not deterministic on this tree; causation and any rate
effect are unresolved.**
*The original wording here was "whatever this is, it is not the tree",
which this file's own rerun rule forbids: a same-tree green establishes
**intermittence only**, and a tree can raise an intermittent failure
**rate** without making it deterministic. Same-tree greens cannot
exonerate the tree. Corrected rather than deleted, because the wrong
claim is the one a later reader would otherwise reach for.*
| field | value |
|---|---|