diff --git a/plugins/codex-parallel-verify/README.md b/plugins/codex-parallel-verify/README.md index c3f23cd2b..4400a2549 100644 --- a/plugins/codex-parallel-verify/README.md +++ b/plugins/codex-parallel-verify/README.md @@ -63,3 +63,9 @@ Forked candidates stay in the baseline after `discard`, because a worktree workf - Exit 125 from the CLI means LayerFS refused the call. `Exists` on a second `init` of the same name is not a prompt to retry. - `discard` and `keep` do not delete commits. Discarded losers stay as deduplicated history. Unmounting with discard drops an uncommitted overlay and copies nothing. - A Cursor plugin, the DeepSeek Harness UI, and changes to LayerFS itself are out of scope. + +## 0.1.1 verification + +The implementation passed 43 tests and a real Linux run on Docker 29.1.3 (Engine API 1.52): initialize with an install, fork two Branches, edit the same file differently, and run `verify-all --jobs 2`. One candidate passed and one failed as expected. Both completed one mount, exec, commit and unmount without cleanup errors; unchanged verification state returned `UpToDate`. + +The 0.1.1 metadata update passed the affected tests. These checks do not qualify macOS or the Windows-host worker route, and are not performance measurements. The listing remains `preview`. diff --git a/plugins/codex-parallel-verify/install.md b/plugins/codex-parallel-verify/install.md index 326ba8e1d..c5261e2f3 100644 --- a/plugins/codex-parallel-verify/install.md +++ b/plugins/codex-parallel-verify/install.md @@ -14,7 +14,7 @@ node --input-type=module -e 'import { loadSdk } from "./src/load.js"; const sdk Success prints `function function`. If it does not, stop. Do not import `@layerfs/agent/internal`. -6. A live init needs a Linux `layerfs-daemon` and a runtime image built from commit {{layerfs.commit}}. Build them the way `api/README.md` and `api/how-to-use/runtime.md` in the LayerFS checkout describe (`npm --prefix "$LAYERFS_REPO/api" run build:native` builds the addon on a macOS or Linux host). Then set `LAYERFS_HOME` (for example `$HOME/.layerfs-codex`), `LAYERFS_IMAGE` to that image's sha256 id, and `LAYERFS_DAEMON` to the absolute path of `layerfs-daemon`. On macOS and Windows also set `LAYERFS_BUNDLE` to the sealed Linux bundle from that same commit (it contains `layerfs-daemon`, `layerfs.node`, and `manifest.json`). The CLI calls `runtime.worker.start()` once and sets `LAYERFS_WORKER_ENDPOINT` to `$LAYERFS_HOME/worker/endpoint.json`. Do not start a second worker for the same home. On Linux, leave `LAYERFS_WORKER_ENDPOINT` unset so Store calls stay in-process. On Windows, pass `--wsl-distro`, `--wsl-user`, `--wsl-node`, and `--wsl-home` when the runtime defaults (Ubuntu, root, `/usr/local/bin/node`) are wrong. +6. A live init needs a Linux `layerfs-daemon` and a runtime image built from commit {{layerfs.commit}}. Build them the way `api/README.md` and `api/docs/runtime.md` in the LayerFS checkout describe (`npm --prefix "$LAYERFS_REPO/api" run build:native` builds the addon on a macOS or Linux host). Then set `LAYERFS_HOME` (for example `$HOME/.layerfs-codex`), `LAYERFS_IMAGE` to that image's sha256 id, and `LAYERFS_DAEMON` to the absolute path of `layerfs-daemon`. On macOS and Windows also set `LAYERFS_BUNDLE` to the sealed Linux bundle from that same commit (it contains `layerfs-daemon`, `layerfs.node`, and `manifest.json`). The CLI calls `runtime.worker.start()` once and sets `LAYERFS_WORKER_ENDPOINT` to `$LAYERFS_HOME/worker/endpoint.json`. Do not start a second worker for the same home. On Linux, leave `LAYERFS_WORKER_ENDPOINT` unset so Store calls stay in-process. On Windows, pass `--wsl-distro`, `--wsl-user`, `--wsl-node`, and `--wsl-home` when the runtime defaults (Ubuntu, root, `/usr/local/bin/node`) are wrong. 7. Initialize once from the plugin checkout: ```bash diff --git a/plugins/codex-parallel-verify/plugin.json b/plugins/codex-parallel-verify/plugin.json index 9036b7883..9afe81ca2 100644 --- a/plugins/codex-parallel-verify/plugin.json +++ b/plugins/codex-parallel-verify/plugin.json @@ -32,6 +32,16 @@ }, "status": "preview", "versions": [ + { + "version": "0.1.1", + "commit": "259fed402f84db273929f3a83ad7a8ce32888217", + "date": "2026-10-28", + "layerfs": { + "version": "v1.1.0", + "commit": "4b5276216a2e9f780194a554ef9f0c33f9b6ba6d" + }, + "notes": "Update SDK checkout paths and pin LayerFS with Docker API negotiation (#476); Linux API 1.52 two-candidate verification passed." + }, { "version": "0.1.0", "commit": "e440813d6ca2cc973ddae517319addeb52b694b6", diff --git a/plugins/cursor-agents/README.md b/plugins/cursor-agents/README.md index d412129ab..f54b968fa 100644 --- a/plugins/cursor-agents/README.md +++ b/plugins/cursor-agents/README.md @@ -1,12 +1,12 @@ Cursor coding agents work on LayerFS Branches and Workspaces instead of git worktrees. One task gets one Branch. File edits go through `fs.*`. Bash runs as `workspace.mount`, then `exec`, `commit`, and `unmount`. Each LayerFS call is attempted once. -Plugin id: `cursor-agents`. Package: `layerfs-cursor-agents` `0.1.0`. This repository is for Cursor only. It does not install Claude Code skills, hooks, or configuration, and it does not ship a history dashboard. +Plugin id: `cursor-agents`. Package: `layerfs-cursor-agents` `0.1.1`. This repository is for Cursor only. It does not install Claude Code skills, hooks, or configuration, and it does not ship a history dashboard. -The LayerFS commit this version was built against is `commit` in [`layerfs.json`](https://github.com/earsonlau/layerfs-cursor-agents/blob/1802b525cca2ff9730678c01f8aefcc107223940/layerfs.json): `ad78914e36b258b360daf13aec164b5655814689` (LayerFS v1.1.0). +The LayerFS commit this version was built against is `commit` in [`layerfs.json`](https://github.com/earsonlau/layerfs-cursor-agents/blob/66aafb319a6bf05a4745763c325b87cb6016587f/layerfs.json): `4b5276216a2e9f780194a554ef9f0c33f9b6ba6d` (LayerFS v1.1.0). ## What it adds -- A Cursor skill at [`.cursor/skills/layerfs-agent/SKILL.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/1802b525cca2ff9730678c01f8aefcc107223940/.cursor/skills/layerfs-agent/SKILL.md). The same skill is at [`.agents/skills/layerfs-agent/SKILL.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/1802b525cca2ff9730678c01f8aefcc107223940/.agents/skills/layerfs-agent/SKILL.md) for agents that look there. +- A Cursor skill at [`.cursor/skills/layerfs-agent/SKILL.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/66aafb319a6bf05a4745763c325b87cb6016587f/.cursor/skills/layerfs-agent/SKILL.md). The same skill is at [`.agents/skills/layerfs-agent/SKILL.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/66aafb319a6bf05a4745763c325b87cb6016587f/.agents/skills/layerfs-agent/SKILL.md) for agents that look there. - `layerfs-cursor-setup`, which checks out that LayerFS commit, links the official `layerfs` command onto `PATH`, and writes `LAYERFS_*` settings. - On Linux, Store calls stay in the agent process. On macOS and Windows the setup starts the home worker with `@layerfs/runtime` and sets `LAYERFS_WORKER_ENDPOINT`. @@ -18,7 +18,7 @@ The skill is the procedure. Short form: 2. `branch.fork` one Branch for the task. Do not add a git worktree. 3. Edit with `fs.write`, `fs.edit`, `fs.apply`, and the other `fs.*` calls. 4. Run bash as `sandbox.create` (when you need a Sandbox), then `workspace.mount`, `workspace.exec`, `workspace.commit`, and `workspace.unmount`. Unmount in `finally`. On `Conflict`, stay in that Workspace until you resolve it or discard it. -5. On `Conflict`, `Busy`, or `NoSuchSandbox`, follow [`refusals.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/1802b525cca2ff9730678c01f8aefcc107223940/.cursor/skills/layerfs-agent/references/refusals.md) once. Do not replay the refused call. +5. On `Conflict`, `Busy`, or `NoSuchSandbox`, follow [`refusals.md`](https://github.com/earsonlau/layerfs-cursor-agents/blob/66aafb319a6bf05a4745763c325b87cb6016587f/.cursor/skills/layerfs-agent/references/refusals.md) once. Do not replay the refused call. `examples/task-branch.mjs` forks a Branch (or keeps it if the name is taken) and writes one file. It imports the public SDK from `LAYERFS_REPO`. @@ -61,4 +61,10 @@ When `LAYERFS_REPO` points at the pinned checkout, the same command also imports ## License -MIT. See [LICENSE](https://github.com/earsonlau/layerfs-cursor-agents/blob/1802b525cca2ff9730678c01f8aefcc107223940/LICENSE). +MIT. See [LICENSE](https://github.com/earsonlau/layerfs-cursor-agents/blob/66aafb319a6bf05a4745763c325b87cb6016587f/LICENSE). + +## 0.1.1 verification + +The implementation passed 27 tests, with the optional Docker test skipped in that run, then passed the real Docker Workspace round-trip separately on Linux with Docker 29.1.3 (Engine API 1.52). The installer regression suite also passed after checking the relocated CLI install target. + +The 0.1.1 metadata update passed the affected tests. These checks do not qualify macOS or the Windows-host worker route, and are not performance measurements. The listing remains `preview`. diff --git a/plugins/cursor-agents/plugin.json b/plugins/cursor-agents/plugin.json index 289521144..df4f7f76c 100644 --- a/plugins/cursor-agents/plugin.json +++ b/plugins/cursor-agents/plugin.json @@ -32,6 +32,16 @@ }, "status": "preview", "versions": [ + { + "version": "0.1.1", + "commit": "66aafb319a6bf05a4745763c325b87cb6016587f", + "date": "2026-10-28", + "layerfs": { + "version": "v1.1.0", + "commit": "4b5276216a2e9f780194a554ef9f0c33f9b6ba6d" + }, + "notes": "Update setup, package links, CLI and addon paths for the upstream directory split; real Linux API 1.52 Workspace round-trip passed." + }, { "version": "0.1.0", "commit": "1802b525cca2ff9730678c01f8aefcc107223940",