0xray 4.0.0 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/.mcp.json +15 -55
  2. package/.xray/features.json +2 -2
  3. package/AGENTS-consumer.md +6 -6
  4. package/AGENTS.md +9 -9
  5. package/README.md +19 -19
  6. package/SKILLS.md +2 -2
  7. package/dist/AGENTS.md +9 -9
  8. package/dist/CHANGELOG.md +54 -2
  9. package/dist/README.md +19 -19
  10. package/dist/SKILLS.md +2 -2
  11. package/dist/cli/commands/foundry-mint-wear.d.ts +2 -0
  12. package/dist/cli/commands/foundry-mint-wear.js +14 -0
  13. package/dist/cli/commands/hermes-install.js +2 -0
  14. package/dist/cli/commands/openclaw-install.js +2 -0
  15. package/dist/cli/commands/opencode-install.js +2 -0
  16. package/dist/cli/index.js +10 -1
  17. package/dist/enforcement/enforcer-tools.d.ts +7 -0
  18. package/dist/enforcement/enforcer-tools.js +18 -109
  19. package/dist/integrations/grok/grok-cli.js +2 -0
  20. package/dist/integrations/hermes-agent/bridge.mjs +7 -0
  21. package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +4 -2
  22. package/dist/processors/implementations/version-compliance-processor.d.ts +3 -34
  23. package/dist/processors/implementations/version-compliance-processor.js +8 -135
  24. package/opencode.json +0 -8
  25. package/package.json +15 -14
  26. package/scripts/foundry/CHANGELOG.md +34 -0
  27. package/scripts/foundry/LICENSE +21 -0
  28. package/scripts/foundry/README.md +67 -0
  29. package/scripts/foundry/ci-monitor.mjs +115 -0
  30. package/scripts/foundry/cli.js +2 -0
  31. package/scripts/foundry/cli.mjs +55 -0
  32. package/scripts/foundry/docs-build.mjs +38 -0
  33. package/scripts/foundry/hooks.mjs +36 -0
  34. package/scripts/foundry/mill-root.mjs +62 -0
  35. package/scripts/foundry/mint-suit.cjs +313 -0
  36. package/scripts/foundry/mint.mjs +33 -0
  37. package/scripts/foundry/package.json +53 -0
  38. package/scripts/foundry/reconcile-version.mjs +150 -0
  39. package/scripts/foundry/release-gate.mjs +100 -0
  40. package/scripts/foundry/release.mjs +266 -0
  41. package/scripts/foundry/validate-release-docs.mjs +316 -0
  42. package/scripts/foundry/version-manager.mjs +444 -0
  43. package/scripts/node/ci-cd-auto-fix.cjs +12 -257
  44. package/scripts/node/consumer-install-smoke.mjs +57 -2
  45. package/scripts/node/enforce-version-compliance.sh +5 -20
  46. package/scripts/node/enforce-version-compliance.ts +13 -113
  47. package/scripts/node/foundry-shim.mjs +19 -0
  48. package/scripts/node/github-actions-monitor.cjs +13 -18
  49. package/scripts/node/postinstall.cjs +36 -1
  50. package/scripts/node/reconcile-version.mjs +3 -146
  51. package/scripts/node/release-gate.mjs +3 -74
  52. package/scripts/node/release.mjs +3 -171
  53. package/scripts/node/validate-release-docs.mjs +3 -285
  54. package/scripts/node/version-manager.mjs +3 -708
  55. package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +4 -2
  56. package/xray/features.json +2 -2
  57. package/scripts/node/release.js +0 -17
  58. package/scripts/node/sync-versions.mjs +0 -18
  59. package/scripts/node/universal-version-manager.js +0 -1043
package/.mcp.json CHANGED
@@ -1,79 +1,39 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "xray-governance": {
4
- "command": "npx",
5
- "args": [
6
- "-y",
7
- "0xray",
8
- "mcp",
9
- "governance"
10
- ],
4
+ "command": "node",
5
+ "args": ["dist/cli/index.js", "mcp", "governance"],
11
6
  "env": {
12
7
  "XRAY_FORCE_MCP_GOVERNANCE": "true"
13
8
  }
14
9
  },
15
10
  "xray-skills": {
16
- "command": "npx",
17
- "args": [
18
- "-y",
19
- "0xray",
20
- "mcp",
21
- "skills"
22
- ]
11
+ "command": "node",
12
+ "args": ["dist/cli/index.js", "mcp", "skills"]
23
13
  },
24
14
  "xray-enforcer": {
25
- "command": "npx",
26
- "args": [
27
- "-y",
28
- "0xray",
29
- "mcp",
30
- "enforcer"
31
- ]
15
+ "command": "node",
16
+ "args": ["dist/cli/index.js", "mcp", "enforcer"]
32
17
  },
33
18
  "xray-orchestrator": {
34
- "command": "npx",
35
- "args": [
36
- "-y",
37
- "0xray",
38
- "mcp",
39
- "orchestrator"
40
- ]
19
+ "command": "node",
20
+ "args": ["dist/cli/index.js", "mcp", "orchestrator"]
41
21
  },
