pmacs/docs/active-work.md

227 lines
8.8 KiB
Markdown

# Active work — cross-machine resume ledger
**Snapshot: 2026-07-20.** This file records volatile work that has not
landed on `main`. Read it after `docs/agent-handoff.md`. Remove completed
entries when their PR merges; do not let this become a second permanent
backlog.
## Repository authority
- Canonical development URL:
`https://github.com/levineuwirth/pmacs.git`. This ledger uses the
normalized local alias `githubsucks` so its refs and recovery commands
are identical on every machine. Remote names are otherwise
machine-local: `origin` may name this canonical URL, a release mirror,
or something else, and therefore has no authority by name alone.
- Canonical base at this snapshot:
`githubsucks/main` @ `f8096ff` (#124 merged, protocol v17).
- On the transfer source, `origin/main` named a release mirror at
`d3fa632` and lagged badly. On the current destination, `origin` names
the canonical URL. This difference is why all recovery begins by
verifying URLs and normalizing `githubsucks` rather than trusting
`origin/main`.
- The shared desktop checkout contained unrelated uncommitted work. The
branches below were prepared in isolated worktrees; never clean or
overwrite the shared checkout to recover them.
Start on another machine by inspecting its remotes:
```sh
git remote -v
git remote get-url githubsucks
```
If the second command says the alias is absent, add it; if it prints a
different URL, stop and resolve that collision rather than overwriting an
unknown remote:
```sh
git remote add githubsucks https://github.com/levineuwirth/pmacs.git
```
Then recover current refs:
```sh
git fetch githubsucks --prune
git log -1 --oneline githubsucks/main
git worktree list
git status --short --branch
```
The first command must expose `f8096ff` or a newer intentional main.
If it does not, stop and repair the remote/fetch configuration.
## Active lane: PR #123 — JSON + YAML
- PR: <https://github.com/levineuwirth/pmacs/pull/123>
- Public PR branch: `githubsucks/json-yaml-grammar`
- Public PR head: `5c202c5`
- Original merge base was `56eb67e`; the completed branch is rebased onto
canonical main `f8096ff`.
- Portable checkpoint branch:
`githubsucks/json-yaml-handoff-2026-07-20`
- Checkpoint head: `5c202c5`
- The checkpoint is a continuation branch for recovery, not a second
feature and not a merge target. Its completed head now exactly matches
`githubsucks/json-yaml-grammar`.
The checkpoint carries the transferred review-fix set plus the completed
destination-machine continuation:
- push configured settings via
`workspace/didChangeConfiguration` immediately after `initialized`;
- fake-LSP configuration sink and a deterministic delivery test;
- explicit `json.validate.enable = true`;
- JSON provider pin
`@t1ckbase/vscode-langservers-extracted@2.0.2`;
- corrected YAML configuration sections:
`yaml`, `http`, `[yaml]`, `editor`, `files`;
- corrected telemetry, schema-network, and schema-association claims;
- PATH-gated real JSON provider integration test.
- PATH-gated real YAML 1.24.0 integration test with SchemaStore and the
Kubernetes CRD catalog disabled for network-free determinism. It pins
YAML-specific auto-attach/initialization, a real syntax diagnostic,
no crash, and continued initialized state after the diagnostic.
Verification completed across the source and destination machines:
- JSON provider standalone protocol smoke passed.
- JSON provider through pmacs passed
`m4_real_json_provider_receives_config_and_reports_diagnostics`.
- `m4_json_yaml_lsp_configs_pin_command_and_sections` passed.
- `m4_5_initial_config_pushed_via_did_change_configuration` passed.
- `cargo fmt --check` and `git diff --check` passed.
- `yaml-language-server@1.24.0` standalone protocol smoke passed:
initialization reported version 1.24.0; the initial
`workspace/configuration` request was exactly
`yaml`, `http`, `[yaml]`, `editor`, `files`; opening the document
caused a second scoped `[yaml]` request; invalid YAML produced a real
parser diagnostic; shutdown exited 0 with empty stderr.
- `m4_real_yaml_provider_pulls_config_and_reports_diagnostics` passed
against `/tmp/pmacs-yamlls` on the destination machine (0.36s).
- Bite verification passed: with `builtin/runtime/lsp.lua` swapped to
pre-JSON/YAML `56eb67e`, the real YAML test failed at the absent YAML
config rather than skipping.
- The four-commit checkpoint rebased cleanly onto canonical
`githubsucks/main` @ `f8096ff`; the rewritten portable head was pushed
with an exact force-with-lease.
- The first post-rebase Clippy pass found one `doc_markdown` warning in
the new YAML test comment. The backtick-only correction was amended
into the test commit and pushed at the checkpoint head above; the
standalone rerun passed.
- Post-rebase gates completed on checkpoint `5c202c5`:
- `cargo fmt --check` passed;
- `cargo clippy --workspace --all-targets -- -D warnings` passed as its
own step;
- `cargo test --lib`: 1,594 passed, 3 ignored;
- `cargo test --lib --features crdt`: 1,768 passed, 3 ignored;
- `cargo test --test m4_acceptance -- --skip basedpyright` with both
pinned providers on PATH: 114 passed, 3 ignored, 1 filtered; the
real JSON and real YAML tests both ran and passed;
- `PMACS_REQUIRE_GPU=1 cargo test -p pmacs-gpu`: 102 passed against a
real GPU device.
- `cargo test --workspace -- --skip basedpyright` passed as one
pipefail-protected invocation with both pinned providers on PATH; its
complete machine-local log is
`/tmp/pmacs-json-yaml-workspace-5c202c5.log`, and the log confirms both
live provider tests ran and passed.
- Final-head `cargo fmt --check`, `git diff --check`, and clean-worktree
audit passed.
- The completed head was pushed to `githubsucks/json-yaml-grammar` with
an exact force-with-lease. PR #123 is open against `main` at full OID
`5c202c54c19c05b0824812a578463ec082810981`; fresh CI run
`29778967156` was created for that head.
Still required:
1. Let CI run `29778967156` finish and address any findings.
2. Await user review. Never merge without the user's instruction.
Provider setup is intentionally machine-local:
```sh
npm install --prefix /tmp/pmacs-jsonls \
@t1ckbase/vscode-langservers-extracted@2.0.2
npm install --prefix /tmp/pmacs-yamlls \
yaml-language-server@1.24.0
```
The Node language servers had to run outside the prior machine's
restrictive execution sandbox. The `/tmp` prefixes and smoke harnesses
do not travel.
Recovery worktree:
```sh
git worktree add --track \
-b json-yaml-handoff-2026-07-20 \
../pmacs-jsonyaml-home \
githubsucks/json-yaml-handoff-2026-07-20
```
If that local branch name already exists, omit `--track -b ...` and
give the existing local branch as the final argument.
## Active lane: Arc 4 stage 3 — statusline segments
- Portable branch: `githubsucks/statusline-segments`
- Framing head: `432e4d4`
- State: framing only, revision 1, based on `f8096ff` / protocol v17.
- Status: awaiting user review. No implementation and no PR.
- Scope: composable per-window Lua modeline providers, dynamic
modeline-face inventory, and protocol v18
`StatuslineSegments`; the built-in LSP segment is the first consumer.
- Do not implement until the user approves the framing. When approved,
continue on this branch so the framing remains the first commit.
Recovery worktree:
```sh
git worktree add --track \
-b statusline-segments \
../pmacs-statusline \
githubsucks/statusline-segments
```
## Parked lane: kill-ring browser + persistence
- Portable branch: `githubsucks/kill-ring-browser`
- Parked framing head: `503c489`
- State: framing only, revision 2; no implementation and no PR.
- Status: explicitly parked by the user on 2026-07-20.
- Its original scout was based on `0efb5cd`. The preserved framing marks
this ground truth stale and requires a complete re-scout against the
then-current `githubsucks/main` before implementation.
- Compile-mode has merged since the original scout, so old
“compile-mode in flight” keybinding/touch-set assumptions are not
authoritative.
Recovery worktree, only when the user un-parks it:
```sh
git worktree add --track \
-b kill-ring-browser \
../pmacs-kill-ring-browser \
githubsucks/kill-ring-browser
```
## Documentation lane
- Portable branch: `githubsucks/handoff-2026-07-20`
- Carries synchronized `AGENTS.md` / `CLAUDE.md`, this ledger, the
durable handoff refresh, and the keybinding reference correction.
- It changes no runtime code.
- Review and merge this documentation branch separately; it must not be
folded into PR #123 or either feature framing branch.
## Update protocol
Whenever a listed lane changes materially:
1. update its public branch and head/state here;
2. record new verification and remove superseded caveats;
3. keep durable architecture in `docs/agent-handoff.md`, not here;
4. remove the lane after merge or abandonment;
5. verify every recovery command from a clean worktree before calling
the transfer complete.