227 lines
8.8 KiB
Markdown
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.
|