42
22
  "xray-researcher": {
43
- "command": "npx",
44
- "args": [
45
- "-y",
46
- "0xray",
47
- "mcp",
48
- "researcher"
49
- ]
23
+ "command": "node",
24
+ "args": ["dist/cli/index.js", "mcp", "researcher"]
50
25
  },
51
26
  "xray-code-review": {
52
- "command": "npx",
53
- "args": [
54
- "-y",
55
- "0xray",
56
- "mcp",
57
- "code-review"
58
- ]
27
+ "command": "node",
28
+ "args": ["dist/cli/index.js", "mcp", "code-review"]
59
29
  },
60
30
  "xray-architect-tools": {
61
- "command": "npx",
62
- "args": [
63
- "-y",
64
- "0xray",
65
- "mcp",
66
- "architect-tools"
67
- ]
31
+ "command": "node",
32
+ "args": ["dist/cli/index.js", "mcp", "architect-tools"]
68
33
  },
69
34
  "repertoire": {
70
35
  "command": "node",
71
- "args": [
72
- "/tmp/xray-v4-validate/node_modules/@0xray/repertoire/dist/mcp/server.js"
73
- ],
74
- "env": {
75
- "XRAY_ROOT": "/tmp/xray-v4-validate"
76
- }
36
+ "args": ["scripts/mjs/run-repertoire-mcp.mjs"]
77
37
  }
78
38
  }
79
39
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "./features.schema.json",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "description": "0xRay Framework - Unified Feature Configuration",
5
5
  "suit_temperament": {
6
6
  "profile": "auto",
@@ -182,4 +182,4 @@
182
182
  "onChain": false
183
183
  }
184
184
  }
185
- }
185
+ }
@@ -2,11 +2,11 @@
2
2
 
3
3
  <!-- 0xray-managed -->
4
4
 
5
- Quick reference for the 0xRay AI orchestration framework (shipped to your project on `npm install 0xray`).
5
+ Quick reference for the 0xRay AI orchestration framework worn on **{{CONSUMER_NAME}}**{{CONSUMER_VERSION_PAREN}}.
6
6
 
7
- **v4.0.0** — a suit that survives the context window.
7
+ **4.0** — a suit that survives the context window
8
8
 
9
- **v4.0.0** — same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four platform bridges. Repertoire auto-enables when the module is present; otherwise `memory_routing` stays off. Trim fat, do not gut the design.
9
+ Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four platform bridges. Repertoire organ ships **on** (vendored 0.2); opt out with `"enabled": false, "provider": "repertoire"`. Trim fat, do not gut the design.
10
10
 
11
11
  **Governance always on** (Codex PreToolUse, no new surface, no `eval`). **Engine ceremony** (analyze-complexity before spawn, confer) is **guided** by default so free-model OpenCode/Hermes stay in check. Frontier hosts (Grok 4.6 class) with `suit_temperament.profile: auto` **warn** on spawn-without-plan instead of deny — the engine is still there. Existing `.xray/features.json` without `suit_temperament` stays **guided**. Docs: v3 from v2 · Suit temperament.
12
12
 
@@ -19,9 +19,9 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
19
19
  `npm install 0xray` runs `install-bridges.cjs` and:
20
20
 
21
21
  - Copies this file → **`AGENTS.md`** in your project root
22
- - Ships root **`SKILLS.md`** and syncs **45 skills** to platform skill directories
22
+ - Syncs **45 mill skills** to platform skill directories, then overlays **your** `src/skills` (same name wins). Does **not** write root **`SKILLS.md`**
23
23
  - Seeds **`.gitignore`** (from template, if absent)
24
- - Deploys **`.xray/`** (`codex.json`, `features.json`, `config.json`)
24
+ - Deploys **`.xray/`** (`codex.json`, `features.json`, `config.json`) then overlays **your** mill SSOT (`xray/codex.json`, `xray/features.json`, `src/skills`, `src/opencode/agents`; remap with `foundry.json`)
25
25
  - Writes **`.mcp.json`** with 7 MCPs servers (`npx -y 0xray mcp …`)
26
26
  - Installs bridges: **OpenCode**, **Grok**, **Hermes**, **OpenClaw**
27
27
 
