0xray 4.0.38 → 4.0.40
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.
- package/.grok-plugin/plugin.json +1 -1
- package/.xray/features.json +1 -1
- package/AGENTS-consumer.md +1 -1
- package/AGENTS.md +1 -1
- package/README.md +2 -2
- package/SKILLS.md +1 -1
- package/dist/AGENTS.md +1 -1
- package/dist/CHANGELOG.md +25 -0
- package/dist/README.md +2 -2
- package/dist/SKILLS.md +1 -1
- package/dist/integrations/hooks/goggles-planes.json +1 -1
- package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/docs-site/docs/plates/activity-log.md +1 -1
- package/docs-site/docs/plates/cursor-compact.md +1 -1
- package/docs-site/docs/plates/grok-compact.md +1 -1
- package/docs-site/docs/plates/grokbot.md +1 -1
- package/docs-site/docs/plates/house.md +1 -1
- package/docs-site/docs/plates/index.md +1 -1
- package/docs-site/docs/plates/inference-files.md +1 -1
- package/docs-site/docs/plates/kept-line.md +1 -1
- package/docs-site/docs/plates/lens-gate.md +1 -1
- package/docs-site/docs/plates/lens-page.md +1 -1
- package/docs-site/docs/plates/live-mesh.md +41 -0
- package/docs-site/docs/plates/notes-page.md +1 -1
- package/docs-site/docs/plates/package-face.md +1 -1
- package/docs-site/docs/plates/payload-heat.md +1 -1
- package/docs-site/docs/plates/pickup-stamp.md +1 -1
- package/docs-site/docs/plates/pre-tool.md +1 -1
- package/docs-site/docs/plates/record-map.md +1 -1
- package/docs-site/docs/plates/reflection-page.md +1 -1
- package/docs-site/docs/plates/review.md +1 -1
- package/docs-site/docs/plates/session-capture.md +1 -1
- package/docs-site/docs/plates/site-manual.md +1 -1
- package/docs-site/docs/plates/stamp-plate.md +1 -1
- package/docs-site/docs/plates/station-card.md +1 -1
- package/docs-site/docs/plates/station-heat.md +1 -1
- package/docs-site/docs/plates/suit-organs.md +1 -1
- package/docs-site/docs/plates/suit-settings.md +1 -1
- package/docs-site/docs/plates/suit-wear.md +1 -1
- package/docs-site/docs/plates/trail-state.md +1 -1
- package/docs-site/docs/plates/work-fresh.md +1 -1
- package/docs-site/docs/plates/write-home.md +1 -1
- package/llms.txt +1 -1
- package/package.json +2 -1
- package/scripts/foundry/plant/skills/mill/SKILL.md +1 -1
- package/scripts/node/consumer-install-smoke.mjs +3 -3
- package/scripts/node/playwright-smoke-server.cjs +27 -0
- package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
- package/vendor/@0xray/repertoire/README.md +1 -1
- package/vendor/@0xray/repertoire/dist/RepertoireService.js +1 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.js +4 -1
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts +5 -0
- package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js +16 -6
- package/vendor/@0xray/repertoire/dist/paths.js +1 -2
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts +16 -6
- package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js +19 -2
- package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js +34 -2
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.d.ts +3 -0
- package/vendor/@0xray/repertoire/dist/registry/InferenceStateManager.js +25 -1
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.d.ts +37 -2
- package/vendor/@0xray/repertoire/dist/synthesis/meta-inference-engine.js +176 -19
- package/vendor/@0xray/repertoire/dist/types.d.ts +6 -0
- package/vendor/@0xray/repertoire/package.json +2 -2
- package/vendor/@0xray/repertoire/scripts/verify-grok-suit.mjs +9 -6
- package/vendor/@0xray/repertoire/scripts/verify-synthesis-dogfood.mjs +109 -5
- package/xray/features.json +1 -1
- package/.opencode/agents/api-design.yml +0 -31
- package/.opencode/agents/architect.yml +0 -15
- package/.opencode/agents/architecture-patterns.yml +0 -14
- package/.opencode/agents/auto-format.yml +0 -14
- package/.opencode/agents/backend-engineer.yml +0 -12
- package/.opencode/agents/boot-orchestrator.yml +0 -14
- package/.opencode/agents/bug-triage-specialist.yml +0 -15
- package/.opencode/agents/code-analyzer.yml +0 -12
- package/.opencode/agents/code-reviewer.yml +0 -14
- package/.opencode/agents/content-creator.yml +0 -12
- package/.opencode/agents/database-engineer.yml +0 -12
- package/.opencode/agents/devops-engineer.yml +0 -12
- package/.opencode/agents/framework-compliance-audit.yml +0 -14
- package/.opencode/agents/frontend-engineer.yml +0 -12
- package/.opencode/agents/frontend-ui-ux-engineer.yml +0 -12
- package/.opencode/agents/git-workflow.yml +0 -15
- package/.opencode/agents/growth-strategist.yml +0 -12
- package/.opencode/agents/hermes-agent.yml +0 -12
- package/.opencode/agents/inference-improve.yml +0 -12
- package/.opencode/agents/lint.yml +0 -14
- package/.opencode/agents/log-monitor.yml +0 -12
- package/.opencode/agents/mobile-developer.yml +0 -12
- package/.opencode/agents/model-health-check.yml +0 -12
- package/.opencode/agents/multimodal-looker.yml +0 -12
- package/.opencode/agents/performance-analysis.yml +0 -12
- package/.opencode/agents/performance-engineer.yml +0 -12
- package/.opencode/agents/performance-optimization.yml +0 -12
- package/.opencode/agents/processor-pipeline.yml +0 -14
- package/.opencode/agents/project-analysis.yml +0 -12
- package/.opencode/agents/refactorer.yml +0 -12
- package/.opencode/agents/researcher.yml +0 -12
- package/.opencode/agents/security-auditor.yml +0 -12
- package/.opencode/agents/security-scan.yml +0 -12
- package/.opencode/agents/seo-consultant.yml +0 -12
- package/.opencode/agents/session-management.yml +0 -12
- package/.opencode/agents/state-manager.yml +0 -12
- package/.opencode/agents/storyteller.yml +0 -12
- package/.opencode/agents/strategist.yml +0 -12
- package/.opencode/agents/tech-writer.yml +0 -12
- package/.opencode/agents/testing-best-practices.yml +0 -12
- package/.opencode/agents/testing-lead.yml +0 -12
- package/.opencode/agents/ui-ux-design.yml +0 -12
- package/.opencode/codex.codex +0 -8
- package/.opencode/commands/auto-format.md +0 -99
- package/.opencode/commands/auto-summary-capture.md +0 -90
- package/.opencode/commands/dependency-audit.md +0 -184
- package/.opencode/commands/enforcer-daily-scan.md +0 -137
- package/.opencode/commands/framework-compliance-audit.md +0 -205
- package/.opencode/commands/interactive-validator.md +0 -75
- package/.opencode/commands/job-summary-logger.md +0 -68
- package/.opencode/commands/lint.md +0 -11
- package/.opencode/commands/mode-switch.md +0 -95
- package/.opencode/commands/model-health-check.md +0 -186
- package/.opencode/commands/performance-analysis.md +0 -144
- package/.opencode/commands/pre-commit-introspection.md +0 -185
- package/.opencode/commands/pre-commit-introspection.sh +0 -133
- package/.opencode/commands/security-scan.md +0 -157
- package/.opencode/commands/sisyphus-validation.md +0 -128
- package/.opencode/commands/summary-logger.md +0 -83
- package/.opencode/enforcer-config.json +0 -282
- package/.opencode/workflows/post-deployment-audit.yml +0 -123
package/.grok-plugin/plugin.json
CHANGED
package/.xray/features.json
CHANGED
package/AGENTS-consumer.md
CHANGED
|
@@ -6,7 +6,7 @@ Quick reference for the 0xRay AI orchestration framework worn on **{{CONSUMER_NA
|
|
|
6
6
|
|
|
7
7
|
**4.0** — a suit that survives the context window
|
|
8
8
|
|
|
9
|
-
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
|
+
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.
|
|
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
|
|
package/AGENTS.md
CHANGED
|
@@ -4,7 +4,7 @@ Quick reference for the xray AI orchestration framework (**4.0**).
|
|
|
4
4
|
|
|
5
5
|
**4.0** — a suit that survives the context window.
|
|
6
6
|
|
|
7
|
-
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.
|
|
7
|
+
**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).
|
|
8
8
|
|
|
9
9
|
**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`.
|
|
10
10
|
|
package/README.md
CHANGED
|
@@ -14,13 +14,13 @@ Not a catalog of agents. The product is the **skeleton you wear**.
|
|
|
14
14
|
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
15
15
|
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
16
16
|
- **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
|
|
17
|
-
- **Muscle** — **Repertoire is preferred.** Vendored 0.2.
|
|
17
|
+
- **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.
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install 0xray
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. **Repertoire is preferred** — vendored **0.2.
|
|
23
|
+
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. **Repertoire is preferred** — vendored **0.2.9** ships on: factory + stack laws, in-process routing, extra host MCP `repertoire`. Not an eighth `xray-*` server. Dest is a judgment index. Explicit opt-out only: `"enabled": false, "provider": "repertoire"`. Do not pin 0.1.8.
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
package/SKILLS.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**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).
|
|
6
6
|
|
|
7
|
-
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.
|
|
7
|
+
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.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
package/dist/AGENTS.md
CHANGED
|
@@ -4,7 +4,7 @@ Quick reference for the xray AI orchestration framework (**4.0**).
|
|
|
4
4
|
|
|
5
5
|
**4.0** — a suit that survives the context window.
|
|
6
6
|
|
|
7
|
-
**Exo, not catalog.** Three-subsystem OS (Inference · External Governance · Autonomous Engine) · constitution always on · temperament by host · 4 floors · **Repertoire preferred** (vendored 0.2.
|
|
7
|
+
**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).
|
|
8
8
|
|
|
9
9
|
**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`.
|
|
10
10
|
|
package/dist/CHANGELOG.md
CHANGED
|
@@ -42,6 +42,31 @@ The format is based on [Conventional Commits](https://www.conventionalcommits.or
|
|
|
42
42
|
- Archive root `integrations/` costume SKILL dump → `docs/archive/integrations-costume/`. Live wear is `src/integrations`.
|
|
43
43
|
- Archive root `commands/` stale copy → `docs/archive/commands-copy/`. Live wear is `src/opencode/commands`.
|
|
44
44
|
|
|
45
|
+
## [4.0.40] - 2026-10-05
|
|
46
|
+
|
|
47
|
+
### 🔄 Changes
|
|
48
|
+
|
|
49
|
+
### 🔎 Other Changes
|
|
50
|
+
- house/live-mesh: full loop — feed watch, mesh render, direction, deploy, `/health`, X ledger both ways (#214, #215).
|
|
51
|
+
- house: define Ping-pong in OP-PROC lexicon (#213).
|
|
52
|
+
- house: OP-PROC cadence cleanup — muse-house lock, fleet forge0x1-merge, quiet/budget, sudo-copy seats (#216).
|
|
53
|
+
- house: OP-PROC eng PR coach stack + 2026-10-04 eng state lock (#210, #212).
|
|
54
|
+
- docs/dist: Dist packet note for 0xray 4.0.39 / repertoire 0.2.9 (#211).
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## [4.0.39] - 2026-10-03
|
|
59
|
+
|
|
60
|
+
### 🔄 Changes
|
|
61
|
+
|
|
62
|
+
### 🔎 Other Changes
|
|
63
|
+
- Keep the seven stack laws already worn in the suit. (427b0538e)
|
|
64
|
+
- Vendor repertoire 0.2.9. (b45ed22f9)
|
|
65
|
+
- Merge pull request #209 from 0xRayAI/cursor/evidence-before-grade-d703 (92a4d6dd9)
|
|
66
|
+
- house: add Evidence before grade rules under §3 (0fa229981)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
45
70
|
## [4.0.38] - 2026-10-03
|
|
46
71
|
|
|
47
72
|
### 🔄 Changes
|
package/dist/README.md
CHANGED
|
@@ -14,13 +14,13 @@ Not a catalog of agents. The product is the **skeleton you wear**.
|
|
|
14
14
|
- **Always on** — Codex 11 / 29 / 69, destructive shell, no new MCP/skill/handler surface
|
|
15
15
|
- **Temperament** — `frontier` | `guided` | `strict` | `auto` — how loud the engine is, not whether governance exists
|
|
16
16
|
- **Wear** — Grok, OpenCode, Hermes, OpenClaw, plus Cursor project hooks. One SSOT gate
|
|
17
|
-
- **Muscle** — **Repertoire is preferred.** Vendored 0.2.
|
|
17
|
+
- **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.
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npm install 0xray
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. **Repertoire is preferred** — vendored **0.2.
|
|
23
|
+
Consumer `npm install 0xray` auto-wires four chat bridges, Cursor project hooks, and seven MCP servers. **Repertoire is preferred** — vendored **0.2.9** ships on: factory + stack laws, in-process routing, extra host MCP `repertoire`. Not an eighth `xray-*` server. Dest is a judgment index. Explicit opt-out only: `"enabled": false, "provider": "repertoire"`. Do not pin 0.1.8.
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
26
26
|
|
package/dist/SKILLS.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**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).
|
|
6
6
|
|
|
7
|
-
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.
|
|
7
|
+
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.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -35,4 +35,4 @@ Today those writers append `logs/framework/activity.log`. The features default s
|
|
|
35
35
|
|
|
36
36
|
When: on the tool hook, on framework logger flush, and on boot when file logging is on. Why: the report and the pulse read one tail, not a pile of copies.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0.
|
|
38
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ Cursor preCompact writes the station card and cannot block the compact.
|
|
|
32
32
|
|
|
33
33
|
The file is `src/integrations/cursor/hooks/pre-compact.js`. The message tells the seat to read STATION.md. The plates that belong here are payload-heat and station-heat.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ Grok PreCompact runs session-start.js with the pre_compact event.
|
|
|
32
32
|
|
|
33
33
|
The hook is `session-start.js --hook-event=pre_compact`. It calls `buildSessionBootPayload`, writes the station card, and prints nothing. It does not match the conversation. Grok ignores hook stdout. The plates that belong here are payload-heat, cursor-compact, and work-fresh.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -38,4 +38,4 @@ Give your bots a house: shared rules, one board for the work, and memory that st
|
|
|
38
38
|
code links: suit → memory, house → doctor, memory → station. Other lines show reading order only.
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
stamped · 0xray 4.0.
|
|
41
|
+
stamped · 0xray 4.0.40 · @0xray/grok-bot 0.1.8
|
|
@@ -32,4 +32,4 @@ A station rewrite keeps one Fresh line and drops the copies.
|
|
|
32
32
|
|
|
33
33
|
mergeStationMarkdown in src/integrations/hooks/station-hook-runtime.cjs treats a Fresh line as stock. Copies are not preserved. When the new card has no Fresh line, the latest one is kept. The plates that belong here are station-card and work-fresh.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ A search names one plane or it stops.
|
|
|
32
32
|
|
|
33
33
|
lensBeforeResearch in src/integrations/hooks/goggles-pipeline.mjs returns null when the call is not research, and when the spoken text names exactly one card plane. Zero names, or more than one, deny with Name one plane. A shell that reads a project source file is research. The first open of a source file that no lens lists is allowed and remembered. The next search stops until that file is on a lens and the plate is on disk. The hook does not author the plate. The plate that belongs here is pre-tool.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ The lens page is the card for one plane.
|
|
|
32
32
|
|
|
33
33
|
`formatCardPane` in `src/integrations/hooks/goggles-pipeline.mjs` draws the card. Read the card instead of searching the tree. The plates that belong here are record-map and lens-gate.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Live mesh
|
|
3
|
+
sidebar_label: Live mesh
|
|
4
|
+
plate_type: pipeline
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Live mesh
|
|
8
|
+
|
|
9
|
+
Ping-pong eng events become one ordered JSON feed, then a mesh render. Markdown is never the source.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
┌────────────────────────────────────────────────────────────┐
|
|
13
|
+
│ INPUT LAYER │
|
|
14
|
+
│ ┌──────────────┐ ┌──────────┐ ┌─────────┐ ┌───────────┐ │
|
|
15
|
+
│ │ GitHub REST │ │ deploy │ │ /health │ │ X ledger │ │
|
|
16
|
+
│ │ PR/issue │ │ muse │ │ probe │ │ herald │ │
|
|
17
|
+
│ └──────┬───────┘ └────┬─────┘ └────┬────┘ └─────┬─────┘ │
|
|
18
|
+
│ └──────────────┴────────────┴────────────┘ │
|
|
19
|
+
└─────────────────────────────┬──────────────────────────────┘
|
|
20
|
+
v
|
|
21
|
+
┌─────────────────────────────┼──────────────────────────────┐
|
|
22
|
+
│ PROCESSING LAYER v │
|
|
23
|
+
│ ┌────────────────────────────────────────────────────┐ │
|
|
24
|
+
│ │ fetch_feed.py │ │
|
|
25
|
+
│ │ poll → dedupe on id → rewrite live-events.json │ │
|
|
26
|
+
│ │ --watch keeps the feed warm │ │
|
|
27
|
+
│ └──────────────────────────┬─────────────────────────┘ │
|
|
28
|
+
└──────────────────────────────┼────────────────────────────┘
|
|
29
|
+
v
|
|
30
|
+
┌──────────────────────────────┼────────────────────────────┐
|
|
31
|
+
│ OUTPUT LAYER v │
|
|
32
|
+
│ ┌──────────────────────┐ ┌──────────────────────────┐ │
|
|
33
|
+
│ │ live-events.json │ │ render_mesh.py │ │
|
|
34
|
+
│ │ (+ jsonl append) │ │ mp4 / --follow │ │
|
|
35
|
+
│ └──────────────────────┘ └──────────────────────────┘ │
|
|
36
|
+
└────────────────────────────────────────────────────────────┘
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Paths live under `house/live-mesh/`. Schema is `schema.json`. The plate that belongs here is house.
|
|
40
|
+
|
|
41
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ Notes are the body the station card cannot hold.
|
|
|
32
32
|
|
|
33
33
|
The page is `.xray/state/NOTES.md`. The pickup line equals the station intent. The default depth is the working notes: the point, the coverage, the library, the open pull requests, the rituals, and the next cut. A pickup line alone does not survive a compact. PreCompact calls `stampNotesPickup`, which updates only that line and leaves the body alone. The hook does not check the body. The seat writes it before the compact. Do not commit this file. Do not feed it to Repertoire.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ stampNotesPickup writes one pickup line and leaves the rest of NOTES.md alone.
|
|
|
32
32
|
|
|
33
33
|
The comment on the function is one pickup line. There is no check that the working notes are present. The plate that belongs here is notes-page.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ The tool hook is where the lens gate runs.
|
|
|
32
32
|
|
|
33
33
|
pre-tool-use.js joins the command, the written content, and the paths, then calls lensBeforeResearch. A deny ends the hook. The plate that belongs here is lens-gate.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -54,4 +54,4 @@ A state flow plate: one critic pass, one fix, one re-review, then stop.
|
|
|
54
54
|
|
|
55
55
|
A FAIL names the file and a test that fails on the old code. One author fixes that hole. A second session waits while the verdict is open. Re-review that new head. A hole the new test did not lock returns to ONE FIX. A PASS ends the plate. A note stays a note and does not open another lap.
|
|
56
56
|
|
|
57
|
-
stamped · 0xray 4.0.
|
|
57
|
+
stamped · 0xray 4.0.40
|
|
@@ -35,4 +35,4 @@ Today that file is `docs/inference/latest-session.json`. The home is `.xray/infe
|
|
|
35
35
|
|
|
36
36
|
Station reads the file for heat. The inference accumulator reads `session-*.json` beside it. Do not mint a `session-<date>-<sha>` file for the station note.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0.
|
|
38
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ On a compact event applyStationHeat stamps the notes pickup line.
|
|
|
32
32
|
|
|
33
33
|
`isCompactHook` is true when the hook name contains compact. The body of NOTES.md is left alone. The plates that belong here are pickup-stamp and notes-page.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -35,4 +35,4 @@ Reporting reads the activity log and may write a report. Station reads `latest-s
|
|
|
35
35
|
|
|
36
36
|
Repertoire already keeps `inference-state.json` and the day log under `.xray/state/repertoire/`. Goggles does not write these files. It reads a plate when one plane is named.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0.
|
|
38
|
+
stamped · 0xray 4.0.40
|
|
@@ -34,4 +34,4 @@ Wear copies hooks, features.json, and the consumer gitignore into the project, a
|
|
|
34
34
|
|
|
35
35
|
A worn project is a consumer. Its writes go to its own `.xray/logs` and `.xray/inference`, not into `docs/` and not into `.opencode/logs`.
|
|
36
36
|
|
|
37
|
-
stamped · 0xray 4.0.
|
|
37
|
+
stamped · 0xray 4.0.40
|
|
@@ -32,4 +32,4 @@ Refresh writes one Fresh line from git and the published package.
|
|
|
32
32
|
|
|
33
33
|
refreshFreshness in src/nucleus/work-freshness.mjs fetches origin, reads npm view 0xray version, and returns that one line. A compact hook does not call it. The plate that belongs here is station-card.
|
|
34
34
|
|
|
35
|
-
stamped · 0xray 4.0.
|
|
35
|
+
stamped · 0xray 4.0.40
|
|
@@ -35,4 +35,4 @@ The path table is `src/integrations/hooks/write-home.cjs`. Writers use it. Reade
|
|
|
35
35
|
|
|
36
36
|
Still on the old path until each caller is rewired: the activity logger, the framework logger, the pipeline hook, the Grok hook, the Hermes bridge, station capture, `saveSessionInference`, reporting, pulse, monitor, and `features.json` `log_path`.
|
|
37
37
|
|
|
38
|
-
stamped · 0xray 4.0.
|
|
38
|
+
stamped · 0xray 4.0.40
|
package/llms.txt
CHANGED
|
@@ -41,7 +41,7 @@ Registered in `.mcp.json` as `npx -y 0xray mcp <cmd>`:
|
|
|
41
41
|
| `xray-code-review` | Proposal quality |
|
|
42
42
|
| `xray-architect-tools` | System design |
|
|
43
43
|
|
|
44
|
-
Not an 8th `xray-*` server. **Repertoire is preferred** — vendored 0.2.
|
|
44
|
+
Not an 8th `xray-*` server. **Repertoire is preferred** — vendored 0.2.9 ships on (`npx @0xray/repertoire mcp`). Dest is named laws, not hangar `repo-*` or git slugs. Survive compact is **Station** (Read `.xray/state/STATION.md`). Station is the ticket, not a substitute for Repertoire. Do not pin 0.1.8.
|
|
45
45
|
|
|
46
46
|
## Codex 69 (always on)
|
|
47
47
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "0xray",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.40",
|
|
4
4
|
"description": "Multi-agent orchestration and Codex governance for OpenCode, Hermes, Grok Build, and OpenClaw",
|
|
5
5
|
"readme": "README.md",
|
|
6
6
|
"license": "MIT",
|
|
@@ -226,6 +226,7 @@
|
|
|
226
226
|
},
|
|
227
227
|
"devDependencies": {
|
|
228
228
|
"@eslint/js": "^9.39.2",
|
|
229
|
+
"@playwright/test": "^1.55.0",
|
|
229
230
|
"@types/express": "^5.0.0",
|
|
230
231
|
"@types/jsonwebtoken": "^9.0.7",
|
|
231
232
|
"@types/node": "^22.10.2",
|
|
@@ -11,7 +11,7 @@ The mill **fastens** a suit. Default mill plant is **inspect** (inspecting AI wo
|
|
|
11
11
|
|
|
12
12
|
**Mill-fill:** their keys/files win. Mill plant names they did not overlay stay. JSON always merges.
|
|
13
13
|
|
|
14
|
-
**Factory:** **Repertoire is preferred** (vendored 0.2.
|
|
14
|
+
**Factory:** **Repertoire is preferred** (vendored 0.2.9 ships on; dest = named laws). Seven generated MCP. Constitution (PPE) stays worn. Not a fifth MCP. Not 5.0.
|
|
15
15
|
|
|
16
16
|
**Costume:** `foundry.json` `"costume": true` copies the 45/42 mill costume.
|
|
17
17
|
|
|
@@ -90,7 +90,7 @@ function assertOrganRequire(tmpRoot) {
|
|
|
90
90
|
if (organPkg.name !== "@0xray/repertoire") {
|
|
91
91
|
throw new Error(`required organ name ${organPkg.name}`);
|
|
92
92
|
}
|
|
93
|
-
if (organPkg.version !== "0.2.
|
|
93
|
+
if (organPkg.version !== "0.2.9") {
|
|
94
94
|
throw new Error(`required organ version ${organPkg.version}`);
|
|
95
95
|
}
|
|
96
96
|
if (fs.existsSync(path.join(tmpRoot, "vendor"))) {
|
|
@@ -163,8 +163,8 @@ function assertFreshInstallDefaults(tmpRoot, version) {
|
|
|
163
163
|
throw new Error("vendored @0xray/repertoire missing from fresh tarball install");
|
|
164
164
|
}
|
|
165
165
|
const organ = JSON.parse(fs.readFileSync(organPkg, "utf-8"));
|
|
166
|
-
if (organ.version !== "0.2.
|
|
167
|
-
throw new Error(`expected organ 0.2.
|
|
166
|
+
if (organ.version !== "0.2.9") {
|
|
167
|
+
throw new Error(`expected organ 0.2.9, got ${organ.version}`);
|
|
168
168
|
}
|
|
169
169
|
console.log(" ✅ .xray/features.json fresh-install defaults (opt-in off)");
|
|
170
170
|
return { consumerFeaturesPath, features };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Minimal static server for the Arch1 Playwright release-gate battery.
|
|
4
|
+
* Serves one HTML page with a tiny script so chromium coverage has a target.
|
|
5
|
+
*/
|
|
6
|
+
const http = require('http');
|
|
7
|
+
const port = Number(process.env.PLAYWRIGHT_SMOKE_PORT || 3000);
|
|
8
|
+
const html = `<!doctype html>
|
|
9
|
+
<html lang="en">
|
|
10
|
+
<head><meta charset="utf-8"><title>0xray release gate</title></head>
|
|
11
|
+
<body>
|
|
12
|
+
<main id="gate">release-gate-ok</main>
|
|
13
|
+
<script>
|
|
14
|
+
window.__XRAY_RELEASE_GATE__ = function mark() {
|
|
15
|
+
return document.getElementById('gate').textContent;
|
|
16
|
+
};
|
|
17
|
+
window.__XRAY_RELEASE_GATE__();
|
|
18
|
+
</script>
|
|
19
|
+
</body>
|
|
20
|
+
</html>`;
|
|
21
|
+
const server = http.createServer((req, res) => {
|
|
22
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
23
|
+
res.end(html);
|
|
24
|
+
});
|
|
25
|
+
server.listen(port, '127.0.0.1', () => {
|
|
26
|
+
process.stdout.write(`playwright-smoke-server listening on ${port}\n`);
|
|
27
|
+
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Factory memory organ for [0xRay](https://github.com/0xRayAI/xray): seed primitives, in-process memory routing, extra MCP (not an 8th `xray-*` server).
|
|
4
4
|
|
|
5
|
-
**v0.2.
|
|
5
|
+
**v0.2.9** · 0xRay **4.0** wear. Runtime does **not** depend on `0xray` (optional peer for suit-verify scripts).
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -32,6 +32,7 @@ export class RepertoireService {
|
|
|
32
32
|
this.metaInference = new MetaInferenceEngine({
|
|
33
33
|
logDir: this.logDir,
|
|
34
34
|
statePath: options.statePath ?? writable.statePath,
|
|
35
|
+
reportPath: join(this.projectRoot, 'logs', 'meta-inference', 'synthesis.md'),
|
|
35
36
|
});
|
|
36
37
|
this.feedbackIngester = new OrchestratorFeedbackIngester(options.feedbackDir ?? writable.feedbackDir);
|
|
37
38
|
if (shouldAutoSyncField(options.syncField)) {
|
|
@@ -94,7 +94,10 @@ export class RepertoireOrchestratorBridge {
|
|
|
94
94
|
const repertoireContext = this.buildRoutingContext(operation);
|
|
95
95
|
const adjustedScore = this.injector.adjustComplexityScore(complexityScore, repertoireContext, confidenceContext);
|
|
96
96
|
let agent = baseAgent;
|
|
97
|
-
|
|
97
|
+
// Trap name alone must not change the agent. Crossing the architect line
|
|
98
|
+
// (debug / investigate / redesign / explicit architect) may route to architect.
|
|
99
|
+
const crossesArchitectLine = /\b(debug|investigate|redesign|architect)\b/i.test(operation);
|
|
100
|
+
if (confidenceContext.highConfidenceTrapPresent && adjustedScore >= 26 && crossesArchitectLine) {
|
|
98
101
|
agent = 'architect';
|
|
99
102
|
}
|
|
100
103
|
else if (repertoireContext.matchedTags.includes('provenance-failure') &&
|
|
@@ -24,6 +24,11 @@ export declare class SignalInjector {
|
|
|
24
24
|
*/
|
|
25
25
|
adjustComplexityScore(baseScore: number, context: RepertoireRoutingContext, confidenceContext?: ReturnType<typeof getConfidenceForTask>): number;
|
|
26
26
|
private resolveSynthesisReportPath;
|
|
27
|
+
/**
|
|
28
|
+
* A dry or UNREVIEWED report is not inference. It must not become an excerpt
|
|
29
|
+
* or a routing flag.
|
|
30
|
+
*/
|
|
31
|
+
private consumableSynthesisPath;
|
|
27
32
|
private getSynthesisExcerpt;
|
|
28
33
|
private readCodexExcerpt;
|
|
29
34
|
private readPlanExcerpt;
|
|
@@ -177,13 +177,23 @@ export class SignalInjector {
|
|
|
177
177
|
const custom = this.synthesisReportPath.startsWith('/')
|
|
178
178
|
? this.synthesisReportPath
|
|
179
179
|
: join(this.projectRoot, this.synthesisReportPath);
|
|
180
|
-
return
|
|
180
|
+
return this.consumableSynthesisPath(custom);
|
|
181
181
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
return this.consumableSynthesisPath(join(this.projectRoot, 'logs/meta-inference/synthesis.md'));
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* A dry or UNREVIEWED report is not inference. It must not become an excerpt
|
|
186
|
+
* or a routing flag.
|
|
187
|
+
*/
|
|
188
|
+
consumableSynthesisPath(candidate) {
|
|
189
|
+
if (!existsSync(candidate))
|
|
190
|
+
return null;
|
|
191
|
+
const content = readFileSync(candidate, 'utf8');
|
|
192
|
+
if (content.trim().length === 0)
|
|
193
|
+
return null;
|
|
194
|
+
if (/\bUNREVIEWED\b/.test(content))
|
|
195
|
+
return null;
|
|
196
|
+
return candidate;
|
|
187
197
|
}
|
|
188
198
|
getSynthesisExcerpt(maxChars) {
|
|
189
199
|
const reportPath = this.resolveSynthesisReportPath();
|
|
@@ -421,8 +421,7 @@ export function reloadOpProc(cwd = process.cwd()) {
|
|
|
421
421
|
}
|
|
422
422
|
function mergeProjectOverlays(destPath) {
|
|
423
423
|
mergeStackOverlay(destPath);
|
|
424
|
-
// Suit
|
|
425
|
-
// and then prunes them records a fake 59 → 45 drop on every compact.
|
|
424
|
+
// Suit wake / REPERTOIRE_SUBJECT_OVERLAY=0 keeps repo-* subject flesh off the project file.
|
|
426
425
|
if (process.env.REPERTOIRE_SUBJECT_OVERLAY === '0')
|
|
427
426
|
return;
|
|
428
427
|
mergeSubjectOverlay(destPath);
|