0xray 4.0.42 → 4.1.1

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 (138) hide show
  1. package/.gitignore.default +4 -1
  2. package/.grok-plugin/plugin.json +1 -1
  3. package/.opencode/skills/orchestrator/SKILL.md +1 -7
  4. package/.plugin/plugin.json +1 -1
  5. package/.xray/features.json +8 -5
  6. package/.xray/features.schema.json +8 -0
  7. package/AGENTS-consumer.md +9 -7
  8. package/AGENTS.md +19 -10
  9. package/LICENSE +1 -1
  10. package/README.md +15 -9
  11. package/SKILLS.md +3 -1
  12. package/dist/.gitignore.default +4 -1
  13. package/dist/AGENTS.md +19 -10
  14. package/dist/CHANGELOG.md +109 -11
  15. package/dist/LICENSE +1 -1
  16. package/dist/README.md +15 -9
  17. package/dist/SKILLS.md +3 -1
  18. package/dist/cli/commands/opencode-install.js +3 -9
  19. package/dist/cli/commands/plugin-commands.d.ts +4 -0
  20. package/dist/cli/commands/plugin-commands.js +84 -41
  21. package/dist/cli/commands/skill-install.js +10 -5
  22. package/dist/cli/goggles-status.d.ts +2 -5
  23. package/dist/cli/goggles-status.js +5 -53
  24. package/dist/cli/index.js +2 -2
  25. package/dist/core/config-loader.js +4 -4
  26. package/dist/core/features-config.d.ts +1 -1
  27. package/dist/core/features-config.js +3 -3
  28. package/dist/enforcement/enforcer-tools.d.ts +1 -1
  29. package/dist/enforcement/enforcer-tools.js +1 -1
  30. package/dist/integrations/cursor/README.md +1 -1
  31. package/dist/integrations/cursor/hooks/hooks.json +6 -3
  32. package/dist/integrations/cursor/hooks/pre-tool-use.js +104 -37
  33. package/dist/integrations/cursor/hooks/xray-cloud-hook.sh +9 -1
  34. package/dist/integrations/grok/grok-cli.js +5 -7
  35. package/dist/integrations/grok/hooks/grok-hook-utils.js +4 -1
  36. package/dist/integrations/grok/hooks/pre-tool-use.js +6 -76
  37. package/dist/integrations/grok/hooks/session-start.js +4 -2
  38. package/dist/integrations/hermes-agent/bridge.mjs +17 -1
  39. package/dist/integrations/hooks/delegation-gate-runtime.mjs +3 -2
  40. package/dist/integrations/hooks/goggles-mcp.mjs +23 -181
  41. package/dist/integrations/hooks/goggles-pipeline.mjs +606 -571
  42. package/dist/integrations/hooks/goggles-planes.json +95 -46
  43. package/dist/integrations/hooks/plates.cjs +84 -0
  44. package/dist/integrations/hooks/pre-tool-speak.mjs +74 -0
  45. package/dist/integrations/hooks/skill-seek.mjs +115 -0
  46. package/dist/integrations/hooks/station-hook-runtime.cjs +4 -1
  47. package/dist/integrations/openclaw/hooks/pre-tool-gate-runtime.mjs +24 -7
  48. package/dist/integrations/openclaw/plugin/xray-pre-tool/index.js +26 -2
  49. package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  50. package/dist/memory-routing/plates.d.ts +1 -1
  51. package/dist/memory-routing/plates.js +14 -0
  52. package/dist/monitoring/{nudge-watchdog.d.ts → nudge-monitor.d.ts} +14 -5
  53. package/dist/monitoring/{nudge-watchdog.js → nudge-monitor.js} +42 -17
  54. package/dist/nucleus/thin-dispatch.d.ts +1 -1
  55. package/dist/nucleus/thin-dispatch.js +1 -1
  56. package/dist/nucleus/work-freshness.mjs +10 -0
  57. package/dist/plugin/xray-codex-injection.js +20 -0
  58. package/dist/processors/implementations/nudge-processor.d.ts +1 -1
  59. package/dist/processors/implementations/nudge-processor.js +4 -4
  60. package/dist/skills/orchestrator/SKILL.md +1 -7
  61. package/docs-site/docs/plates/activity-log.md +1 -1
  62. package/docs-site/docs/plates/asides.md +35 -0
  63. package/docs-site/docs/plates/bifrost.md +48 -0
  64. package/docs-site/docs/plates/boot.md +2 -2
  65. package/docs-site/docs/plates/centrifuge.md +1 -1
  66. package/docs-site/docs/plates/confer.md +35 -0
  67. package/docs-site/docs/plates/consumer-mcp.md +35 -0
  68. package/docs-site/docs/plates/cursor-compact.md +1 -1
  69. package/docs-site/docs/plates/delegation-gate.md +35 -0
  70. package/docs-site/docs/plates/dynamo.md +35 -0
  71. package/docs-site/docs/plates/foundry.md +35 -0
  72. package/docs-site/docs/plates/glossary.md +7 -3
  73. package/docs-site/docs/plates/goggles.md +12 -1
  74. package/docs-site/docs/plates/governance.md +1 -1
  75. package/docs-site/docs/plates/grok-compact.md +1 -1
  76. package/docs-site/docs/plates/grokbot.md +3 -1
  77. package/docs-site/docs/plates/ground.md +35 -0
  78. package/docs-site/docs/plates/hermes.md +35 -0
  79. package/docs-site/docs/plates/host-pack.md +1 -1
  80. package/docs-site/docs/plates/house.md +1 -1
  81. package/docs-site/docs/plates/index.md +16 -7
  82. package/docs-site/docs/plates/inference-cycle.md +35 -0
  83. package/docs-site/docs/plates/inference-files.md +1 -1
  84. package/docs-site/docs/plates/kept-line.md +1 -1
  85. package/docs-site/docs/plates/kits.md +1 -1
  86. package/docs-site/docs/plates/lens-gate.md +8 -6
  87. package/docs-site/docs/plates/lens-page.md +1 -1
  88. package/docs-site/docs/plates/memory-recall.md +1 -1
  89. package/docs-site/docs/plates/notes-page.md +2 -2
  90. package/docs-site/docs/plates/openclaw.md +35 -0
  91. package/docs-site/docs/plates/opencode.md +35 -0
  92. package/docs-site/docs/plates/orchestration.md +1 -1
  93. package/docs-site/docs/plates/package-face.md +1 -1
  94. package/docs-site/docs/plates/payload-heat.md +1 -1
  95. package/docs-site/docs/plates/pickup-stamp.md +1 -1
  96. package/docs-site/docs/plates/pre-tool.md +1 -1
  97. package/docs-site/docs/plates/processor.md +1 -1
  98. package/docs-site/docs/plates/record-map.md +1 -1
  99. package/docs-site/docs/plates/reflection-page.md +1 -1
  100. package/docs-site/docs/plates/repertoire.md +35 -0
  101. package/docs-site/docs/plates/reporting.md +1 -1
  102. package/docs-site/docs/plates/review.md +1 -1
  103. package/docs-site/docs/plates/routing.md +1 -1
  104. package/docs-site/docs/plates/session-capture.md +1 -1
  105. package/docs-site/docs/plates/site-manual.md +1 -1
  106. package/docs-site/docs/plates/stamp-plate.md +1 -1
  107. package/docs-site/docs/plates/station-card.md +1 -1
  108. package/docs-site/docs/plates/station-heat.md +1 -1
  109. package/docs-site/docs/plates/suit-organs.md +1 -1
  110. package/docs-site/docs/plates/suit-settings.md +1 -1
  111. package/docs-site/docs/plates/suit-wear.md +1 -1
  112. package/docs-site/docs/plates/suit.md +3 -3
  113. package/docs-site/docs/plates/synthesis.md +35 -0
  114. package/docs-site/docs/plates/temperament.md +35 -0
  115. package/docs-site/docs/plates/trail-state.md +2 -2
  116. package/docs-site/docs/plates/work-fresh.md +1 -1
  117. package/docs-site/docs/plates/write-home.md +1 -1
  118. package/llms.txt +14 -6
  119. package/package.json +3 -3
  120. package/scripts/foundry/README.md +5 -3
  121. package/scripts/foundry/mint-suit.cjs +120 -2
  122. package/scripts/foundry/plant/skills/mill/SKILL.md +1 -1
  123. package/scripts/foundry/reconcile-version.mjs +10 -3
  124. package/scripts/foundry/release-gate.mjs +111 -15
  125. package/scripts/foundry/release.mjs +9 -1
  126. package/scripts/foundry/validate-release-docs.mjs +2 -2
  127. package/scripts/foundry/version-manager.mjs +12 -4
  128. package/scripts/mjs/verify-pipeline-facets.mjs +1 -1
  129. package/scripts/node/install-bridges.cjs +91 -46
  130. package/scripts/node/pack-tmp-suit-proof.mjs +37 -10
  131. package/src/integrations/openclaw/plugin/xray-pre-tool/index.js +26 -2
  132. package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  133. package/src/skills/orchestrator/SKILL.md +1 -7
  134. package/vendor/@0xray/repertoire/README.md +1 -1
  135. package/xray/agents_template.md +2 -2
  136. package/xray/features.json +8 -5
  137. package/xray/features.schema.json +8 -0
  138. package/docs-site/docs/plates/live-mesh.md +0 -41