@@ -63,7 +63,7 @@ Governance deliberation uses **code-review**, **security-audit** (via enforcer/s
63
63
 
64
64
  xray operates under the three-subsystem model: **Inference** + **External Governance** (Dynamo Solar SSOT) + **Autonomous Engine** (thinDispatch 7-flow in MCP orchestrator). All actions are validated against the Universal Development Codex before execution.
65
65
 
66
- **Codex**: `.xray/codex.json` — **68 terms** across all agent interactions.
66
+ **Codex**: `.xray/codex.json` — **69 terms** across all agent interactions.
67
67
 
68
68
  ## thinDispatch Routing
69
69
 
package/AGENTS.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # xray Agents
2
2
 
3
- Quick reference for the xray AI orchestration framework (**v4.0.0**).
3
+ Quick reference for the xray AI orchestration framework (**4.0**).
4
4
 
5
- **v4.0.0** — a suit that survives the context window.
5
+ **4.0** — a suit that survives the context window.
6
6
 
7
7
  **Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
8
8
 
@@ -16,7 +16,7 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
16
16
 
17
17
  xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
18
18
 
19
- - **Inference** — proposals, reflection, memory routing (optional)
19
+ - **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
20
20
  - **External Governance** — Dynamo Solar SSOT, 69-term Codex
21
21
  - **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
22
22
 
@@ -38,12 +38,12 @@ Registered in `.mcp.json`, invoked via `npx -y 0xray mcp <cmd>`:
38
38
 
39
39
  Governance deliberation: **code-review**, **security-audit**, **researcher** within the 7-server set.
40
40
 
41
- ## Postinstall (v3.4.1)
41
+ ## Postinstall
42
42
 
43
43
  `postinstall.cjs` → `installAllBridges()`:
44
44
 
45
45
  1. `AGENTS-consumer.md` → `AGENTS.md`
46
- 2. `SKILLS.md` + 46 skills → platform skill directories
46
+ 2. `SKILLS.md` + 45 skills → platform skill directories
47
47
  3. `.gitignore.default` → `.gitignore` (if absent)
48
48
  4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
49
49
  5. `.mcp.json` (7 servers)
@@ -58,11 +58,11 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
58
58
  "memory_routing": {
59
59
  "enabled": true,
60
60
  "provider": "repertoire",
61
- "module_path": "../repertoire/dist/provider/memory-routing-provider.js",
61
+ "module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
62
62
  "config": {
63
- "dataDir": "../repertoire/data",
64
- "signalsPath": "../repertoire/data/curated_signals.json",
65
- "logDir": "../repertoire/logs/groover-inference"
63
+ "signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
64
+ "statePath": ".xray/state/repertoire/inference-state.json",
65
+ "feedbackDir": ".xray/state/repertoire/feedback"
66
66
  }
67
67
  }
68
68
  ```
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # xray — exo for coding agents
2
2
 
3
- **v4.0.0** — a suit that survives the context window. Constitution always on. Temperament scales ceremony. Four host floors. Repertoire is the muscle for handoffs.
3
+ **4.0** — a suit that survives the context window
4
+
5
+ ![0xRay v4 exo — CONSTITUTION ON](docs-site/static/img/exo-skeleton-v4.jpg)
4
6
 
5
7
  Not a catalog of agents. The product is the **skeleton you wear**.
6
8
 
@@ -48,7 +50,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
48
50
 
49
51
  | Version | Highlights |
50
52
  |---------|------------|
51
- | **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire enable-when-resolves + session resume. Survive the context window — still in development, not on npm yet. [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
53
+ | **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire organ on (vendored 0.2). Station card survives compact/host-swap. **On npm.** [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
52
54
  | **3.4.1** | Unified `install-bridges.cjs` on postinstall — OpenCode, Grok, Hermes, OpenClaw in one pass. All 7 MCPs servers via `npx -y 0xray mcp <cmd>` (no `dist/` paths). Canonical `release.mjs` pipeline. |
53
55
  | **3.3.1** | Orchestrator confidence gate wired into execution planning. |
54
56
  | **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
@@ -149,11 +151,11 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
149
151
  "memory_routing": {
150
152
  "enabled": true,
151
153
  "provider": "repertoire",
152
- "module_path": "../repertoire/dist/provider/memory-routing-provider.js",
154
+ "module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
153
155
  "config": {
154
- "dataDir": "../repertoire/data",
155
- "signalsPath": "../repertoire/data/curated_signals.json",
156
- "logDir": "../repertoire/logs/groover-inference"
156
+ "signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
157
+ "statePath": ".xray/state/repertoire/inference-state.json",
158
+ "feedbackDir": ".xray/state/repertoire/feedback"
157
159
  }
158
160
  }
159
161
  ```
@@ -183,7 +185,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
183
185
 
184
186
  ## Governance & Codex
185
187
 
186
- - **68 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance
188
+ - **69 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance (Codex 69: no new MCP/skill/handler surface)
187
189
  - CodexPolicyService — Governance-owned SSOT for codex loading
188
190
  - Pre-governance gate blocks non-compliant proposals
189
191
  - Active codex snapshot via `get_active_codex` MCP tool
@@ -191,27 +193,25 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
191
193
 
192
194
  ## Testing
193
195
 
194
- | Suite | Status (v3.4.1) |
196
+ | Suite | Status (v4.0.1) |
195
197
  |-------|-----------------|
196
- | Unit / Integration | 185 files, **3,226 passed** |
197
- | OpenCode E2E | 42/42 solo, 34/34 orchestrator |
198
- | Grok CLI E2E | 62/0 failures (v3.2.0 verified) |
199
- | OpenClaw E2E | 9/9 (v3.2.0 verified) |
200
- | Hermes E2E | 44/0/0 (v3.2.0 verified) |
201
- | Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges |
198
+ | Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
199
+ | Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
202
200
 
203
201
  ```bash
204
202
  npm test
205
- npm run release:gate # full release gate
203
+ npm run release:gate # full release gate (before upload)
204
+ npm run release:npm # gate + prepare + npm publish --access public
206
205
  ```
207
206
 
208
207
  ## Release
209
208
 
209
+ Product **4.0.0** is on npm. Do **not** run `release:major` to ship a 4.x fix (that becomes 5.0.0). Do **not** put a `scripts.publish` lifecycle that re-runs the gate after the registry PUT.
210
+
210
211
  ```bash
211
- npm run release:patch # canonical pipeline
212
- npm run release:minor
213
- npm run release:major
214
- npm run release:patch -- --dry-run
212
+ npm run release:gate
213
+ npm run release:npm # after gate is green; uses npm publish --access public
214
+ npm run release:patch # version bump pipeline (not for a already-bumped 4.0.0)
215
215
  ```
216
216
 
217
217
  Pipeline: reconcile-version → release-gate (build + test + consumer smoke) → CHANGELOG/README/AGENTS artifacts → commit → tag → npm publish.
package/SKILLS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 0xray Skills
2
2
 
3
- **v4.0.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
3
+ **4.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
4
4
 
5
5
  xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. Lead-dev operating model lives in **`orchestrator`** skill + `multi_agent_orchestration.lead_dev_mode` in features.json. Skills load on demand via the **xray-skills** MCP server (`npx -y 0xray mcp skills`), agent `@mentions`, or platform skill directories after postinstall.
6
6
 
@@ -157,7 +157,7 @@ npx 0xray skill:install <source>
157
157
  |---------|------------------|
158
158
  | **Memory routing** (v3.3) | Researcher uses Repertoire signals; optional `@0xray/repertoire` MCP |
159
159
  | **AsideContext** (v3.2) | Orchestrator subcontexts during skill dispatch |
160
- | **7 MCP servers** (v3.4.1) | `xray-skills` is the primary skill invocation surface |
160
+ | **7 MCP servers** (v4.0.1) | `xray-skills` is the primary skill invocation surface |
161
161
 
162
162
  Docs: [AGENTS.md](AGENTS.md) · [README.md](README.md) · [Docusaurus guides](docs-site/docs/guides/)
163
163
 
package/dist/AGENTS.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # xray Agents
2
2
 
3
- Quick reference for the xray AI orchestration framework (**v4.0.0**).
3
+ Quick reference for the xray AI orchestration framework (**4.0**).
4
4
 
5
- **v4.0.0** — a suit that survives the context window.
5
+ **4.0** — a suit that survives the context window.
6
6
 
7
7
  **Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · Repertoire when it resolves.
8
8
 
@@ -16,7 +16,7 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
16
16
 
17
17
  xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
18
18
 
19
- - **Inference** — proposals, reflection, memory routing (optional)
19
+ - **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
20
20
  - **External Governance** — Dynamo Solar SSOT, 69-term Codex
21
21
  - **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
22
22
 
@@ -38,12 +38,12 @@ Registered in `.mcp.json`, invoked via `npx -y 0xray mcp <cmd>`:
38
38
 
39
39
  Governance deliberation: **code-review**, **security-audit**, **researcher** within the 7-server set.
40
40
 
41
- ## Postinstall (v3.4.1)
41
+ ## Postinstall
42
42
 
43
43
  `postinstall.cjs` → `installAllBridges()`:
44
44
 
45
45
  1. `AGENTS-consumer.md` → `AGENTS.md`
46
- 2. `SKILLS.md` + 46 skills → platform skill directories
46
+ 2. `SKILLS.md` + 45 skills → platform skill directories
47
47
  3. `.gitignore.default` → `.gitignore` (if absent)
48
48
  4. `.xray/` config (`codex.json`, `features.json`, `config.json`)
49
49
  5. `.mcp.json` (7 servers)
@@ -58,11 +58,11 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
58
58
  "memory_routing": {
59
59
  "enabled": true,
60
60
  "provider": "repertoire",
61
- "module_path": "../repertoire/dist/provider/memory-routing-provider.js",
61
+ "module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
62
62
  "config": {
63
- "dataDir": "../repertoire/data",
64
- "signalsPath": "../repertoire/data/curated_signals.json",
65
- "logDir": "../repertoire/logs/groover-inference"
63
+ "signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
64
+ "statePath": ".xray/state/repertoire/inference-state.json",
65
+ "feedbackDir": ".xray/state/repertoire/feedback"
66
66
  }
67
67
  }
68
68
  ```
package/dist/CHANGELOG.md CHANGED
@@ -4,9 +4,61 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Conventional Commits](https://www.conventionalcommits.org/).
6
6
 
7
- ## [4.0.0] - 2026-08-28
7
+ ## [Unreleased]
8
8
 
9
- First ship of the **temperament** line on the **v2 three-subsystem OS** (Inference · External Governance · Autonomous Engine). npm is still `3.5.5`; this line is **4.0.0** on `feat/v4-temperament` — **still in development, not published**.
9
+ ### 🔧 Maintenance
10
+ - Foundry mill: one bumper (`reconcile-version.mjs`); `version-manager.mjs` is `--artifacts-only` (JSON + CHANGELOG). Bump and `--tag` are refused.
11
+ - Docs mill verifies era kernel headers (`4.0`) and skill counts; it does not rewrite markdown prose.
12
+ - Exo cannot ship: `executeReleaseWorkflow` is blocked (`FOUNDRY_EXO_CANNOT_SHIP`).
13
+ - Full `release-gate` now runs `validate-release-docs` (not only `--verify-only`).
14
+ - `VersionComplianceProcessor` treats `package.json` as SSOT; UVM is frozen.
15
+ - CI: version-compliance and AGENTS.md workflows target `main`; mill check is `validate-release-docs` (not UVM 1-ahead). `publish.yml` runs the docs mill before PUT.
16
+ - Mill extracted to `scripts/foundry/` (`@0xray/foundry`). `release:npm` is `release.mjs --publish-only`. UVM file removed. Consumer mint writes `foundry-inventory.json` from their package.json.
17
+ - Consumer postinstall overlays their mill SSOT onto the hanger: constitution (`xray/codex.json`), features/temperament, config, `src/skills/<name>/SKILL.md`, `src/opencode/agents/*.yml`. Remap with `foundry.json`. Overlay is **project** skill hangers. JSON mill-fill always merges. CLI re-wear mints once after mill copies. `npx @0xray/foundry mint` reapplies overlay.
18
+ - `@0xray/foundry@0.1.0` mills `FOUNDRY_ROOT` or cwd. Full docs corpus only on the 0xray exo; light mill otherwise. Stamp creates CHANGELOG when missing. Publish refuses a nameless `package.json`. Mill PUT is `cd scripts/foundry && npm publish`; stranger `release` does not force `--access public`. Deprecated `sync-versions.mjs` and `release.js` wrappers removed.
19
+ - Honesty: consumer card does not claim it writes root `SKILLS.md`; mill help is `npx @0xray/foundry`; shims mill cwd; mill-managed `AGENTS.md` overlays from `xray/AGENTS.md`. Mill-fill stays law.
20
+ - Scar tissue cut: no `homeSkills`, no `codexMode`/`featuresMode`/`configMode`. JSON always merge. One `mintConsumerSuit` after mill copies (not inside `syncBuiltinSkills`).
21
+ - Mill flesh: live `npx @0xray/foundry release` is opt-in (`--i-mean-it` / `FOUNDRY_RELEASE=1`). Packed mill mint and Unreleased stamp are executed tests. `@0xray/foundry` tree is 0.1.1 (not a 0xray bump).
22
+ - Mill CI: `0xRay CI/CD` is the mill gate on `main` (typecheck, lint, mill tests, build, curated tests, smoke). Monitor reports Actions; it does not auto-push. `npx @0xray/foundry ci` / `hooks`. Mill package 0.1.2.
23
+ - GitHub Pages: stop copying stale `docs-site/static/index.html` over the Docusaurus homepage (unprefixed `/docs` links 404ed). `npx @0xray/foundry docs-build` is the mill Docusaurus build. Mill 0.1.3.
24
+ - Mill self-host: `0xRay CI/CD` lives in `mill-ci.yml` so GitHub registers push/PR after the inactivity disable. Mill CI always builds Docusaurus.
25
+ - GitHub Pages homepage: no client `<Redirect to="/docs/…">` (that 404s at the org root). Meta refresh + `useBaseUrl('/docs/')`. `.nojekyll` in static.
26
+ - Mill CI report: `mill-monitor.yml` (fresh workflow ID) listens for mill CI completion. Report only.
27
+ - Published mill `hooks` uses the 0xray garment installer (`node_modules/0xray/scripts/hooks`), not `node_modules/@0xray/hooks`. Mill tree 0.1.4 (not a 0xray bump).
28
+ - Nested mill in the 0xray tarball (`scripts/foundry/`). Wear no longer needs a second `npm i @0xray/foundry` for mint-on-install. 4.0.2.
29
+
30
+ ---
31
+
32
+ ## [4.0.2] - 2026-09-04
33
+
34
+ Nested mill in the **0xray tarball**. `npm i 0xray` mill-fills via `scripts/foundry/` (postinstall + CLI re-wear `require` it). `@0xray/foundry` stays the standalone mill CLI (**0.1.4**). Not 5.0.0.
35
+
36
+ Pack tests and consumer smoke require `scripts/foundry/mint-suit.cjs` in the tarball. Mill self-host (mill-ci, mill-monitor, Pages `docs-build`, mill-fill overlay) was already on main; this patch is the npm PUT of that mill next to the garment.
37
+
38
+ ### 🐛 Bug Fixes
39
+ - Processor-test ESLint config is ESLint 9 ESM
40
+
41
+ ---
42
+
43
+ ## [4.0.1] - 2026-09-02
44
+
45
+ Patch on the 4.0 temperament line. npm **4.0.0** stays latest until this tag publishes.
46
+
47
+ ### 🐛 Bug Fixes
48
+ - CLI `-V` / `--version` no longer dumps a Commander stack after `exitOverride`
49
+ - Hermes: post-processor logs `[nudge]`; e2e calls `session-start`
50
+ - OpenClaw e2e reads `plugins.entries` (OpenClaw 2026.8.2)
51
+ - Release gate: consumer smoke expects organ **on**; no `scripts.publish` after the registry PUT; reconcile allows tagged-but-unpublished
52
+
53
+ ### 📚 Documentation
54
+ - Archive catalog / enterprise Docusaurus boiler; live site is exo wear
55
+ - Version-manager stamps live Docusaurus kernel headers (no archived `docs-site/docs/README.md`)
56
+
57
+ ---
58
+
59
+ ## [4.0.0] - 2026-09-02
60
+
61
+ First ship of the **temperament** line on the **v2 three-subsystem OS** (Inference · External Governance · Autonomous Engine). npm **4.0.0**. Tag `v4.0.0` on `0xRayAI/xray` `main` (`f80b42c`).
10
62
 
11
63
  ### ✨ Features
12
64
  - **Factory memory organ** — `@0xray/repertoire@0.2.0` vendored as a runtime dependency. Shipped `memory_routing` is **on** (8 factory primitives). Extra host MCP stays `repertoire`, not an 8th `xray-*` server. Compact ingest writes `.xray/state/repertoire/`. Explicit opt-out: `enabled: false` + `provider: "repertoire"`.
package/dist/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # xray — exo for coding agents
2
2
 
3
- **v4.0.0** — a suit that survives the context window. Constitution always on. Temperament scales ceremony. Four host floors. Repertoire is the muscle for handoffs.
3
+ **4.0** — a suit that survives the context window
4
+
5
+ ![0xRay v4 exo — CONSTITUTION ON](docs-site/static/img/exo-skeleton-v4.jpg)
4
6
 
5
7
  Not a catalog of agents. The product is the **skeleton you wear**.
6
8
 
@@ -48,7 +50,7 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
48
50
 
49
51
  | Version | Highlights |
50
52
  |---------|------------|
51
- | **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire enable-when-resolves + session resume. Survive the context window — still in development, not on npm yet. [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
53
+ | **4.0.0** | Exo + temperament. Constitution always on; ceremony by host. Repertoire organ on (vendored 0.2). Station card survives compact/host-swap. **On npm.** [vision](docs-site/docs/architecture/v4-vision.md) · [now](docs-site/docs/architecture/v4-now.md) |
52
54
  | **3.4.1** | Unified `install-bridges.cjs` on postinstall — OpenCode, Grok, Hermes, OpenClaw in one pass. All 7 MCPs servers via `npx -y 0xray mcp <cmd>` (no `dist/` paths). Canonical `release.mjs` pipeline. |
53
55
  | **3.3.1** | Orchestrator confidence gate wired into execution planning. |
54
56
  | **3.3.0** | Pluggable **Memory Routing** (`features.json` → `memory_routing`). Repertoire is the default provider in the framework repo. |
@@ -149,11 +151,11 @@ Pluggable `memory_routing` block in `features.json` (validated by `features.sche
149
151
  "memory_routing": {
150
152
  "enabled": true,
151
153
  "provider": "repertoire",
152
- "module_path": "../repertoire/dist/provider/memory-routing-provider.js",
154
+ "module_path": "node_modules/@0xray/repertoire/dist/provider/memory-routing-provider.js",
153
155
  "config": {
154
- "dataDir": "../repertoire/data",
155
- "signalsPath": "../repertoire/data/curated_signals.json",
156
- "logDir": "../repertoire/logs/groover-inference"
156
+ "signalsPath": "node_modules/@0xray/repertoire/data/curated_signals.json",
157
+ "statePath": ".xray/state/repertoire/inference-state.json",
158
+ "feedbackDir": ".xray/state/repertoire/feedback"
157
159
  }
158
160
  }
159
161
  ```
@@ -183,7 +185,7 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
183
185
 
184
186
  ## Governance & Codex
185
187
 
186
- - **68 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance
188
+ - **69 terms** in `.xray/codex.json` — core, architecture, testing, performance, security, operations, governance (Codex 69: no new MCP/skill/handler surface)
187
189
  - CodexPolicyService — Governance-owned SSOT for codex loading
188
190
  - Pre-governance gate blocks non-compliant proposals
189
191
  - Active codex snapshot via `get_active_codex` MCP tool
@@ -191,27 +193,25 @@ Docs: [memory routing](docs-site/docs/guides/memory-routing.md) · [Repertoire](
191
193
 
192
194
  ## Testing
193
195
 
194
- | Suite | Status (v3.4.1) |
196
+ | Suite | Status (v4.0.1) |
195
197
  |-------|-----------------|
196
- | Unit / Integration | 185 files, **3,226 passed** |
197
- | OpenCode E2E | 42/42 solo, 34/34 orchestrator |
198
- | Grok CLI E2E | 62/0 failures (v3.2.0 verified) |
199
- | OpenClaw E2E | 9/9 (v3.2.0 verified) |
200
- | Hermes E2E | 44/0/0 (v3.2.0 verified) |
201
- | Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges |
198
+ | Four-floor consumer e2e | OpenCode 34/0 · Grok 63/0 · Hermes 39/0/2 · OpenClaw 96/0/1 (npm 4.0.0 pack) |
199
+ | Consumer smoke | `npm run release:gate` — pack → clean install → 7 MCPs + 4 bridges + organ on |
202
200
 
203
201
  ```bash
204
202
  npm test
205
- npm run release:gate # full release gate
203
+ npm run release:gate # full release gate (before upload)
204
+ npm run release:npm # gate + prepare + npm publish --access public
206
205
  ```
207
206
 
208
207
  ## Release
209
208
 
209
+ Product **4.0.0** is on npm. Do **not** run `release:major` to ship a 4.x fix (that becomes 5.0.0). Do **not** put a `scripts.publish` lifecycle that re-runs the gate after the registry PUT.
210
+
210
211
  ```bash
211
- npm run release:patch # canonical pipeline
212
- npm run release:minor
213
- npm run release:major
214
- npm run release:patch -- --dry-run
212
+ npm run release:gate
213
+ npm run release:npm # after gate is green; uses npm publish --access public
214
+ npm run release:patch # version bump pipeline (not for a already-bumped 4.0.0)
215
215
  ```
216
216
 
217
217
  Pipeline: reconcile-version → release-gate (build + test + consumer smoke) → CHANGELOG/README/AGENTS artifacts → commit → tag → npm publish.
package/dist/SKILLS.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # 0xray Skills
2
2
 
3
- **v4.0.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
3
+ **4.0** — **45 skills** · invoked via `xray-skills` MCP · synced on postinstall
4
4
 
5
5
  xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) across the full software lifecycle. Lead-dev operating model lives in **`orchestrator`** skill + `multi_agent_orchestration.lead_dev_mode` in features.json. Skills load on demand via the **xray-skills** MCP server (`npx -y 0xray mcp skills`), agent `@mentions`, or platform skill directories after postinstall.
6
6
 
@@ -157,7 +157,7 @@ npx 0xray skill:install <source>
157
157
  |---------|------------------|
158
158
  | **Memory routing** (v3.3) | Researcher uses Repertoire signals; optional `@0xray/repertoire` MCP |
159
159
  | **AsideContext** (v3.2) | Orchestrator subcontexts during skill dispatch |
160
- | **7 MCP servers** (v3.4.1) | `xray-skills` is the primary skill invocation surface |
160
+ | **7 MCP servers** (v4.0.1) | `xray-skills` is the primary skill invocation surface |
161
161
 
162
162
  Docs: [AGENTS.md](AGENTS.md) · [README.md](README.md) · [Docusaurus guides](docs-site/docs/guides/)
163
163
 
@@ -0,0 +1,2 @@
1
+ /** Re-apply mill overlay after CLI re-wear copies mill skills. */
2
+ export declare function mintAfterWear(targetDir: string): void;
@@ -0,0 +1,14 @@
1
+ import path from "path";
2
+ import { createRequire } from "module";
3
+ import { fileURLToPath } from "url";
4
+ import { frameworkLogger } from "../../core/framework-logger.js";
5
+ const require = createRequire(import.meta.url);
6
+ const packageRoot = path.join(path.dirname(fileURLToPath(import.meta.url)), "..", "..", "..");
7
+ /** Re-apply mill overlay after CLI re-wear copies mill skills. */
8
+ export function mintAfterWear(targetDir) {
9
+ const { mintConsumerSuit } = require(path.join(packageRoot, "scripts/foundry/mint-suit.cjs"));
10
+ mintConsumerSuit(packageRoot, targetDir, (component, action, status, details) => {
11
+ const level = status === "error" ? "error" : "info";
12
+ frameworkLogger.log(component, action, level, details);
13
+ });
14
+ }
@@ -4,6 +4,7 @@ import { homedir } from 'os';
4
4
  import { createRequire } from 'module';
5
5
  import { frameworkLogger } from '../../core/framework-logger.js';
6
6
  import { syncBuiltinSkills } from './skill-install.js';
7
+ import { mintAfterWear } from './foundry-mint-wear.js';
7
8
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
8
9
  const require = createRequire(import.meta.url);
9
10
  const packageRoot = path.join(__dirname, '..', '..', '..');
@@ -68,6 +69,7 @@ async function installForHermes(options = {}) {
68
69
  frameworkLogger.log('hermes-integration', 'hooks-copied', 'info', {});
69
70
  }
70
71
  const wired = wiring.wireHermesBridge(targetDir);
72
+ mintAfterWear(targetDir);
71
73
  console.log(`\x1b[32m✓ Wired Hermes mcp_servers (${wired.count} servers)\x1b[0m`);
72
74
  console.log(`\x1b[32m✓ Consumer root → ${targetDir}\x1b[0m`);
73
75
  const afterInstallPath = path.join(targetPluginDir, 'after-install.md');
@@ -4,6 +4,7 @@ import { homedir } from 'os';
4
4
  import { createRequire } from 'module';
5
5
  import { frameworkLogger } from '../../core/framework-logger.js';
6
6
  import { syncBuiltinSkills } from './skill-install.js';
7
+ import { mintAfterWear } from './foundry-mint-wear.js';
7
8
  import { OpenClawConfigLoader } from '../../integrations/openclaw/config.js';
8
9
  import { writeSuitSessionBoot } from '../../nucleus/suit-temperament.js';
9
10
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
@@ -45,6 +46,7 @@ async function installForOpenClaw(options = {}) {
45
46
  console.log(`\x1b[32m✓ Synced ${skillsCopied} builtin skills to ~/.openclaw/skills/\x1b[0m`);
46
47
  }
47
48
  frameworkLogger.log('openclaw-integration', 'skills-synced', 'info', { count: skillsCopied });
49
+ mintAfterWear(targetDir);
48
50
  const wired = wiring.wireOpenClawBridge(targetDir);
49
51
  console.log(`\x1b[32m✓ Wired OpenClaw MCP servers (${wired.count} via ${wired.method}) → ${wired.path}\x1b[0m`);
50
52
  console.log(`\x1b[32m✓ Consumer root → ${targetDir}\x1b[0m`);
@@ -3,6 +3,7 @@ import path from 'path';
3
3
  import { createRequire } from 'module';
4
4
  import { frameworkLogger } from '../../core/framework-logger.js';
5
5
  import { syncBuiltinSkills } from './skill-install.js';
6
+ import { mintAfterWear } from './foundry-mint-wear.js';
6
7
  const __dirname = path.dirname(new URL(import.meta.url).pathname);
7
8
  const require = createRequire(import.meta.url);
8
9
  const wiring = require(path.join(__dirname, '..', '..', '..', 'scripts', 'node', 'bridge-mcp-wiring.cjs'));
@@ -133,6 +134,7 @@ async function installForOpencode(options = {}) {
133
134
  console.log(`\x1b[32m✓ Seeded opencode.json from 0xRay template\x1b[0m`);
134
135
  }
135
136
  const mcpCount = wiring.wireOpencodeBridge(process.cwd());
137
+ mintAfterWear(process.cwd());
136
138
  console.log(`\x1b[32m✓ Wired opencode.json mcp (${mcpCount} servers)\x1b[0m`);
137
139
  console.log('\n✅ 0xRay OpenCode plugin installed!');
138
140
  console.log('Restart OpenCode or run `opencode mcp list` to verify MCP servers.');
package/dist/cli/index.js CHANGED
@@ -984,4 +984,13 @@ For more information, visit: https://github.com/0xRayAI/xray
984
984
  `);
985
985
  // Parse command line arguments
986
986
  program.exitOverride();
987
- program.parse();
987
+ try {
988
+ program.parse();
989
+ }
990
+ catch (err) {
991
+ const code = err && typeof err === 'object' && 'code' in err ? String(err.code) : '';
992
+ if (code === 'commander.helpDisplayed' || code === 'commander.help' || code === 'commander.version') {
993
+ process.exit(0);
994
+ }
995
+ throw err;
996
+ }
@@ -18,6 +18,13 @@ export declare function preProcessAndRoute(operation: string, context: RuleValid
18
18
  enhancedContext: RuleValidationContext;
19
19
  routing: RoutingRecommendation;
20
20
  }>;
21
+ /** Foundry mill ships. The worn exo must not bump, commit, or publish. */
22
+ export declare const FOUNDRY_EXO_CANNOT_SHIP = "Exo cannot ship. Use: node scripts/node/release.mjs [patch|minor|major]";
23
+ /**
24
+ * Release keyword used to run version-manager + git add -A + npm publish from the exo.
25
+ * That path is refused. Canonical mill: reconcile → artifacts-only → gate → PUT → tag.
26
+ */
27
+ export declare function executeReleaseWorkflow(operation: string, _context: RuleValidationContext, jobId: string, _routing: RoutingRecommendation): Promise<EnforcementResult>;
21
28
  export interface EnforcementResult {
22
29
  operation: string;
23
30
  passed: boolean;