diff --git a/docs/active-work.md b/docs/active-work.md index e570cbf..f6ae35d 100644 --- a/docs/active-work.md +++ b/docs/active-work.md @@ -238,9 +238,13 @@ Every documented step ran, in order, on git **2.55.0**: `No such remote`**, exactly as the section above anticipates. 2. Add the alias, confirm the URL, `git fetch githubsucks --prune`. 3. `git log -1 --oneline githubsucks/main` → `d038f71`. -4. **The floor check, run against both floors**: `9a26ac8` (the old one) - and `d038f71` are each an ancestor of the tip, so advancing the floor - is valid rather than merely plausible. +4. **The floor check, run against the OLD DECLARED FLOOR and the new + one**: `e67ad07` and `d038f71` are each an ancestor of the tip, so + 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 -b githubsucks/` form → a real branch with its upstream set (`## recovered-local...githubsucks/gui-stage1-pre`). @@ -291,9 +295,13 @@ commits while invisible here. - **Gates: `./scripts/gate`, all eight stages green** (log `20260812T111504Z-3265400`). No `--acceptance` and no `--protocol` — 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 - markdown, with `git diff --check` and `cargo fmt --check` re-run clean - on the result. + `502308d`. **Every commit after it is markdown-only** — stated as a + standing property rather than a count, because a count goes stale on + 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 was approved on review**: §1a's board carried no GUI-arc row, which 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 dateline now says which row is current and which are as of 2026-08-01. -- **This lane goes when the PR merges.** It describes a docs pass, not - an arc, so rule 4 removes it outright rather than rewriting it. +- **THIS LANE MUST BE DELETED BY A FINAL PRE-MERGE COMMIT ON THIS + 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 @@ -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 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 - 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 @@ -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 is listed at the commit that does it, not promised here. -- **Branch `gui-arc-stage0`**, base `githubsucks/main` @ `e67ad07` (the - file-watcher arc absorption) after the 2026-08-11 rebase; it was - branched at `0e4c58d`. **`githubsucks/gui-arc-stage0` is the - authoritative tip** — the ref, not a SHA. Recover with - `git fetch githubsucks && git checkout gui-arc-stage0`. +- **MERGED as #236 (`f8ad3e7`).** The branch was `gui-arc-stage0`, based + on `e67ad07` after the 2026-08-11 rebase and branched at `0e4c58d`. + **Recovery instructions are removed deliberately**: a merged lane that + still says "checkout the branch" sends a reader to a tip that no + longer moves. Its content is on `main`. - **Framing `docs/gui-arc-framing.md`, revision 3, APPROVED 2026-08-10** after two review rounds (two blocking findings each 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 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 behind and touched the three files Stage 0's absorption rewrites. #227 merged (`b867f64`), #233's arc closed (#234, #235), this branch - rebased onto `e67ad07`, and the absorption ran. **Sixteen commits - 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.)* + rebased onto `e67ad07`, the absorption ran, and it landed as **#236**. - **What landed (docs only, no `src/`):** the absorption pass enumerated in the framing's §5 — five stale lanes, the authority/recovery anchor, `COHERENCE.md`'s `v6..=v21` → `v6..=v23`, diff --git a/docs/agent-handoff.md b/docs/agent-handoff.md index 64e3ed6..84e71e6 100644 --- a/docs/agent-handoff.md +++ b/docs/agent-handoff.md @@ -166,9 +166,11 @@ commands, read `docs/active-work.md` immediately after this file. quiet `ok`. - **Deliberately unbuilt here**: every behavioural change. 1a (`TextInput`, **v24**, protocol-bearing) is next and serialized - against 1e (`OpenTarget`, **v25**); **A4 deletes 1-pre's - idle-Escape local quit**, which is the one thing 1-pre added that a - later slice removes. `EventOutcome` nevertheless **survives** A4: + against 1e (`OpenTarget`, **v25**); **A4 deletes the idle-Escape + local quit**, which is **pre-existing behaviour that 1-pre preserved + 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 variant**. - **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 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 -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 -section was first written; the GUI row is the only one refreshed since, -so treat the others as of that date and check `git log` before believing -any of them is still startable. +the detail. + +**THIS TABLE IS MIXED-ANCHOR AND IS NOT CURRENT AS A WHOLE.** The GUI +row is written at `d038f71` (2026-08-12); **every other row dates from +2026-08-01** and has not been re-audited since, including the original +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 | 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.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 | -| 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) | +| 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). **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 | | 4 | **Discovery** | **Stage 1 MERGED (#207)** | Stage 2 candidates, in rough dependency order: richer M-x rows (**protocol change** — `MinibufferPrompt.candidates` is `Vec`; `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) | | 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 | @@ -3329,7 +3335,9 @@ servers. ## 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 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