@@ -29,7 +29,10 @@ AGENTS.md
29
29
  SKILLS.md
30
30
 
31
31
  # Runtime state (xray inference workflows, session state)
32
- .xray/
32
+ .xray/*
33
+ !.xray/state/
34
+ .xray/state/*
35
+ !.xray/state/LENS.md
33
36
  .strray/
34
37
  strray/
35
38
  xray/inference/
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xray",
3
- "version": "4.0.42",
3
+ "version": "4.1.1",
4
4
  "description": "0xRay suit for Grok, Hermes, OpenClaw, OpenCode: mill+inspect, Codex, 7 MCP servers. Costume 45/42 is opt-in foundry, not the default wear.",
5
5
  "author": {
6
6
  "name": "0xRay AI",
@@ -57,13 +57,7 @@ When `multi_agent_orchestration.lead_dev_mode` is true in `features.json` (defau
57
57
 
58
58
  The command is `0xray look`. `0xray goggles` is the same organ. A pipe keeps the line card. A terminal shows that card as a pane. Chat seats without hooks use the `goggles` MCP tools `look` and `status_lens`. Same organ.
59
59
 
60
- Kind 0 is actuality. It compares the list in the file to the same six names in the code. It speaks only when those lists differ. A match is quiet.
61
-
62
- Kind 1 names one plane: dichotomy, syncopate, synthesis, or loop. The lens holds that plane. An action on that plane is quiet. An action on another plane, or on a pipeline drawing, is stopped. A pipeline drawing is not a scope stop. Ground is not a scope stop. Scope, when named, is ecosystem, part, one flow, or one artifact, and an action wider than that scope is stopped. One kind and one scope level at a time. Two planes, calling, ground, and a pipeline name do not arm the lens. `outer` without one plane is `Name one plane.` After 1 is empty. Nothing is picked.
63
-
64
- Naming a plane, `digest`, or `triage` returns that plane's view. The fields are from, digest, plate, entry, exit, files, skills, setup, teardown, and worn. Each field has a pipe. The pipe writes what it can see from the plate or the tree, and the view keeps that field. A field the pipe cannot see yet stays on the view for the next look. The rows are ground, routing, house, boot, governance, memory-recall, orchestration, processor, and reporting. Those nine are not Kind 0. The mill path is `scripts/foundry`. `triage` names the fields still open and whether the row holds. Zoom after the card is the same ladder: ecosystem, part, one flow, one artifact.
65
-
66
- The hold lasts for the work that named the plane. A sentence that does not say look or name does not arm it and does not drop it. Work that says goggles clears the hold and stays quiet. When a tool names one card plane, the suit adds that plane's file as a hint.
60
+ A session starts on dev. The boot payload includes that card from `.xray/state/LENS.md`. The planes are dev, integration, domain, and ecosystem. A search inside the current card runs. Any other search returns the current card and does not run. Opening a file on the current card adds nothing. Opening a file on another plane switches to that card and the open proceeds. A file on no card stays on the current plane and returns that card. Compact writes that same card back. A thing on that plane has its own card. One card has its own plate and can name more. A missing plate names the stamp-plate skill. Stamp one plate for that card. The cards and plates that stay are what the next agent reads. Saying goggles clears a stale card line on the station.
67
61
 
68
62
  ## Hooks (rewired, not new MCPs)
69
63
 
@@ -2,7 +2,7 @@
2
2
  "id": "0xray",
3
3
  "name": "0xRay",
4
4
  "version": "3.1.0",
5
- "description": "Multi-agent orchestration, Codex governance, and AI-powered development tools. 13 MCP tools (code review, security audit, API design, database design, project analysis, testing, performance, UI/UX, DevOps, documentation, storytelling) plus 44 knowledge skills for best-practice guidance across the full software development lifecycle.",
5
+ "description": "Three-subsystem autonomous engine. The suit is the wear: memory, judgement, payments, and the wake. Seven consumer MCP servers. The skill catalog is opt-in.",
6
6
  "author": "0xRay AI",
7
7
  "homepage": "https://github.com/0xRayAI/xray",
8
8
  "components": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "./features.schema.json",
3
- "version": "4.0.42",
3
+ "version": "4.1.1",
4
4
  "description": "0xRay Framework - Unified Feature Configuration",
5
5
  "suit_temperament": {
6
6
  "profile": "auto",
@@ -12,6 +12,9 @@
12
12
  "generic": "guided"
13
13
  }
14
14
  },
15
+ "goggles": {
16
+ "enabled": true
17
+ },
15
18
  "token_optimization": {
16
19
  "enabled": true,
17
20
  "max_context_tokens": 20000,
@@ -54,16 +57,16 @@
54
57
  "auto_provision_worktree": false
55
58
  }
56
59
  },
57
- "grok_postprocessor_light": true,
60
+ "grok_postprocessor_light": false,
58
61
  "inference_session_capture": {
59
62
  "enabled": true,
60
63
  "min_commits": 3,
61
64
  "lookback_commits": 20
62
65
  },
63
66
  "autonomous_reporting": {
64
- "enabled": true,
67
+ "enabled": false,
65
68
  "interval_minutes": 60,
66
- "auto_schedule": true,
69
+ "auto_schedule": false,
67
70
  "include_health_assessment": true,
68
71
  "include_agent_activities": true,
69
72
  "include_pipeline_operations": true,
@@ -174,7 +177,7 @@
174
177
  "every_n_todos_completed": 0
175
178
  },
176
179
  "inference": {
177
- "description": "Self-improvement cycle that grades a new named session into repertoire",
180
+ "description": "The cycle runs from the CLI command inference:run and the session wake does not start it.",
178
181
  "enabled": true,
179
182
  "workflow_dir": ".xray/inference",
180
183
  "reports_dir": ".xray/reports",
@@ -132,6 +132,14 @@
132
132
  }
133
133
  }
134
134
  },
135
+ "goggles": {
136
+ "type": "object",
137
+ "description": "The suit keeps goggles on. enabled false fails wear and doctor.",
138
+ "properties": {
139
+ "enabled": { "type": "boolean" }
140
+ },
141
+ "required": ["enabled"]
142
+ },
135
143
  "synthesis": {
136
144
  "type": "object",
137
145
  "properties": {
@@ -2,13 +2,13 @@
2
2
 
3
3
  <!-- 0xray-managed -->
4
4
 
5
- Quick reference for the 0xRay AI orchestration framework worn on **{{CONSUMER_NAME}}**{{CONSUMER_VERSION_PAREN}}.
5
+ Quick reference for the 0xRay suit worn on **{{CONSUMER_NAME}}**{{CONSUMER_VERSION_PAREN}}.
6
6
 
7
- **4.0** — a suit that survives the context window
7
+ **4.1** — a suit that survives the context window
8
8
 
9
9
  Confer votes. Burst runs the swarm.
10
10
 
11
- Same **three-subsystem OS** as v2 (Inference · External Governance · Autonomous Engine). Constitution always on. Temperament scales ceremony. Four chat bridges plus Cursor project hooks. **Repertoire is preferred** — vendored 0.2.9 ships **on**. Dest is named laws, not keywords. Station is the compact ticket, not a substitute. Explicit opt-out only: `"enabled": false, "provider": "repertoire"`. Trim fat, do not gut the design.
11
+ 0xRay is a three-subsystem autonomous engine (Inference · External Governance · Autonomous Engine). The suit is the wear. Constitution always on. Temperament scales ceremony. Four chat bridges plus Cursor project hooks. **Repertoire is preferred** — vendored 0.2.9 ships **on**. Dest is named laws, not keywords. Station is the wake ticket, not a substitute. Explicit opt-out only: `"enabled": false, "provider": "repertoire"`.
12
12
 
13
13
  **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.
14
14
 
@@ -20,10 +20,12 @@ A peer lead continues from this card + Repertoire + the `orchestrator` skill. Du
20
20
 
21
21
  ## Postinstall (automatic)
22
22
 
23
- `npm install 0xray` runs `install-bridges.cjs` and:
23
+ `npm install 0xray` links vendored `@0xray/repertoire` and prints `npx 0xray wear`. It does not write `AGENTS.md`, `.mcp.json`, or the chat bridges.
24
+
25
+ `npx 0xray wear` writes the consumer suit:
24
26
 
25
27
  - Copies this file → **`AGENTS.md`** in your project root
26
- - Fastens mill plant (`mill` + `inspect`) then overlays **your** `src/skills` (same name wins). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). `npx @0xray/foundry sound mix` / `sound render` / `blip render` are CLI shims (0.1.11+). `npx @0xray/foundry inspect` runs mill-exported inspect; on a sound seat the last bed receipt; on a blip seat the last 4.44s receipt. Chat is not a receipt. Does **not** dump 45/42 costume unless `foundry.json` `"costume": true`. Does **not** write root **`SKILLS.md`**
28
+ - Fastens mill plant (`mill` + `inspect`) then overlays **your** `src/skills` (same name wins). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). `npx @0xray/foundry sound mix` / `sound render` / `blip render` are CLI shims (0.1.11+). `npx @0xray/foundry inspect` runs mill-exported inspect; on a sound seat the last bed receipt; on a blip seat the last 4.44s receipt. Chat is not a receipt. The mill suit also wears every catalog skill and every role file. A blip or sound seat fastens that plant only. A name outside the fastened set still fails inspect. Does **not** write root **`SKILLS.md`**
27
29
  - Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin` from groover-hangar) is first-class with mill plant. Extra shops: `foundry.json` `"shopPlant"`. Not costume.
28
30
  - Seeds **`.gitignore`** (from template, if absent)
29
31
  - 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`)
@@ -54,7 +56,7 @@ Governance deliberation uses **code-review**, **security-audit** (via enforcer/s
54
56
  |---------|-------------|
55
57
  | `npx 0xray setup` | Symlinks, hook extras, Hermes skill sync |
56
58
  | `npx 0xray status` | Verify installation |
57
- | `npx 0xray opencode install` | OpenCode bridge (also runs on postinstall) |
59
+ | `npx 0xray opencode install` | OpenCode bridge. `npx 0xray wear` writes it too. |
58
60
  | `npx 0xray grok install` | Project `.grok/plugins/0xray` + 7 MCPs servers (machine plugin not last-wins) |
59
61
  | `npx 0xray hermes install` | Hermes plugin bridge |
60
62
  | `npx 0xray openclaw install` | OpenClaw config + skills |
@@ -160,7 +162,7 @@ When the suit is worn, **lead dev mode** is ON via existing config + hooks:
160
162
 
161
163
  ## Skills
162
164
 
163
- Full catalog in root **`SKILLS.md`** (shipped on postinstall). **`orchestrator`** skill documents lead-dev mode. Invoke via `@orchestrator` or `xray-skills` MCP (`invoke-skill`, `list-skills`).
165
+ Full catalog in root **`SKILLS.md`**. Wear does not write a consumer-root `SKILLS.md`. **`orchestrator`** skill documents lead-dev mode. Invoke via `@orchestrator` or `xray-skills` MCP (`invoke-skill`, `list-skills`).
164
166
 
165
167
  ## File Organization
166
168
 
package/AGENTS.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # xray Agents
2
2
 
3
- Quick reference for the xray AI orchestration framework (**4.0**).
3
+ Quick reference for the 0xRay suit (**4.1**).
4
4
 
5
- **4.0** — a suit that survives the context window.
5
+ **4.1** — a suit that survives the context window.
6
6
 
7
7
  Confer votes. Burst runs the swarm.
8
8
 
9
- **Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.9, dest = laws).
9
+ **The suit is the wear.** Three-subsystem autonomous engine (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.9, dest = laws).
10
10
 
11
11
  **Temperament:** 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; Codex 11/29/69 still **deny**. Missing `suit_temperament` stays guided. See `docs-site/docs/architecture/v3-from-v2.md`.
12
12
 
@@ -18,13 +18,13 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
18
18
 
19
19
  ## What is xray?
20
20
 
21
- xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
21
+ 0xRay is a three-subsystem autonomous engine. The suit is the wear. The host you already run wears it. When the window closes, the next session wakes with the job.
22
22
 
23
23
  - **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
24
- - **External Governance** — Dynamo Solar SSOT, 69-term Codex
24
+ - **External Governance** — Dynamo Solar SSOT, 69-term Codex. Judgement stays on.
25
25
  - **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
26
26
 
27
- Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**, not a 45-skill sync (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
27
+ Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**. The mill suit also wears every catalog skill and every role file (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
28
28
 
29
29
  ## Consumer MCP surface (7 servers)
30
30
 
@@ -44,10 +44,12 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
44
44
 
45
45
  ## Postinstall
46
46
 
47
- `postinstall.cjs` → `installAllBridges()`:
47
+ `postinstall.cjs` links vendored `@0xray/repertoire` and prints `npx 0xray wear`. It does not write `.mcp.json` or the chat bridges.
48
+
49
+ `npx 0xray wear` runs `installAllBridges()` from `install-bridges.cjs`:
48
50
 
49
51
  1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
50
- 2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
52
+ 2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). The mill suit also wears every catalog skill and every OpenCode role file. A blip or sound seat fastens that plant only. A name outside the fastened set still fails inspect.
51
53
  3. `.gitignore.default` → `.gitignore` (if absent)
52
54
  4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
53
55
  5. `.mcp.json` (7 servers)
@@ -63,7 +65,7 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
63
65
 
64
66
  ## Memory routing + Repertoire (preferred, v3.3+)
65
67
 
66
- **Wear Repertoire.** It is the long-term judgment organ. Dest is named invariants (factory + stack laws), not hangar `repo-*` or git slugs. **Station is the compact ticket** (Read `.xray/state/STATION.md`) — not a substitute for Repertoire. The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
68
+ **Wear Repertoire.** It is the long-term judgment organ. Dest is named invariants (factory + stack laws), not hangar `repo-*` or git slugs. **Station is the wake ticket** (Read `.xray/state/STATION.md`) — not a substitute for Repertoire. The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
67
69
 
68
70
  `xray/features.json` → `memory_routing` (schema: `features.schema.json`):
69
71
 
@@ -230,8 +232,15 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
230
232
  | Station vs Repertoire 0.1 | `docs-site/docs/guides/station-vs-repertoire.md` |
231
233
  | AsideContext | `docs-site/docs/guides/aside-context.md` |
232
234
  | Consumer migration | `docs-site/docs/guides/consumer-migration.md` |
235
+ | Bifrost board | `docs-site/docs/plates/bifrost.md` |
236
+ | Seat wake | `grok-bot/templates/house/fleet/WAKE-ROUTINE.md` |
237
+ | Fleet lexicon | `grok-bot/LEXICON.md` |
233
238
  | Docusaurus site | https://0xrayai.github.io/xray/ |
234
239
 
240
+ ## Live board
241
+
242
+ The board seats see is the collector board (`house/live/feed/live_mesh.py`). A cloud agent is a board row (`bcId`, owning seat, linked card, state `running`, `finished`, or `failed`). The seat wake is `grok-bot/templates/house/fleet/WAKE-ROUTINE.md`: `live-inbox <seat> --turn start` on every turn, and `--turn end` on every exit. `live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`. A missing or empty one exits 2 and names it. A stuck card sends L1 to the next owner or the card owner, and L2 to the CoS role. An unacked line and a missing handoff stay on that seat through L3, and the CoS role is woken at L3.
243
+
235
244
  ## Release artifacts
236
245
 
237
- `npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
246
+ `npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
package/LICENSE CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,22 +1,26 @@
1
- # xray — exo for coding agents
1
+ # xray — a suit for coding agents
2
2
 
3
- **4.0** — a suit that survives the context window
3
+ ![0xRay — A Power Suit for AI Agents. survive compaction. build foundries. monitor the swarm.](docs-site/static/img/readme-hero.jpg)
4
4
 
5
- ![0xRay 4.0.42 — Confer votes. Burst runs the swarm.](docs-site/static/img/exo-skeleton-v4.jpg)
5
+ **4.1** — a suit that survives the context window
6
6
 
7
- Confer votes. Burst runs the swarm.
7
+ Bifrost is the live board. Goggles views one plane. A search runs inside that card.
8
8
 
9
- Not a catalog of agents. The product is the **skeleton you wear**.
9
+ 0xRay is a three-subsystem autonomous engine. The suit is the wear. Inference remembers. External Governance judges. The Autonomous Engine runs the work. The host you already run wears it: Grok, OpenCode, Hermes, OpenClaw, or Cursor. Memory, judgement, and payments come on with the suit. When the window closes, the next session wakes with the job, the page, and the laws.
10
+
11
+ Bifrost turns each pull request, issue, and comment into one card and a line in the right seat's inbox, then wakes that seat. Confer still completes only on a real yes. A foundry is built from mills and hangars. The mill builds and ships. The hangar is the shop.
12
+
13
+ The product is the **skeleton you wear**.
10
14
 
11
15
  ## Your AI Power Suit
12
16
 
13
17
  **Your AI Power ⚡️ Suit 🦾** — an exoskeleton that blocks AI slop from becoming real damage.
14
18
 
15
- - **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
19
+ - **Bone** — three-subsystem engine: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
16
20
  - **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
17
21
  - **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
18
22
  - **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
19
- - **Muscle** — **Repertoire is preferred.** Vendored 0.2.9 ships **on**. Dest is named laws, not hangar `repo-*` or git slugs. Station is the compact-survival ticket — not a substitute for Repertoire.
23
+ - **Muscle** — **Repertoire is preferred.** Vendored 0.2.9 ships **on**. Dest is named laws, not hangar `repo-*` or git slugs. Station is the wake ticket — not a substitute for Repertoire.
20
24
 
21
25
  ```bash
22
26
  npm install 0xray
@@ -55,6 +59,8 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
55
59
 
56
60
  | Version | Highlights |
57
61
  |---------|------------|
62
+ | **4.1.0** | Bifrost is the collector board. A cloud agent is a board row. A stuck card's L2 nudge goes to the CoS role. `live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`. Goggles views one plane. The card is in LENS.md. A search runs inside that card. |
63
+ | **4.0.43** | Confer completes only on a real PASS. Cursor gate events fail closed, except EACCES when a cloud wrapper cannot write dest. Gate C cannot be skipped. |
58
64
  | **4.0.42** | Confer votes. Burst runs the swarm. |
59
65
  | **4.0.41** | Wake cascade stays on the station module. A fresh wear fastens mill and inspect. Goggles records the worn package path. The live page plays the mesh in the browser. |
60
66
  | **4.0.40** | Live mesh runs the full loop: feed watch, render, direction, deploy, health, and the ledger both ways. |
@@ -259,7 +265,7 @@ npm run release:npm # gate + prepare + npm publish --access public
259
265
 
260
266
  ## Release
261
267
 
262
- The **4.0** line 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. Patch number lives in `package.json` + CHANGELOG.
268
+ The **4.1** line 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. Patch number lives in `package.json` + CHANGELOG.
263
269
 
264
270
  ```bash
265
271
  npm run release:gate
@@ -275,4 +281,4 @@ MIT — see [LICENSE](LICENSE)
275
281
 
276
282
  ---
277
283
 
278
- *xray — MCP-centric, governed, autonomous. Pure v2 three-subsystem.*
284
+ *xray — a three-subsystem autonomous engine. The suit is the wear.*
package/SKILLS.md CHANGED
@@ -1,9 +1,11 @@
1
1
  # 0xray Skills
2
2
 
3
- **4.0** — a suit that survives the context window
3
+ **4.1** — a suit that survives the context window
4
4
 
5
5
  Confer votes. Burst runs the swarm.
6
6
 
7
+ 0xRay is a three-subsystem autonomous engine. The suit is the wear. This file is the catalog.
8
+
7
9
  **45 skills** in this exo catalog. Default consumer plant is **`mill` + `inspect`**, not this dump. `npm install 0xray` does **not** sync 45 skills unless `foundry.json` `"costume": true`. Factory shop plant (`shop-extract`, `shop-witness`, `shop-pin`) coexists with mill plant when a hangar wears those shops. Extra shops: `foundry.json` `shopPlant`. Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares — organs (looker, vibe, mixer) live in the mill, not this catalog. Nested mill `@0xray/foundry@0.1.12`. CLI shims `foundry blip|sound` still exist on foundry 0.1.11+. Agent map: [llms.txt](llms.txt).
8
10
 
9
11
  xray ships 45 knowledge skills (`src/skills/<name>/SKILL.md`) as the **costume / self-plant catalog**. Lead-dev operating model lives in **`orchestrator`** skill + `multi_agent_orchestration.lead_dev_mode` in features.json. **Repertoire is preferred** for long-term judgment (vendored 0.2.9, dest = named laws). Station is the compact ticket, not a skill and not a keyword store. Skills load on demand via the **xray-skills** MCP server (`npx -y 0xray mcp skills`) or when you plant them. This file is the exo catalog — mill does **not** write it to the consumer root.
@@ -29,7 +29,10 @@ AGENTS.md
29
29
  SKILLS.md
30
30
 
31
31
  # Runtime state (xray inference workflows, session state)
32
- .xray/
32
+ .xray/*
33
+ !.xray/state/
34
+ .xray/state/*
35
+ !.xray/state/LENS.md
33
36
  .strray/
34
37
  strray/
35
38
  xray/inference/
package/dist/AGENTS.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # xray Agents
2
2
 
3
- Quick reference for the xray AI orchestration framework (**4.0**).
3
+ Quick reference for the 0xRay suit (**4.1**).
4
4
 
5
- **4.0** — a suit that survives the context window.
5
+ **4.1** — a suit that survives the context window.
6
6
 
7
7
  Confer votes. Burst runs the swarm.
8
8
 
9
- **Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.9, dest = laws).
9
+ **The suit is the wear.** Three-subsystem autonomous engine (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.9, dest = laws).
10
10
 
11
11
  **Temperament:** 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; Codex 11/29/69 still **deny**. Missing `suit_temperament` stays guided. See `docs-site/docs/architecture/v3-from-v2.md`.
12
12
 
@@ -18,13 +18,13 @@ Before other work, Read `.xray/state/STATION.md`. Compaction and host change are
18
18
 
19
19
  ## What is xray?
20
20
 
21
- xray provides intelligent multi-agent orchestration with automatic delegation and Codex compliance validation under the pure v2 three-subsystem model:
21
+ 0xRay is a three-subsystem autonomous engine. The suit is the wear. The host you already run wears it. When the window closes, the next session wakes with the job.
22
22
 
23
23
  - **Inference** — proposals, reflection, memory routing (Repertoire organ on in 4.0)
24
- - **External Governance** — Dynamo Solar SSOT, 69-term Codex
24
+ - **External Governance** — Dynamo Solar SSOT, 69-term Codex. Judgement stays on.
25
25
  - **Autonomous Engine** — thinDispatch 7-flow, AsideContext, confidence gate
26
26
 
27
- Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**, not a 45-skill sync (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
27
+ Agents are declared in `src/opencode/agents/*.yml` — the YML SSOT. Skills live in `src/skills/*/SKILL.md` — see [SKILLS.md](SKILLS.md) for the exo catalog. Consumer default plant is **mill + inspect**. The mill suit also wears every catalog skill and every role file (`AGENTS-consumer.md` → `AGENTS.md`). Factory hangar shops coexist via shop plant. See [llms.txt](llms.txt).
28
28
 
29
29
  ## Consumer MCP surface (7 servers)
30
30
 
@@ -44,10 +44,12 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
44
44
 
45
45
  ## Postinstall
46
46
 
47
- `postinstall.cjs` → `installAllBridges()`:
47
+ `postinstall.cjs` links vendored `@0xray/repertoire` and prints `npx 0xray wear`. It does not write `.mcp.json` or the chat bridges.
48
+
49
+ `npx 0xray wear` runs `installAllBridges()` from `install-bridges.cjs`:
48
50
 
49
51
  1. `AGENTS-consumer.md` → `AGENTS.md` (does **not** write consumer-root `SKILLS.md`)
50
- 2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). Not a 45-skill costume dump unless `foundry.json` `"costume": true`
52
+ 2. Fasten mill plant (`mill` + `inspect`). Fasten is **foundry-plant/0**: builtin plant is mill+inspect only. `foundry.json` `"plant": "@0xray/blip"` (aliases `"plant": "blip"` / `"plant": "sound"`) fastens whatever that mill package declares (looker, vibe, mixer, blip-inspect, blip-vibe, blip-looker, sound-inspect, sound-mixer live in the mill). The mill suit also wears every catalog skill and every OpenCode role file. A blip or sound seat fastens that plant only. A name outside the fastened set still fails inspect.
51
53
  3. `.gitignore.default` → `.gitignore` (if absent)
52
54
  4. `.xray/` config (`codex.json`, `features.json`, `config.json`) then overlay their plant
53
55
  5. `.mcp.json` (7 servers)
@@ -63,7 +65,7 @@ Governance deliberation: **code-review**, **security-audit**, **researcher** wit
63
65
 
64
66
  ## Memory routing + Repertoire (preferred, v3.3+)
65
67
 
66
- **Wear Repertoire.** It is the long-term judgment organ. Dest is named invariants (factory + stack laws), not hangar `repo-*` or git slugs. **Station is the compact ticket** (Read `.xray/state/STATION.md`) — not a substitute for Repertoire. The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
68
+ **Wear Repertoire.** It is the long-term judgment organ. Dest is named invariants (factory + stack laws), not hangar `repo-*` or git slugs. **Station is the wake ticket** (Read `.xray/state/STATION.md`) — not a substitute for Repertoire. The worn mill reads the **project copy** under `.xray/state/repertoire/`. 0.1.0–0.1.8 were the same judgment organ; do not pin 0.1.8. Split: `docs-site/docs/guides/station-vs-repertoire.md`.
67
69
 
68
70
  `xray/features.json` → `memory_routing` (schema: `features.schema.json`):
69
71
 
@@ -230,8 +232,15 @@ Full skill mapping: [SKILLS.md](SKILLS.md).
230
232
  | Station vs Repertoire 0.1 | `docs-site/docs/guides/station-vs-repertoire.md` |
231
233
  | AsideContext | `docs-site/docs/guides/aside-context.md` |
232
234
  | Consumer migration | `docs-site/docs/guides/consumer-migration.md` |
235
+ | Bifrost board | `docs-site/docs/plates/bifrost.md` |
236
+ | Seat wake | `grok-bot/templates/house/fleet/WAKE-ROUTINE.md` |
237
+ | Fleet lexicon | `grok-bot/LEXICON.md` |
233
238
  | Docusaurus site | https://0xrayai.github.io/xray/ |
234
239
 
240
+ ## Live board
241
+
242
+ The board seats see is the collector board (`house/live/feed/live_mesh.py`). A cloud agent is a board row (`bcId`, owning seat, linked card, state `running`, `finished`, or `failed`). The seat wake is `grok-bot/templates/house/fleet/WAKE-ROUTINE.md`: `live-inbox <seat> --turn start` on every turn, and `--turn end` on every exit. `live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`. A missing or empty one exits 2 and names it. A stuck card sends L1 to the next owner or the card owner, and L2 to the CoS role. An unacked line and a missing handoff stay on that seat through L3, and the CoS role is woken at L3.
243
+
235
244
  ## Release artifacts
236
245
 
237
- `npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
246
+ `npm run release:patch` updates: `package.json`, `CHANGELOG.md`, `README.md`, `AGENTS.md`, `AGENTS-consumer.md`, `SKILLS.md`, `llms.txt`, Docusaurus guides.
package/dist/CHANGELOG.md CHANGED
@@ -6,6 +6,115 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [4.1.1] - 2026-10-18
10
+
11
+ Work on main after 4.1.0.
12
+
13
+ ### Wear
14
+
15
+ The mill suit wears every catalog skill and every role file when costume is off. The mill plant stays `mill` and `inspect`. A blip or sound seat fastens that plant only. A name outside the fastened set still fails inspect. (#379)
16
+
17
+ ### Goggles
18
+
19
+ The lens file is `.xray/state/LENS.md`. The planes are dev, integration, domain, and ecosystem. A search runs only inside the current card. Any other search returns that card and does not run. A path switches the card. (#371)
20
+
21
+ Each card lists three to five skills in hand order. That list is the skills seek. The first skill that fits wins. If none fit, plate recall returns a skill name or declines. The seek does not call a model. A stored lens that still points at the catalog is rewritten to that list before the seek. Wear and doctor fail when a fastened suit turns goggles off. (#390)
22
+
23
+ ### Live inbox
24
+
25
+ A seat can ack an inbox line after the pull has merged or the line was dropped. (#375)
26
+
27
+ ### Docs
28
+
29
+ Four broken repository links on the docs site are fixed. (#383)
30
+
31
+ The grok-bot notes cover the memory packet, the duplicate-agent guard, and no local builds. (#378)
32
+
33
+ ### Skills
34
+
35
+ `draw-stamped-card` and the bifrost-storyboard recipe are in the catalog. (#370)
36
+
37
+ ## [4.1.0] - 2026-10-15
38
+
39
+ Work on main after 4.0.42. The [4.0.43] section below is the earlier confer and hook cut. 4.0.43 was stamped and not published.
40
+
41
+ ### Bifrost board
42
+
43
+ The board seats see is the collector board. `house/live/feed/live_mesh.py` runs the collector and the board every `LIVE_WATCH_S` seconds (default 45). An empty box board does not replace those cards.
44
+
45
+ - A pull request or issue is one card. Reviews, merges, CI, pushes, reopens, drafts, and a quiet pull request land on that card. CI stays on the card and is not board traffic.
46
+ - `merged_by` is the GitHub user who merged. A pulls list that omits `merged_by`, or that only has the author, is corrected with `GET /pulls/:n` (`house/live/feed/live_collect.py`). The author is not stored as the merger.
47
+ - `live-inbox <seat> --card <owner/repo#n> --start-after <ISO>` parks the card until that time, then one inbox line wakes the owning seat. A GitHub comment whose first line is `Start after: <ISO>` sets the same field only when the comment is from the card owner or a fleet seat, and only within 30 days.
48
+ - Handoff is `live-inbox <seat> --handoff <to> --pr <owner/repo#n> --kind <ready|critic_fail|live_pass|merge|ci_fail> --sha <head>`. `--sha` is 7 to 64 hex digits. The command posts one inbox packet and prints the 1:1 line. A room post does not clear a missing packet.
49
+ - Railway deploy polls stamp BUILDING, then DEPLOYING, then the terminal status. A poll that first sees SUCCESS backfills the stages it missed.
50
+ - Deploy goes through `house/live/app/deploy.sh`, which assembles `collector/`. A Railway build straight from git stops in the Dockerfile with `ERROR: collector/ is not assembled`.
51
+ - A cloud agent is a board row (`cloud_agents`, also `board.cloud_agents` when a card board is present). Each row has `bcId`, owning seat, linked card, `pr` when the webhook sent one, state `running`, `finished`, or `failed`, and `updated_ct`. `POST /cursor/webhook` appends `agents.jsonl` after the signature check. `POST /activity` with kind `cloud_agent` or `agent` and action `launch`, `reply`, `finished`, or `cancel` is the other feed. Webhook `ERROR`, `FAILED`, `TIMED_OUT`, and `CANCELLED` are `failed`. The newest line sets the state. (#367)
52
+
53
+ ### Nudge
54
+
55
+ `evalNudges` in `house/live/app/server.mjs` is the one nudge path.
56
+
57
+ - A live card with no beat for `NUDGE_L1_S` (default 3600) sends L1 to the next owner, or else the card owner. L2 goes to the CoS role after `NUDGE_L2_S` (default 1800). L3 repeats to the L1 seat after `NUDGE_L3_S` (default 7200), and the CoS role is woken once to reassign.
58
+ - An unacked inbox line steps L1, L2, and L3 on that same seat, `NUDGE_LINE_S` apart (default 900). The CoS role is woken at L3.
59
+ - A missing handoff nudges the owing seat at L1, again at L2, and again at L3. The CoS role is woken once at L3.
60
+
61
+ ### Wake routine
62
+
63
+ `grok-bot/templates/house/fleet/WAKE-ROUTINE.md` is the seat wake. Every turn runs `live-inbox <seat> --turn start`. Turn end runs on every exit. An owner message runs `live-inbox <seat> --prompt` first. Compaction is a wake: read Station, then NOTES, before the inbox. Notes are appended after every beat. Before launching a cloud agent for a card, the seat checks for one already running or finished with a pull request for that card.
64
+
65
+ ### live-inbox
66
+
67
+ `house/live/tools/live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`. A missing or empty one exits 2 and names it. The tool does not guess. The installed copy is `$HOME/.burst/bin/live-inbox` unless `LIVE_INBOX_BIN` is set. The wake template ships the export line.
68
+
69
+ ### Lexicon
70
+
71
+ `grok-bot/LEXICON.md` records the handoff `--sha` row and the practice **button up**: when weekly burn hits the hold line, every seat stops new work, runs no local builds, tests, or deploys on its own computer, pauses its Bifrost inbox wake until the reset, leaves only cloud agents for anything essential, and reports and acks in the room.
72
+
73
+ ### Nudge monitor
74
+
75
+ `src/monitoring/nudge-watchdog.ts` is now `nudge-monitor.ts` (`NudgeMonitor`, `nudgeMonitor`, `getNudgeMonitor`) and the config key is `features.nudge_monitor`. The old key `features.nudge_watchdog` still works as a deprecated alias when `nudge_monitor` is unset (the new key wins if both are set) and logs a one-time deprecation warning. (#303)
76
+
77
+ ## [4.0.43] - 2026-10-12
78
+
79
+ ### 🔄 Changes
80
+
81
+ - A Cursor pre-tool error denies the tool unless that error is EACCES. A cloud wrapper that cannot write dest still allows the tool.
82
+ - Cursor gate events (preToolUse, beforeShellExecution, beforeReadFile) fail closed. A crashed gate, empty or malformed input, or a missing node or hook file denies the tool. The one exception is EACCES when a cloud wrapper cannot write dest, which still allows the tool. Wear and re-wear set failClosed on those events.
83
+ - Hermes, OpenCode, OpenClaw, and Cursor run the lens and the repertoire route on the pre-tool allow path. The lens sees the tool path. A research call with no named plane stops. One named plane allows.
84
+ - The shipped plant does not write the autonomous-reporting schedule or the post-tool light marker. Turn either switch on and the writer still runs. The inference cycle still starts from `inference:run`.
85
+ - Consumer smoke inspects an empty machine home, so a Grok plugin on the real machine does not fail that seat.
86
+ - OpenCode mill install copies the plugin and leaves leftover init.sh uncopied.
87
+ - Gate C cannot be skipped. Gate D is proven only when npm lists the version, the annotated tag points at that commit, and the GitHub Release page exists. A local gate pass is not that proof.
88
+
89
+ ### 🐛 Bug Fixes
90
+ - fix: stop the vendored complete-todo command from minting PASS (39c88c8fa)
91
+ - fix: bind Confer receipts to a synthesis cycle (5134c5d05)
92
+ - fix: treat ambiguous Confer text as UNREVIEWED (06acc24f1)
93
+ - fix: complete Confer only on a real approve (8776562d7)
94
+ - fix: parse only the first Confer DECISION token (c06747d95)
95
+ - fix: keep Confer off unless it is explicitly enabled (8cd356c24). These confer fixes, and the no-LLM confer test below, are ancestors of the v4.0.42 tag. The new work in this stamp is the Cursor fail-closed cut (#255).
96
+
97
+ ### 🧪 Tests
98
+ - test: lock no-LLM confer votes out of a PASS merge (e30628fef)
99
+
100
+ ---
101
+
102
+ ## [4.0.42] - 2026-10-09
103
+
104
+ ### 🔄 Changes
105
+
106
+ Confer votes. Burst runs the swarm.
107
+
108
+ - Confer asks the MCP servers the wearing chat already spawned. Only a real PASS completes the consult. A PASS that belongs to another session is asked again.
109
+ - Wear pins Grok at the installed CLI. Hermes codex-check catches a console call. OpenClaw stays on the installed plugin. Cursor hooks stay on a git checkout.
110
+ - Burst runs the swarm live. The board keeps an honest LIVE pill and one seat state. The box posts one delta while `push.sh` holds the lock, retries once on 409, and keeps the ingest secret in the header.
111
+ - A SENT prompt holds that seat working for 10 minutes. A posted seat must match the installation token. Legacy prompt lines are still read from `fleet/prompts.jsonl`. Seats post a prompt with `live-inbox <seat> --prompt`.
112
+
113
+
114
+ ### Notes above this cut in the published package
115
+
116
+ These notes were `[Unreleased]` in the 4.0.42 package. #368 removed them from `main`. They are not new in 4.1. `[4.0.22]` through `[4.0.41]` keep the short commit lines. This is the prose.
117
+
9
118
  ### Features
10
119
  - **Goggles.** Proposed plates for goggles, suit, kits, host pack, and glossary. Goggles views one plane. Recall opens a plate when speech names that plate. Plates only. Not a new skill.
11
120
  - **Plates.** Pipeline schematics live in `docs-site/docs/plates/` (routing, governance, boot, orchestration, processor, reporting, memory-recall). Station keeps one pointer line. Pre-compact and the `MEMORY_ROUTING` inject carry that one schematic. A lesson is an episode. A plate is the machine. Not a new skill.
@@ -42,17 +151,6 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
42
151
  - Archive root `integrations/` costume SKILL dump → `docs/archive/integrations-costume/`. Live wear is `src/integrations`.
43
152
  - Archive root `commands/` stale copy → `docs/archive/commands-copy/`. Live wear is `src/opencode/commands`.
44
153
 
45
- ## [4.0.42] - 2026-10-09
46
-
47
- ### 🔄 Changes
48
-
49
- Confer votes. Burst runs the swarm.
50
-
51
- - Confer asks the MCP servers the wearing chat already spawned. Only a real PASS completes the consult. A PASS that belongs to another session is asked again.
52
- - Wear pins Grok at the installed CLI. Hermes codex-check catches a console call. OpenClaw stays on the installed plugin. Cursor hooks stay on a git checkout.
53
- - Burst runs the swarm live. The board keeps an honest LIVE pill and one seat state. The box posts one delta while `push.sh` holds the lock, retries once on 409, and keeps the ingest secret in the header.
54
- - A SENT prompt holds that seat working for 10 minutes. A posted seat must match the installation token. Legacy prompt lines are read, and the prompts file defaults to `fleet/prompts.jsonl`.
55
-
56
154
  ---
57
155
 
58
156
  ## [4.0.41] - 2026-10-07
package/dist/LICENSE CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/dist/README.md CHANGED
@@ -1,22 +1,26 @@
1
- # xray — exo for coding agents
1
+ # xray — a suit for coding agents
2
2
 
3
- **4.0** — a suit that survives the context window
3
+ ![0xRay — A Power Suit for AI Agents. survive compaction. build foundries. monitor the swarm.](docs-site/static/img/readme-hero.jpg)
4
4
 
5
- ![0xRay 4.0.42 — Confer votes. Burst runs the swarm.](docs-site/static/img/exo-skeleton-v4.jpg)
5
+ **4.1** — a suit that survives the context window
6
6
 
7
- Confer votes. Burst runs the swarm.
7
+ Bifrost is the live board. Goggles views one plane. A search runs inside that card.
8
8
 
9
- Not a catalog of agents. The product is the **skeleton you wear**.
9
+ 0xRay is a three-subsystem autonomous engine. The suit is the wear. Inference remembers. External Governance judges. The Autonomous Engine runs the work. The host you already run wears it: Grok, OpenCode, Hermes, OpenClaw, or Cursor. Memory, judgement, and payments come on with the suit. When the window closes, the next session wakes with the job, the page, and the laws.
10
+
11
+ Bifrost turns each pull request, issue, and comment into one card and a line in the right seat's inbox, then wakes that seat. Confer still completes only on a real yes. A foundry is built from mills and hangars. The mill builds and ships. The hangar is the shop.
12
+
13
+ The product is the **skeleton you wear**.
10
14
 
11
15
  ## Your AI Power Suit
12
16
 
13
17
  **Your AI Power ⚡️ Suit 🦾** — an exoskeleton that blocks AI slop from becoming real damage.
14
18
 
15
- - **Bone** — three-subsystem OS: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
19
+ - **Bone** — three-subsystem engine: Inference · External Governance (Dynamo / Codex) · Autonomous Engine (thinDispatch)
16
20
  - **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
17
21
  - **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
18
22
  - **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
19
- - **Muscle** — **Repertoire is preferred.** Vendored 0.2.9 ships **on**. Dest is named laws, not hangar `repo-*` or git slugs. Station is the compact-survival ticket — not a substitute for Repertoire.
23
+ - **Muscle** — **Repertoire is preferred.** Vendored 0.2.9 ships **on**. Dest is named laws, not hangar `repo-*` or git slugs. Station is the wake ticket — not a substitute for Repertoire.
20
24
 
21
25
  ```bash
22
26
  npm install 0xray
@@ -55,6 +59,8 @@ Docs: [guides/autonomy-command](docs-site/docs/guides/autonomy-command.md) · Sk
55
59
 
56
60
  | Version | Highlights |
57
61
  |---------|------------|
62
+ | **4.1.0** | Bifrost is the collector board. A cloud agent is a board row. A stuck card's L2 nudge goes to the CoS role. `live-inbox` requires `LIVE_URL`, `SEAT_KEYS_DIR`, and `LIVE_CURSORS`. Goggles views one plane. The card is in LENS.md. A search runs inside that card. |
63
+ | **4.0.43** | Confer completes only on a real PASS. Cursor gate events fail closed, except EACCES when a cloud wrapper cannot write dest. Gate C cannot be skipped. |
58
64
  | **4.0.42** | Confer votes. Burst runs the swarm. |
59
65
  | **4.0.41** | Wake cascade stays on the station module. A fresh wear fastens mill and inspect. Goggles records the worn package path. The live page plays the mesh in the browser. |
60
66
  | **4.0.40** | Live mesh runs the full loop: feed watch, render, direction, deploy, health, and the ledger both ways. |
@@ -259,7 +265,7 @@ npm run release:npm # gate + prepare + npm publish --access public
259
265
 
260
266
  ## Release
261
267
 
262
- The **4.0** line 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. Patch number lives in `package.json` + CHANGELOG.
268
+ The **4.1** line 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. Patch number lives in `package.json` + CHANGELOG.
263
269
 
264
270
  ```bash
265
271
  npm run release:gate
@@ -275,4 +281,4 @@ MIT — see [LICENSE](LICENSE)
275
281
 
276
282
  ---
277
283
 
278
- *xray — MCP-centric, governed, autonomous. Pure v2 three-subsystem.*
284
+ *xray — a three-subsystem autonomous engine. The suit is the wear.*