docs: absorption review round 1 --- seven findings, two of them absorption holes
**The absorption was incomplete, and the two holes were Stage 0's.** `docs/agent-handoff.md` §6 still called Stage 0 "READY FOR PR (not yet opened)" and the ledger's Stage 0 lane still handed out branch-recovery instructions and called itself pre-PR --- for work that merged as #236. A merged lane that still says "checkout the branch" sends a reader to a tip that no longer moves. Both rewritten; the recovery lines are removed rather than updated, because there is nothing left to recover. **A LANE CANNOT REMOVE ITSELF AT MERGE, and saying so was wrong in a way that would have shipped.** GitHub merges the tree as it stands, so "removed at merge" would have landed the words *PR #238 OPEN* on `main` --- a lane advertising an open PR that closed in the same commit. It stays while the PR is under review, because an open PR without a lane is the #171 defect, and **a final pre-merge commit on this branch takes it out**. That obligation is now written into the lane itself. **Q#GA5 was recorded backwards.** The P2 row said P2 was "gated by the GUI arc reaching Stage 4b". The ruling is the reverse: **P2 is blocked by nothing and may start now**; when the arc reaches Stage 4b, P2 must already have started, and **no later GUI stage begins** until it has an approved framing and an opened lane. The gate is on STARTING P2, not on finishing it, and it binds the GUI arc rather than P2. Corrected in both the P2 row and the GUI row, which had inherited the same inversion. **`9a26ac8` was the previous last-EXERCISED anchor, not the previous declared FLOOR** --- that was `e67ad07`, and the two had drifted apart. Checking the exercised anchor in the floor's place verifies the wrong claim, so the check is re-run and re-stated against `e67ad07` and `d038f71`; `9a26ac8` is retained only under its own correct label. **1-pre did not ADD the idle-Escape local quit.** The docs said "no behaviour change" and then called the Escape quit a "1-pre change" and "the one thing 1-pre added" --- which contradict each other and the diff. It is **pre-existing behaviour that 1-pre preserved and isolated** behind an `EventOutcome` return; **1a removes it**. Fixed in both files. **§1a called the board current at `d038f71` while most of it dates from 2026-08-01**, and P5 still described #217 as a held PR although it had merged. The board is now labelled **MIXED-ANCHOR and explicitly not current as a whole**, with the drift named as evidence and a pointer to `git log --first-parent`; the P5 row is corrected. Refreshing the rest is a separate pass, deliberately not folded into a GUI absorption. **The exact-head accounting was wrong --- one commit and 34 lines, when it was two and 38 --- and the fix is to stop counting.** A count goes stale on the very next commit, including the one carrying the fix, which is how it broke in the first place. Both the lane and the PR body now state the standing property instead: every commit after the gated tree is markdown-only, checkable with `git diff --name-only 502308d..HEAD`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bqGA6s9tTUFzYpbeW3tai
This commit is contained in:
parent
74054bb7ff
commit
6d6942e068
|
|
@ -238,9 +238,13 @@ Every documented step ran, in order, on git **2.55.0**:
|
||||||
`No such remote`**, exactly as the section above anticipates.
|
`No such remote`**, exactly as the section above anticipates.
|
||||||
2. Add the alias, confirm the URL, `git fetch githubsucks --prune`.
|
2. Add the alias, confirm the URL, `git fetch githubsucks --prune`.
|
||||||
3. `git log -1 --oneline githubsucks/main` → `d038f71`.
|
3. `git log -1 --oneline githubsucks/main` → `d038f71`.
|
||||||
4. **The floor check, run against both floors**: `9a26ac8` (the old one)
|
4. **The floor check, run against the OLD DECLARED FLOOR and the new
|
||||||
and `d038f71` are each an ancestor of the tip, so advancing the floor
|
one**: `e67ad07` and `d038f71` are each an ancestor of the tip, so
|
||||||
is valid rather than merely plausible.
|
advancing the floor is valid rather than merely plausible.
|
||||||
|
*(`9a26ac8` is the previous last-EXERCISED anchor, which is a
|
||||||
|
different thing from the previous declared floor — the two had
|
||||||
|
drifted apart, and checking the exercised anchor in the floor's place
|
||||||
|
would have verified the wrong claim.)*
|
||||||
5. The three-argument `git worktree add <path> -b <local>
|
5. The three-argument `git worktree add <path> -b <local>
|
||||||
githubsucks/<branch>` form → a real branch with its upstream set
|
githubsucks/<branch>` form → a real branch with its upstream set
|
||||||
(`## recovered-local...githubsucks/gui-stage1-pre`).
|
(`## recovered-local...githubsucks/gui-stage1-pre`).
|
||||||
|
|
@ -291,9 +295,13 @@ commits while invisible here.
|
||||||
- **Gates: `./scripts/gate`, all eight stages green** (log
|
- **Gates: `./scripts/gate`, all eight stages green** (log
|
||||||
`20260812T111504Z-3265400`). No `--acceptance` and no `--protocol` —
|
`20260812T111504Z-3265400`). No `--acceptance` and no `--protocol` —
|
||||||
docs only, so no suite is touched and no wire moves. That run covered
|
docs only, so no suite is touched and no wire moves. That run covered
|
||||||
`502308d`; **the only later commit is this lane**, 34 lines of
|
`502308d`. **Every commit after it is markdown-only** — stated as a
|
||||||
markdown, with `git diff --check` and `cargo fmt --check` re-run clean
|
standing property rather than a count, because a count goes stale on
|
||||||
on the result.
|
the next commit, which is how the previous version of this sentence
|
||||||
|
came to say "one commit, 34 lines" when there were two and 38. Check
|
||||||
|
it with `git diff --name-only 502308d..HEAD`, which must list nothing
|
||||||
|
outside `*.md`; `git diff --check` and `cargo fmt --check` are clean
|
||||||
|
at HEAD.
|
||||||
- **One judgement recorded because it exceeded the requested scope and
|
- **One judgement recorded because it exceeded the requested scope and
|
||||||
was approved on review**: §1a's board carried no GUI-arc row, which
|
was approved on review**: §1a's board carried no GUI-arc row, which
|
||||||
contradicted the anchor two sections above it. The row sits where
|
contradicted the anchor two sections above it. The row sits where
|
||||||
|
|
@ -301,8 +309,14 @@ commits while invisible here.
|
||||||
P2–P5, interacting only at the **P2 start gate** — and the section's
|
P2–P5, interacting only at the **P2 start gate** — and the section's
|
||||||
dateline now says which row is current and which are as of
|
dateline now says which row is current and which are as of
|
||||||
2026-08-01.
|
2026-08-01.
|
||||||
- **This lane goes when the PR merges.** It describes a docs pass, not
|
- **THIS LANE MUST BE DELETED BY A FINAL PRE-MERGE COMMIT ON THIS
|
||||||
an arc, so rule 4 removes it outright rather than rewriting it.
|
BRANCH, and cannot remove itself at merge.** GitHub merges the tree as
|
||||||
|
it stands, so "removed at merge" would land the words *PR #238 OPEN*
|
||||||
|
on `main` — a lane advertising an open PR that closed in the same
|
||||||
|
commit. It stays while the PR is under review, because an open PR
|
||||||
|
without a lane is the #171 defect; the last commit before merge takes
|
||||||
|
it out. Rule 4 removes it **outright** rather than rewriting it: it
|
||||||
|
describes a docs pass, not an arc.
|
||||||
|
|
||||||
## GUI arc Stage 1 — 1-pre MERGED as #237 (`d038f71`); 1a is next, NOT STARTED
|
## GUI arc Stage 1 — 1-pre MERGED as #237 (`d038f71`); 1a is next, NOT STARTED
|
||||||
|
|
||||||
|
|
@ -328,7 +342,10 @@ ARC is done, and the arc is Stage 1 as a whole: **five slices remain**.
|
||||||
`ADVERTISED_PROTOCOL_VERSION` stays pinned at 20 and must not be
|
`ADVERTISED_PROTOCOL_VERSION` stays pinned at 20 and must not be
|
||||||
edited to chase it. Its nine contracts (A1–A9) and the Q#S1-9
|
edited to chase it. Its nine contracts (A1–A9) and the Q#S1-9
|
||||||
precedence rules are in the framing; **A4 deletes the idle-Escape
|
precedence rules are in the framing; **A4 deletes the idle-Escape
|
||||||
local quit**, which is the one 1-pre change 1a is expected to undo.
|
local quit**, which is **pre-existing behaviour, not something 1-pre
|
||||||
|
introduced** — 1-pre preserved it and moved it behind an
|
||||||
|
`EventOutcome` return, and 1a removes it. `EventOutcome` survives that
|
||||||
|
removal: the native close still returns `Exit`.
|
||||||
|
|
||||||
### What 1-pre landed, and the facts worth not re-deriving
|
### What 1-pre landed, and the facts worth not re-deriving
|
||||||
|
|
||||||
|
|
@ -406,24 +423,21 @@ absorption" was too generous. Five stale lanes remain below, and two
|
||||||
`COHERENCE.md` corrections had not been made at all. What is done here
|
`COHERENCE.md` corrections had not been made at all. What is done here
|
||||||
is listed at the commit that does it, not promised here.
|
is listed at the commit that does it, not promised here.
|
||||||
|
|
||||||
- **Branch `gui-arc-stage0`**, base `githubsucks/main` @ `e67ad07` (the
|
- **MERGED as #236 (`f8ad3e7`).** The branch was `gui-arc-stage0`, based
|
||||||
file-watcher arc absorption) after the 2026-08-11 rebase; it was
|
on `e67ad07` after the 2026-08-11 rebase and branched at `0e4c58d`.
|
||||||
branched at `0e4c58d`. **`githubsucks/gui-arc-stage0` is the
|
**Recovery instructions are removed deliberately**: a merged lane that
|
||||||
authoritative tip** — the ref, not a SHA. Recover with
|
still says "checkout the branch" sends a reader to a tip that no
|
||||||
`git fetch githubsucks && git checkout gui-arc-stage0`.
|
longer moves. Its content is on `main`.
|
||||||
- **Framing `docs/gui-arc-framing.md`, revision 3, APPROVED
|
- **Framing `docs/gui-arc-framing.md`, revision 3, APPROVED
|
||||||
2026-08-10** after two review rounds (two blocking findings each
|
2026-08-10** after two review rounds (two blocking findings each
|
||||||
round, closed). It is **also the framing for Stage 0 itself**, which
|
round, closed). It is **also the framing for Stage 0 itself**, which
|
||||||
is docs-only; Stages 1–10 each require their own framing before their
|
is docs-only; Stages 1–10 each require their own framing before their
|
||||||
branch.
|
branch.
|
||||||
- **The park is over and the work is DONE.** The branch was parked at
|
- **The park is over and the work is MERGED.** The branch was parked at
|
||||||
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. **Sixteen commits
|
rebased onto `e67ad07`, the absorption ran, and it landed as **#236**.
|
||||||
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`,
|
||||||
|
|
|
||||||
|
|
@ -166,9 +166,11 @@ commands, read `docs/active-work.md` immediately after this file.
|
||||||
quiet `ok`.
|
quiet `ok`.
|
||||||
- **Deliberately unbuilt here**: every behavioural change. 1a
|
- **Deliberately unbuilt here**: every behavioural change. 1a
|
||||||
(`TextInput`, **v24**, protocol-bearing) is next and serialized
|
(`TextInput`, **v24**, protocol-bearing) is next and serialized
|
||||||
against 1e (`OpenTarget`, **v25**); **A4 deletes 1-pre's
|
against 1e (`OpenTarget`, **v25**); **A4 deletes the idle-Escape
|
||||||
idle-Escape local quit**, which is the one thing 1-pre added that a
|
local quit**, which is **pre-existing behaviour that 1-pre preserved
|
||||||
later slice removes. `EventOutcome` nevertheless **survives** A4:
|
and isolated rather than introduced** — the seam moved it behind an
|
||||||
|
`EventOutcome` return, and 1a is what removes it. `EventOutcome`
|
||||||
|
nevertheless **survives** A4:
|
||||||
the native close still returns `Exit`, and **one producer is not one
|
the native close still returns `Exit`, and **one producer is not one
|
||||||
variant**.
|
variant**.
|
||||||
- **Git integration Stage 1 — MERGED as #227 (2026-08-11).**
|
- **Git integration Stage 1 — MERGED as #227 (2026-08-11).**
|
||||||
|
|
@ -687,23 +689,27 @@ commands, read `docs/active-work.md` immediately after this file.
|
||||||
|
|
||||||
**Read this before picking anything up.** It is the only place the
|
**Read this before picking anything up.** It is the only place the
|
||||||
remaining work is enumerated in one view; the per-arc bullets below give
|
remaining work is enumerated in one view; the per-arc bullets below give
|
||||||
the detail. **The table is current at `d038f71` (2026-08-12); the rows
|
the detail.
|
||||||
beneath it that carry no GUI-arc mention date from 2026-08-01** and
|
|
||||||
were written before that arc existed. Zero PRs were open when this
|
**THIS TABLE IS MIXED-ANCHOR AND IS NOT CURRENT AS A WHOLE.** The GUI
|
||||||
section was first written; the GUI row is the only one refreshed since,
|
row is written at `d038f71` (2026-08-12); **every other row dates from
|
||||||
so treat the others as of that date and check `git log` before believing
|
2026-08-01** and has not been re-audited since, including the original
|
||||||
any of them is still startable.
|
claim that zero PRs were open. Rows are known to have drifted — P5
|
||||||
|
called the tree primitive "PR held" when **#217 had already merged** —
|
||||||
|
so **check `git log --first-parent githubsucks/main` before believing
|
||||||
|
any row is still startable**. Refreshing the rest of the board is a
|
||||||
|
separate pass, deliberately not folded into a GUI absorption.
|
||||||
|
|
||||||
#### Arc state, against `COHERENCE.md` §20's priority order
|
#### Arc state, against `COHERENCE.md` §20's priority order
|
||||||
|
|
||||||
| P | Arc | State | What is next |
|
| P | Arc | State | What is next |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| 1 | **Journey** | **Stage 1 COMPLETE** (1a #182/#183; 1b-1 #203, 1b-2 #204, 1b-3 #205) | Journey runs to step 10. The thin end is now steps **1** (install — that is P8), **11** (background work: visible but no ownership model, §9) and **12** (session restore: desktop-save is opt-in *and* a documented no-op under a daemon) |
|
| 1 | **Journey** | **Stage 1 COMPLETE** (1a #182/#183; 1b-1 #203, 1b-2 #204, 1b-3 #205) | Journey runs to step 10. The thin end is now steps **1** (install — that is P8), **11** (background work: visible but no ownership model, §9) and **12** (session restore: desktop-save is opt-in *and* a documented no-op under a daemon) |
|
||||||
| 1.5 | **GUI arc (half A)** | **Stage 0 MERGED (#236); Stage 1-pre MERGED (#237)** | **`COHERENCE.md` §20 Q#GA5 slots half A immediately after Priority 1** and it runs alongside P2–P5, interacting only at P2 — *reaching Stage 4b is a P2 START GATE*. It is the product half of §16 and what that section's product subgrade is graded against. **Next: Stage 1a**, not started, protocol-bearing at **v24** and serialized against 1e's v25 |
|
| 1.5 | **GUI arc (half A)** | **Stage 0 MERGED (#236); Stage 1-pre MERGED (#237)** | **`COHERENCE.md` §20 Q#GA5 slots half A immediately after Priority 1** and it runs alongside P2–P5, interacting only at Q#GA5's start gate — **reaching Stage 4b obliges P2 to have STARTED, and no later GUI stage begins until it has an approved framing and an opened lane. The constraint binds THIS arc, not P2**, which is free to start at any time. It is the product half of §16 and what that section's product subgrade is graded against. **Next: Stage 1a**, not started, protocol-bearing at **v24** and serialized against 1e's v25 |
|
||||||
| 2 | Workspace + location | Missing; model gap | The long-lead arc. Start before a fifth subsystem grows its own root convention — four have already diverged (§7). **Gated by the GUI arc reaching Stage 4b** (Q#GA5) |
|
| 2 | Workspace + location | Missing; model gap | The long-lead arc. Start before a fifth subsystem grows its own root convention — four have already diverged (§7). **P2 is blocked by nothing and may start now.** Q#GA5 runs the other way: when the GUI arc reaches Stage 4b, **P2 must already have started**, and no later GUI stage begins until it has an approved framing and an opened lane. **The gate is on STARTING P2, not on finishing it** |
|
||||||
| 3 | Extension ownership | Missing; prerequisite-shaped | **`pmacs.hook.remove` does not exist.** That one bug-sized gap blocks §13's disable/uninstall, §10's trust classes, and package-scoped cancellation |
|
| 3 | Extension ownership | Missing; prerequisite-shaped | **`pmacs.hook.remove` does not exist.** That one bug-sized gap blocks §13's disable/uninstall, §10's trust classes, and package-scoped cancellation |
|
||||||
| 4 | **Discovery** | **Stage 1 MERGED (#207)** | Stage 2 candidates, in rough dependency order: richer M-x rows (**protocol change** — `MinibufferPrompt.candidates` is `Vec<String>`; `CompletionPopupRow` already proves the pattern), `Command` gaining title/category/aliases/flags/arg-schema (~147 definition sites), predicate evaluation, help-layer unification, and the help-prefix decision |
|
| 4 | **Discovery** | **Stage 1 MERGED (#207)** | Stage 2 candidates, in rough dependency order: richer M-x rows (**protocol change** — `MinibufferPrompt.candidates` is `Vec<String>`; `CompletionPopupRow` already proves the pattern), `Command` gaining title/category/aliases/flags/arg-schema (~147 definition sites), predicate evaluation, help-layer unification, and the help-prefix decision |
|
||||||
| 5 | Workbench convergence | Partial; **Arc 7 COMPLETE** (#213) and **the tree primitive is implemented** (PR held) | The bottom panel is finished on both frontends and the adopter default is flipped. The tree primitive has landed on a held PR: §14's Tree moves ✗ → ◐ with the LSP outline as its one adopter. **Next: adoption** — dired's `i`, then DAP's variables view, which is why it was built first |
|
| 5 | Workbench convergence | Partial; **Arc 7 COMPLETE** (#213) and **the tree primitive MERGED as #217** | The bottom panel is finished on both frontends and the adopter default is flipped. §14's Tree moves ✗ → ◐ with the LSP outline as its one adopter. *(This row said "PR held" until 2026-08-12; #217 is in the canonical base chain.)* **Next: adoption** — dired's `i`, then DAP's variables view, which is why it was built first |
|
||||||
| 6 | Config productization | Foundation only | Value provenance, then layering, then adoption migration (**table-valued settings are the hard prerequisite** — `ConfigValue` is four scalars) |
|
| 6 | Config productization | Foundation only | Value provenance, then layering, then adoption migration (**table-valued settings are the hard prerequisite** — `ConfigValue` is four scalars) |
|
||||||
| 7 | Package lifecycle | Not started | Correctly sequenced after P3 |
|
| 7 | Package lifecycle | Not started | Correctly sequenced after P3 |
|
||||||
| 8 | **Distribution** | **Stage 1 SHIPPED (v1.1.0, #211)** | Binaries on tag, checksums, machine-checked glibc floor. **Journey step 1 now works and the "invisible until this exists" blocker is lifted.** Next is a *decision* about channels / update / signing, not a queued plan |
|
| 8 | **Distribution** | **Stage 1 SHIPPED (v1.1.0, #211)** | Binaries on tag, checksums, machine-checked glibc floor. **Journey step 1 now works and the "invisible until this exists" blocker is lifted.** Next is a *decision* about channels / update / signing, not a queued plan |
|
||||||
|
|
@ -3329,7 +3335,9 @@ 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 READY FOR PR (not yet opened).**
|
**The GUI arc — OPEN. Stage 0 MERGED as #236 and Stage 1-pre MERGED as
|
||||||
|
#237 (2026-08-12); Stage 1a is next and not started.** See §1's arc
|
||||||
|
bullet for what landed.
|
||||||
`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