4.0 left
What was done on the plant vs what was still open in the 4.0 handoff. The suit era is 4.1. The live ticket is .xray/state/STATION.md. Vision: 4.0 vision. Handoff: 4.0 handoff. Mill: 4.0 foundry.
Mill plant fastens inspect (inspect AI work) plus mill. Empty mill plant is gone. Do not run release:major. Costume dump is foundry.json "costume": true.
Done (worn and shipped as 4.0.0)
| Piece | Where |
|---|---|
| Constitution on four floors | Grok, OpenCode, Hermes, OpenClaw — one SSOT gate |
| Temperament | frontier / guided / strict / auto. Missing key stays guided |
| Stranger-install wear | pack → isolated install → Codex 11 blocks. Ephemeral e2e does not clobber machine markers |
| Factory memory organ | @0xray/repertoire@0.2.9 vendored (seed plus overlays). Isolated tarball wears it without ../repertoire. Extra MCP repertoire, not an 8th xray-*. Optional. |
| Repertoire unprefix | companion feat/mcp-unprefix. Grok TUI sees repertoire__* |
| Enable-when-resolves | leftover memory_routing default-off turns on if the module is actually there (install and runtime). Explicit opt-out kept |
| Station card | .xray/state/STATION.md from session-boot.json. Intent, git, live plan, host, Repertoire working snapshot. Host change stamps hotSwap. This is survive-the-cut — not Repertoire 0.1.8. Station vs Repertoire 0.1 |
| Repertoire working state | .xray/state/repertoire-working.json at compact / host-swap / session heat. Card Working: line. Routing uses the registry; Bedrock names stay off the card |
| Grok Read contract | AGENTS.md Read. OpenCode injects. Grok does not — do not thicken the exo |
| Framework dogfood wear | postinstall.cjs always calls installAllBridges; non-consumer path patches .grok/hooks/0xray.json. Repertoire preferred (explicit opt-out only) |
| OpenClaw session heat | first PreToolUse with a concrete session id writes the card (install/init cards with no session id do not skip that heat) |
| Grok hook quoting | grokHookShellCommand and the shipped template quote XRAY_AI_PATH and the script path (Grok fail-opens if the shell never starts) |
| grok_postprocessor_light | loadFeatures forwards the flag; PostToolUse actually runs the light pipeline |
| Project Repertoire toml | 0xray grok install writes <project>/.grok/config.toml, not the package copy |
| Compact persist | Grok PreCompact / PostCompact rewrite the card. Hermes compact session-start, OpenCode plugin boot, OpenClaw PreToolUse do the same cut. Station is what the successor Reads. Working-line heat is not 0.1.8 stack memory. SessionStart stdout is ignored — disk is the contract |
| Compact constitution | After the cut, every floor still denies Codex 11, Codex 69 new surface, and destructive rm -rf /. Frontier Grok warns spawn-without-plan; guided floors deny. |
| Live successor | XRAY_LIVE_SUCCESSOR=1 — Grok -p, Hermes xai-oauth, OpenCode run --dir, OpenClaw gateway agent --message each quoted Host + Intent from the card. |
| Kernel copy | exo / survive the window, not 42/45/7 |
| Proof last pass | temperament-live green (gateway :18789 HTTP 200). Host e2e: OpenCode 42/0/0, Grok 64/0/0, Hermes 42/0/2, OpenClaw 96/0/1. Four-floor compact+constitution+memory+live-successor passed. All four on xAI OAuth (xai-oauth / xai/oauth / OpenCode xAI oauth). |
HEAD: feat/v4-temperament (PR #3). Repertoire factory seed: htafolla/repertoire#2 (feat/factory-seed-0.2, includes unprefix).
Not 0xRay bugs: Zen 429, glm billing, xAI chat key, hermes update 17k commits, OpenCode 1.17 vs 1.18.
Proof (the cut) — done on this plant
The job is hot-swap / multiplicity. A stranger’s proof is: compact or change host, and the work is still moving.
- Live compact — done. TUI
/compacton this Grok floor. PreCompact18:44:37Zand PostCompact18:45:43Zrewrote.xray/state/STATION.md. Same session01a03ecd-…. Intent clipped (no<user_query>). gitfeat/v4-temperament@2d43f51. Same-host rewrite kepthotSwap: opencode → grok. Successor Read the card; did not cold-start. - Live host swap — done. Same repo, OpenCode CLI (1.16.2)
opencode runRead.xray/state/STATION.mdand answeredHot-swap: grok → opencode/Host: opencode (guided). Did not cold-start. Intent and git unchanged. Return to this Grok floor stampsHot-swap: opencode → grok. - Isolated HOME host e2e — OpenCode done.
HOME=/tmp/xray-isolated-home-*test-opencode-e2e.mjs42/0/0 on local0xray-4.0.0.tgz. Machine OpenClaw consumer marker held after that isolated run. - CLIs now on PATH (this plant). Hermes Agent 0.19.0 via
uv tool install(Python 3.12, not the 17k-commit git installer). OpenClaw 2026.8.2 via Node 24.20.0 (system Node 25.6.1 is outside OpenClaw engines). OpenCode 1.16.2 already present.xray-hermesenabled with tool override. Machine OpenClaw gateway HTTP 200 on :18789.openclaw agentis the live pickle (token-only WS still lacksoperator.write). - Four-floor compact + live successor — done. Hook binaries keep intent, Repertoire working signals, and constitution (11 / 69 / destructive) after the cut.
XRAY_LIVE_SUCCESSOR=1: Grok, Hermes, OpenCode, and OpenClaw each quoted Host + Intent from the card.
(1)–(5) were done, not only unit-tested. Compact persist across a same-host rewrite kept the last hotSwap stamp.
Left — product gaps
Closed on this plant and shipped as 0xray@4.0.0:
- Grok Read contract. AGENTS.md + the card. OpenCode injects. Do not thicken the Grok exo.
- Framework dogfood wear.
postinstallalways callsinstallAllBridges. Consumer vs dogfood is decided inside it..grok/stays gitignored. - Repertoire working state. Leftover default-off + module → routing on. Station snapshot at
.xray/state/repertoire-working.json. Registry primitives are not the session; the working file is. - Live plan line. First incomplete lead-dev todo, else
git log -1subject. Stale descriptions do not stick. - OpenClaw session heat. Skip only when host + concrete session id already match a live card. Install without a session id is not a live session.
- Wear review P0. Quoted Grok hook commands; postprocessor flag forwarded; Repertoire toml on the project.
Left — ship (maintainer)
npm view 0xray version is 4.0.1. Tag v4.0.1 is on 0xRayAI/xray. Repertoire lives at 0xRayAI/repertoire.
Still open:
- Optional:
npm publish @0xray/repertoire@0.2.0(4.0 already vendors 0.2). - Dual-ship: mill is nested in the 0xray tarball (4.0.2+). Standalone
@0xray/foundryremains the mill CLI. - Enable
0xRay CI/CDandCI/CD Health Monitorin GitHub after the mill CI file is onmain(they were disabled for inactivity).
Do not
- 8th MCP / new skill / new handler (Codex 69)
- Thicken the Grok exo
- Re-litigate Zen pickle or
hermes update - Dump Bedrock content into the suit
- Treat unit tests of
STATION.mdas the stranger demo
One line
Suit is worn and attested. npm is 4.0.1. Foundry mill is on main (@0xray/foundry); overlay is mill-fill. Live mill release is opt-in. Docusaurus/Pages is mill docs-build. Do not release:major.