docs: Stage 0 --- a total grading rule, honest counts, and the recovery floor
The recovery authority contradicted itself in the direction that matters: the floor said `9a26ac8` while the operative check said `e67ad07`, so the stated floor would have ACCEPTED a tree missing everything since 2026-08-08. Floor and check are now both `e67ad07`. The exercise claim is corrected rather than quietly inherited. That paragraph argued its own value --- advancing the base is exactly when the procedure must be re-run --- and then presented a 2026-08-08 run at `9a26ac8` as if it covered today's base. It is now marked as the LAST exercise, with the advance to `e67ad07` recorded as an OUTSTANDING obligation. What is unverified is the procedure against the new base, not the SHA. The grading rule was not total. `Weak` required a non-empty blocker list and `Partial` named blockers, which left a real state ungraded: criterion 1 passing, blockers empty, criterion 3 failing or unassessed. The rule now turns on criterion 1 alone --- pass is `Partial`, fail is `Weak`, all-pass is `Strong` --- so every usable state is covered by exactly one grade. Criterion 1 is the right discriminator because it is the only one measuring the GPU AGAINST THE TUI; the others measure it against its own goals. Today's grade is unchanged and now derives. The listview counts were wrong because I used `grep -c`, which counts comment mentions. Four executable calls in `lsp.lua`, one in `git.lua` --- not five and four. The claim those numbers support is untouched: listview is no longer LSP-only. Two status claims corrected: the lane understated its own commits (15, actually 16), now stated AS OF a SHA so it cannot rot on the next commit; and the handoff said "Stage 0 in PR" when no PR exists --- "ready for PR (not yet opened)". The inference ruling is recorded where the flags live: they do not block this docs PR, they must be closed before the table is first enforced as a gate, 3(c) and 9 can change the deficit set, and 6(c) cannot change step 6 today but still owes evidentiary closure. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
30e22090ae
commit
c2b613c28d
31
COHERENCE.md
31
COHERENCE.md
|
|
@ -107,7 +107,7 @@ remain open to them.
|
||||||
| 11 | Config layering + provenance | **Partial (foundation only)** | Typed registry is right; 5 settings live in it; no value provenance |
|
| 11 | Config layering + provenance | **Partial (foundation only)** | Typed registry is right; 5 settings live in it; no value provenance |
|
||||||
| 12 | Profiles | **Missing** | One hardcoded default keymap; not a named concept |
|
| 12 | Profiles | **Missing** | One hardcoded default keymap; not a named concept |
|
||||||
| 13 | Package lifecycle UX | **Resolution without lifecycle** | Mature resolver/lockfile; init-only install; no uninstall/disable/search |
|
| 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 with call sites in **two** modules — `lsp.lua` (5) and **`git.lua` (4, `*git-status*`, #227)** — so it is **no longer LSP-only**; 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** |
|
| 14 | Workbench primitives | **Partial (best trajectory)** | Listview is a real primitive with executable call sites in **two** modules — `lsp.lua` (**4**) and **`git.lua` (1, `*git-status*`, #227)** — so it is **no longer LSP-only**; *(counted excluding comment mentions, which an earlier `grep -c` included)*; 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; **Git integration reaches status and diff (#227, Stage 1) and no further** — §15's ground truth is authoritative, and this row previously said "no git integration at all" |
|
| 15 | Contextual affordances | **Weak** | Right-click menu only; code actions apply first-blindly; **Git integration reaches status and diff (#227, Stage 1) and no further** — §15's ground truth is authoritative, and this row previously said "no git integration at all" |
|
||||||
| 16 | Semantic frontend | **Architectural: Strong · Product: Weak** | v6..=v23 schema support; production attach remains v20 during the dark panel slice; degradation practiced. **The two subgrades and the product criteria live in §16** — the row points there rather than carrying a grade of its own, so the GUI-as-a-product half cannot hide inside an architectural `Strong` |
|
| 16 | Semantic frontend | **Architectural: Strong · Product: Weak** | v6..=v23 schema support; production attach remains v20 during the dark panel slice; degradation practiced. **The two subgrades and the product criteria live in §16** — the row points there rather than carrying a grade of its own, so the GUI-as-a-product half cannot hide inside an architectural `Strong` |
|
||||||
| 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 |
|
| 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 |
|
||||||
|
|
@ -507,7 +507,15 @@ fails on GPU *alone*, so it is **frontend-local** — Stage 1d's IME work
|
||||||
closes it. A single merged TUI column would have shown two identical
|
closes it. A single merged TUI column would have shown two identical
|
||||||
red cells and no way to tell those apart.
|
red cells and no way to tell those apart.
|
||||||
|
|
||||||
**Inference flags.** GPU 3(c) is inferred **in both halves** —
|
**Inference flags — and when they must be closed (user ruling,
|
||||||
|
2026-08-11).** These do **not** block the Stage 0 docs PR. They **must**
|
||||||
|
be verified **before this table is first enforced as a release gate**.
|
||||||
|
**3(c) and 9 can change the deficit set**; **6(c) cannot change step 6's
|
||||||
|
grade today** — 6(e) already floors it at `Missing` on all three
|
||||||
|
frontends — but still needs evidentiary closure rather than standing
|
||||||
|
indefinitely as an assumption.
|
||||||
|
|
||||||
|
GPU 3(c) is inferred **in both halves** —
|
||||||
rendering and browsing interaction — as are GPU 9 (compile output
|
rendering and browsing interaction — as are GPU 9 (compile output
|
||||||
renders like any other daemon buffer) and GPU 6(c) (hover reaches the
|
renders like any other daemon buffer) and GPU 6(c) (hover reaches the
|
||||||
echo area as on the grid). All must be verified before this table is
|
echo area as on the grid). All must be verified before this table is
|
||||||
|
|
@ -1754,12 +1762,23 @@ grade. The product subgrade reads:
|
||||||
| grade | condition |
|
| grade | condition |
|
||||||
|---|---|
|
|---|---|
|
||||||
| **Strong** | all three criteria pass |
|
| **Strong** | all three criteria pass |
|
||||||
| **Partial** | criterion 1 passes — the GPU is nowhere *behind* the TUI — while blockers remain open |
|
| **Partial** | usable, criterion 1 **passes**, and not all three criteria pass |
|
||||||
| **Weak** | criterion 1 fails at one or more steps **and** the blocker list is non-empty |
|
| **Weak** | usable and criterion 1 **fails** at one or more steps |
|
||||||
| **Missing** | no usable graphical frontend |
|
| **Missing** | no usable graphical frontend |
|
||||||
|
|
||||||
**Current: Weak** — criterion 1 fails at two known steps, and nine
|
**The rule is TOTAL by construction** — every usable state is covered by
|
||||||
blockers are open including the one-window ceiling. The distinction that
|
exactly one of `Partial`/`Weak`/`Strong`, since criterion 1 either
|
||||||
|
passes or fails and `Strong` is the all-pass case. An earlier draft
|
||||||
|
required a non-empty blocker list for `Weak` and named blockers in
|
||||||
|
`Partial`, which left a real state ungraded: criterion 1 passing with an
|
||||||
|
empty blocker list but criterion 3 failing or unassessed. Criterion 1 is
|
||||||
|
the discriminator because it is the only one that measures the GPU
|
||||||
|
*against the TUI*; the others measure it against its own goals.
|
||||||
|
|
||||||
|
**Current: Weak** — criterion 1 fails at two known steps. (Nine
|
||||||
|
blockers are open including the one-window ceiling; under the total rule
|
||||||
|
they no longer *derive* the grade, but they are why it is not close to
|
||||||
|
`Strong`.) The distinction that
|
||||||
matters is between `Weak` and `Partial`: the GPU is not merely
|
matters is between `Weak` and `Partial`: the GPU is not merely
|
||||||
*unfinished*, it is **behind a frontend that ships in the same binary**,
|
*unfinished*, it is **behind a frontend that ships in the same binary**,
|
||||||
and that is what the ceiling and the two failing steps say.
|
and that is what the ceiling and the two failing steps say.
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ lesson, §1 for the two framings).
|
||||||
where they describe a stage as it landed** — only this
|
where they describe a stage as it landed** — only this
|
||||||
current-state paragraph tracks the live range.
|
current-state paragraph tracks the live range.
|
||||||
**The recovery floor advances with the base**, so the check below
|
**The recovery floor advances with the base**, so the check below
|
||||||
now requires `9a26ac8` or newer; a tree at `db1bbe9` no longer
|
now requires **`e67ad07`** or newer; a tree at `db1bbe9` no longer
|
||||||
passes — it would lack the entire QoL arc, which this file and the
|
passes — it would lack the entire QoL arc, which this file and the
|
||||||
handoff both describe as complete. That is deliberate — a check accepting an older commit than
|
handoff both describe as complete. That is deliberate — a check accepting an older commit than
|
||||||
the declared base passes on a tree the rest of this file does not
|
the declared base passes on a tree the rest of this file does not
|
||||||
|
|
@ -220,9 +220,14 @@ declares canonical will pass on a tree the rest of this file does not
|
||||||
describe.
|
describe.
|
||||||
If it does not, stop and repair the remote/fetch configuration.
|
If it does not, stop and repair the remote/fetch configuration.
|
||||||
|
|
||||||
**This path was exercised, not asserted, at this snapshot** — re-run
|
**LAST EXERCISED AT `9a26ac8`, 2026-08-08** — re-run from an empty
|
||||||
from an empty directory on 2026-08-08 when the base advanced to
|
directory rather than having its SHA swapped. **The advance to
|
||||||
`9a26ac8`, rather than having its SHA swapped. That distinction is the
|
`e67ad07` (2026-08-11) has NOT been re-exercised**, and by this
|
||||||
|
paragraph's own argument that is exactly when the exercise matters, so
|
||||||
|
it is recorded as an outstanding obligation rather than left to read as
|
||||||
|
though it had been done. The floor above and the check below are in
|
||||||
|
step at `e67ad07`; what is unverified is the *procedure* against that
|
||||||
|
base, not the SHA. That distinction is the
|
||||||
whole point of this paragraph: advancing the base is exactly when the
|
whole point of this paragraph: advancing the base is exactly when the
|
||||||
recovery commands are most likely to have rotted, and a swapped SHA
|
recovery commands are most likely to have rotted, and a swapped SHA
|
||||||
reads identically to a verified one. `git clone` the canonical URL, add
|
reads identically to a verified one. `git clone` the canonical URL, add
|
||||||
|
|
@ -278,8 +283,10 @@ is listed at the commit that does it, not promised here.
|
||||||
its first commit until #227 merged, because #227 was 72 `main` commits
|
its first commit until #227 merged, because #227 was 72 `main` commits
|
||||||
behind and touched the three files Stage 0's absorption rewrites.
|
behind and touched the three files Stage 0's absorption rewrites.
|
||||||
#227 merged (`b867f64`), #233's arc closed (#234, #235), this branch
|
#227 merged (`b867f64`), #233's arc closed (#234, #235), this branch
|
||||||
rebased onto `e67ad07`, and the absorption ran. **15 commits above the
|
rebased onto `e67ad07`, and the absorption ran. **Sixteen commits
|
||||||
base; ready for its PR.**
|
above the base as of `30e2209`; ready for its PR.** *(Anchored to a
|
||||||
|
SHA deliberately: a bare running count goes stale on the next commit,
|
||||||
|
which is the staleness class this lane exists to retire.)*
|
||||||
- **What landed (docs only, no `src/`):** the absorption pass
|
- **What landed (docs only, no `src/`):** the absorption pass
|
||||||
enumerated in the framing's §5 — five stale lanes, the
|
enumerated in the framing's §5 — five stale lanes, the
|
||||||
authority/recovery anchor, `COHERENCE.md`'s `v6..=v21` → `v6..=v23`,
|
authority/recovery anchor, `COHERENCE.md`'s `v6..=v21` → `v6..=v23`,
|
||||||
|
|
|
||||||
|
|
@ -3195,7 +3195,7 @@ servers.
|
||||||
|
|
||||||
## 6. Named deferrals (the standing backlog, consolidated)
|
## 6. Named deferrals (the standing backlog, consolidated)
|
||||||
|
|
||||||
**The GUI arc — OPEN, framing approved 2026-08-10, Stage 0 in PR.**
|
**The GUI arc — OPEN, framing approved 2026-08-10, Stage 0 READY FOR PR (not yet opened).**
|
||||||
`docs/gui-arc-framing.md` is the arc-level frame and is also Stage 0's
|
`docs/gui-arc-framing.md` is the arc-level frame and is also Stage 0's
|
||||||
own framing; Stages 1–10 each need their own before their branch. It
|
own framing; Stages 1–10 each need their own before their branch. It
|
||||||
opened from a daily-driver report: the TUI is daily-drivable, the GUI is
|
opened from a daily-driver report: the TUI is daily-drivable, the GUI is
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue