0xray 4.0.39 → 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.
Files changed (102) hide show
  1. package/.grok-plugin/plugin.json +1 -1
  2. package/.xray/features.json +1 -1
  3. package/dist/CHANGELOG.md +13 -0
  4. package/dist/integrations/hooks/goggles-planes.json +1 -1
  5. package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  6. package/docs-site/docs/plates/activity-log.md +1 -1
  7. package/docs-site/docs/plates/cursor-compact.md +1 -1
  8. package/docs-site/docs/plates/grok-compact.md +1 -1
  9. package/docs-site/docs/plates/grokbot.md +1 -1
  10. package/docs-site/docs/plates/house.md +1 -1
  11. package/docs-site/docs/plates/index.md +1 -1
  12. package/docs-site/docs/plates/inference-files.md +1 -1
  13. package/docs-site/docs/plates/kept-line.md +1 -1
  14. package/docs-site/docs/plates/lens-gate.md +1 -1
  15. package/docs-site/docs/plates/lens-page.md +1 -1
  16. package/docs-site/docs/plates/live-mesh.md +41 -0
  17. package/docs-site/docs/plates/notes-page.md +1 -1
  18. package/docs-site/docs/plates/package-face.md +1 -1
  19. package/docs-site/docs/plates/payload-heat.md +1 -1
  20. package/docs-site/docs/plates/pickup-stamp.md +1 -1
  21. package/docs-site/docs/plates/pre-tool.md +1 -1
  22. package/docs-site/docs/plates/record-map.md +1 -1
  23. package/docs-site/docs/plates/reflection-page.md +1 -1
  24. package/docs-site/docs/plates/review.md +1 -1
  25. package/docs-site/docs/plates/session-capture.md +1 -1
  26. package/docs-site/docs/plates/site-manual.md +1 -1
  27. package/docs-site/docs/plates/stamp-plate.md +1 -1
  28. package/docs-site/docs/plates/station-card.md +1 -1
  29. package/docs-site/docs/plates/station-heat.md +1 -1
  30. package/docs-site/docs/plates/suit-organs.md +1 -1
  31. package/docs-site/docs/plates/suit-settings.md +1 -1
  32. package/docs-site/docs/plates/suit-wear.md +1 -1
  33. package/docs-site/docs/plates/trail-state.md +1 -1
  34. package/docs-site/docs/plates/work-fresh.md +1 -1
  35. package/docs-site/docs/plates/write-home.md +1 -1
  36. package/package.json +2 -1
  37. package/scripts/node/playwright-smoke-server.cjs +27 -0
  38. package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  39. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/RepertoireOrchestratorBridge.js +4 -1
  40. package/vendor/@0xray/repertoire/dist/paths.js +3 -0
  41. package/xray/features.json +1 -1
  42. package/.opencode/agents/api-design.yml +0 -31
  43. package/.opencode/agents/architect.yml +0 -15
  44. package/.opencode/agents/architecture-patterns.yml +0 -14
  45. package/.opencode/agents/auto-format.yml +0 -14
  46. package/.opencode/agents/backend-engineer.yml +0 -12
  47. package/.opencode/agents/boot-orchestrator.yml +0 -14
  48. package/.opencode/agents/bug-triage-specialist.yml +0 -15
  49. package/.opencode/agents/code-analyzer.yml +0 -12
  50. package/.opencode/agents/code-reviewer.yml +0 -14
  51. package/.opencode/agents/content-creator.yml +0 -12
  52. package/.opencode/agents/database-engineer.yml +0 -12
  53. package/.opencode/agents/devops-engineer.yml +0 -12
  54. package/.opencode/agents/framework-compliance-audit.yml +0 -14
  55. package/.opencode/agents/frontend-engineer.yml +0 -12
  56. package/.opencode/agents/frontend-ui-ux-engineer.yml +0 -12
  57. package/.opencode/agents/git-workflow.yml +0 -15
  58. package/.opencode/agents/growth-strategist.yml +0 -12
  59. package/.opencode/agents/hermes-agent.yml +0 -12
  60. package/.opencode/agents/inference-improve.yml +0 -12
  61. package/.opencode/agents/lint.yml +0 -14
  62. package/.opencode/agents/log-monitor.yml +0 -12
  63. package/.opencode/agents/mobile-developer.yml +0 -12
  64. package/.opencode/agents/model-health-check.yml +0 -12
  65. package/.opencode/agents/multimodal-looker.yml +0 -12
  66. package/.opencode/agents/performance-analysis.yml +0 -12
  67. package/.opencode/agents/performance-engineer.yml +0 -12
  68. package/.opencode/agents/performance-optimization.yml +0 -12
  69. package/.opencode/agents/processor-pipeline.yml +0 -14
  70. package/.opencode/agents/project-analysis.yml +0 -12
  71. package/.opencode/agents/refactorer.yml +0 -12
  72. package/.opencode/agents/researcher.yml +0 -12
  73. package/.opencode/agents/security-auditor.yml +0 -12
  74. package/.opencode/agents/security-scan.yml +0 -12
  75. package/.opencode/agents/seo-consultant.yml +0 -12
  76. package/.opencode/agents/session-management.yml +0 -12
  77. package/.opencode/agents/state-manager.yml +0 -12
  78. package/.opencode/agents/storyteller.yml +0 -12
  79. package/.opencode/agents/strategist.yml +0 -12
  80. package/.opencode/agents/tech-writer.yml +0 -12
  81. package/.opencode/agents/testing-best-practices.yml +0 -12
  82. package/.opencode/agents/testing-lead.yml +0 -12
  83. package/.opencode/agents/ui-ux-design.yml +0 -12
  84. package/.opencode/codex.codex +0 -8
  85. package/.opencode/commands/auto-format.md +0 -99
  86. package/.opencode/commands/auto-summary-capture.md +0 -90
  87. package/.opencode/commands/dependency-audit.md +0 -184
  88. package/.opencode/commands/enforcer-daily-scan.md +0 -137
  89. package/.opencode/commands/framework-compliance-audit.md +0 -205
  90. package/.opencode/commands/interactive-validator.md +0 -75
  91. package/.opencode/commands/job-summary-logger.md +0 -68
  92. package/.opencode/commands/lint.md +0 -11
  93. package/.opencode/commands/mode-switch.md +0 -95
  94. package/.opencode/commands/model-health-check.md +0 -186
  95. package/.opencode/commands/performance-analysis.md +0 -144
  96. package/.opencode/commands/pre-commit-introspection.md +0 -185
  97. package/.opencode/commands/pre-commit-introspection.sh +0 -133
  98. package/.opencode/commands/security-scan.md +0 -157
  99. package/.opencode/commands/sisyphus-validation.md +0 -128
  100. package/.opencode/commands/summary-logger.md +0 -83
  101. package/.opencode/enforcer-config.json +0 -282
  102. package/.opencode/workflows/post-deployment-audit.yml +0 -123
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xray",
3
- "version": "4.0.39",
3
+ "version": "4.0.40",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "./features.schema.json",
3
- "version": "4.0.39",
3
+ "version": "4.0.40",
4
4
  "description": "0xRay Framework - Unified Feature Configuration",
5
5
  "suit_temperament": {
6
6
  "profile": "auto",
package/dist/CHANGELOG.md CHANGED
@@ -42,6 +42,19 @@ 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
+
45
58
  ## [4.0.39] - 2026-10-03
46
59
 
47
60
  ### 🔄 Changes
@@ -8,7 +8,7 @@
8
8
  "src",
9
9
  "grok-bot/OP-PROC.md",
10
10
  "src/opencode/agents",
11
- "Agents.md",
11
+ "AGENTS.md",
12
12
  "src/integrations",
13
13
  "package.json",
14
14
  "scripts/foundry"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xray-pre-tool",
3
- "version": "4.0.39",
3
+ "version": "4.0.40",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "0xRay constitution + temperament PreToolUse for OpenClaw",
@@ -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.36
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.36
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.36
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.30 · @0xray/grok-bot 0.1.8
41
+ stamped · 0xray 4.0.40 · @0xray/grok-bot 0.1.8
@@ -50,4 +50,4 @@ A state flow plate: the stages a house goes through before doctor says House: PA
50
50
  └──────────────────────────────┘
51
51
  ```
52
52
 
53
- stamped · 0xray 4.0.30 · @0xray/grok-bot 0.1.8
53
+ stamped · 0xray 4.0.40 · @0xray/grok-bot 0.1.8
@@ -21,7 +21,7 @@ Plates have a type. A domain model plate shows how named parts fit. A state flow
21
21
 
22
22
  ## State flow
23
23
 
24
- [House](./house.md) · [Review](./review.md)
24
+ [House](./house.md) · [Live mesh](./live-mesh.md) · [Review](./review.md)
25
25
 
26
26
  ## Pipeline
27
27
 
@@ -32,4 +32,4 @@ Inference cycle state already lives under .xray/inference.
32
32
 
33
33
  Cycle state, history, graded ids, and governance state are already there. Session files still fall back to `docs/inference` until the writers move.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ stamped · 0xray 4.0.40
@@ -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.36
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.36
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.36
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.36
35
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ A release writes the package face, and the agent reads it.
32
32
 
33
33
  The face is `README.md`, `package.json`, `AGENTS.md`, `llms.txt`, `CHANGELOG.md`, and `SKILLS.md`. Do not hand-bump the version.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ buildSessionBootPayload calls applyStationHeat and writes the station card.
32
32
 
33
33
  The function is in `src/integrations/grok/hooks/grok-hook-utils.js`. The plates that belong here are station-heat and pickup-stamp.
34
34
 
35
- stamped · 0xray 4.0.36
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.36
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.36
35
+ stamped · 0xray 4.0.40
@@ -38,4 +38,4 @@ Trail: state and logs under `.xray`. Codex is already loaded. This plate is the
38
38
 
39
39
  The published manual is `docs-site/docs/`. The rule sheet is `grok-bot/OP-PROC.md`. Neither is one of the five pages.
40
40
 
41
- stamped · 0xray 4.0.36
41
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ A reflection is one episode written under docs/reflections.
32
32
 
33
33
  The loader is `loadReflectionInferences` in `src/inference/inference-accumulator.ts`. A reflection is not a repertoire law.
34
34
 
35
- stamped · 0xray 4.0.36
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.36
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.36
38
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ The published manual is docs-site/docs.
32
32
 
33
33
  Guides, architecture, and introduction live here. Factory notes under `docs/` are a different set. Reflections stay in `docs/reflections/`.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ A stamped plate is one drawing for one plane.
32
32
 
33
33
  The file is `docs-site/docs/plates/<id>.md`. Each opened segue gets its own plate. The hook does not author this file. The plate that belongs here is review.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ The station card is the one-line ticket at .xray/state/STATION.md.
32
32
 
33
33
  Read it after a compact. Leave Intent alone. The plan is the next cut. The long body belongs in notes.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ 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.36
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.36
38
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ Suit settings are features, config, and codex.
32
32
 
33
33
  There is no settings.json. The files are `.xray/features.json`, `.xray/config.json`, and `.xray/codex.json`. The package copies live under `xray/`.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ 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.36
37
+ stamped · 0xray 4.0.40
@@ -32,4 +32,4 @@ The suit writes its trail under .xray.
32
32
 
33
33
  Session boot, the lens match line, and the station card are state. The agent reads them. Do not commit `.xray/state`.
34
34
 
35
- stamped · 0xray 4.0.36
35
+ 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.36
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.36
38
+ stamped · 0xray 4.0.40
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "0xray",
3
- "version": "4.0.39",
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",
@@ -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
+ });
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xray-pre-tool",
3
- "version": "4.0.39",
3
+ "version": "4.0.40",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "0xRay constitution + temperament PreToolUse for OpenClaw",
@@ -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
- if (confidenceContext.highConfidenceTrapPresent && adjustedScore >= 26) {
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') &&
@@ -421,6 +421,9 @@ export function reloadOpProc(cwd = process.cwd()) {
421
421
  }
422
422
  function mergeProjectOverlays(destPath) {
423
423
  mergeStackOverlay(destPath);
424
+ // Suit wake / REPERTOIRE_SUBJECT_OVERLAY=0 keeps repo-* subject flesh off the project file.
425
+ if (process.env.REPERTOIRE_SUBJECT_OVERLAY === '0')
426
+ return;
424
427
  mergeSubjectOverlay(destPath);
425
428
  }
426
429
  export function hydrateWritableSignals(seedPath, cwd = process.cwd()) {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "./features.schema.json",
3
- "version": "4.0.39",
3
+ "version": "4.0.40",
4
4
  "description": "0xRay Framework - Unified Feature Configuration",
5
5
  "suit_temperament": {
6
6
  "profile": "auto",
@@ -1,31 +0,0 @@
1
- name: api-design
2
- skill: api-design
3
- description: "RESTful API design and validation specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- # CODEX COMPLIANCE
8
- # - Term 12: No Code Without Tests - all API endpoints require test coverage
9
- # - Term 17: Type Safety Required - use TypeScript interfaces for all data contracts
10
-
11
- # Core Capabilities
12
- capabilities:
13
- - rest_api_design
14
- - graphql_api_design
15
- - api_validation
16
- - openapi_spec_generation
17
- - api_documentation
18
-
19
- # State Management
20
- state_management:
21
- enabled: true
22
- namespaces:
23
- - api_specs
24
- - endpoint_contracts
25
- - validation_rules
26
-
27
- # Quality Requirements
28
- quality:
29
- test_coverage: required
30
- type_safety: strict
31
- documentation: required
@@ -1,15 +0,0 @@
1
- name: architect
2
- skill: architect-tools
3
- description: "System design and technical architecture tools specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - system_design
9
- - architecture_analysis
10
- - technical_documentation
11
- - pattern_selection
12
-
13
- quality:
14
- test_coverage: recommended
15
- type_safety: strict
@@ -1,14 +0,0 @@
1
- name: architecture-patterns
2
- skill: architecture-patterns
3
- description: "Software architecture patterns and best practices specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - pattern_analysis
9
- - architecture_review
10
- - design_evaluation
11
-
12
- quality:
13
- test_coverage: recommended
14
- type_safety: strict
@@ -1,14 +0,0 @@
1
- name: auto-format
2
- skill: auto-format
3
- description: "Automated code formatting and style consistency specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - code_formatting
9
- - style_enforcement
10
- - lint_integration
11
-
12
- quality:
13
- test_coverage: recommended
14
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: backend-engineer
2
- skill: backend-engineer
3
- description: "backend engineer specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict
@@ -1,14 +0,0 @@
1
- name: boot-orchestrator
2
- skill: boot-orchestrator
3
- description: "Framework initialization and boot orchestration specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - framework_boot
9
- - processor_initialization
10
- - system_startup
11
-
12
- quality:
13
- test_coverage: required
14
- type_safety: strict
@@ -1,15 +0,0 @@
1
- name: bug-triage-specialist
2
- skill: bug-triage
3
- description: "Bug triage, debugging analysis, and issue prioritization specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - bug_analysis
9
- - debugging
10
- - issue_prioritization
11
- - root_cause_analysis
12
-
13
- quality:
14
- test_coverage: required
15
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: code-analyzer
2
- skill: code-analyzer
3
- description: "code analyzer specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict
@@ -1,14 +0,0 @@
1
- name: code-reviewer
2
- skill: code-review
3
- description: "Comprehensive code quality assessment and improvement suggestions specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - code_review
9
- - quality_assessment
10
- - improvement_suggestions
11
-
12
- quality:
13
- test_coverage: required
14
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: content-creator
2
- skill: content-creator
3
- description: "content creator specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: database-engineer
2
- skill: database-engineer
3
- description: "database engineer specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: devops-engineer
2
- skill: devops-engineer
3
- description: "devops engineer specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict
@@ -1,14 +0,0 @@
1
- name: framework-compliance-audit
2
- skill: framework-compliance-audit
3
- description: "Framework compliance auditing and validation specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - compliance_audit
9
- - validation
10
- - standards_enforcement
11
-
12
- quality:
13
- test_coverage: required
14
- type_safety: strict
@@ -1,12 +0,0 @@
1
- name: frontend-engineer
2
- skill: frontend-engineer
3
- description: "frontend engineer specialist"
4
- version: "1.0.0"
5
- mode: subagent
6
-
7
- capabilities:
8
- - domain_specialization
9
-
10
- quality:
11
- test_coverage: recommended
12
- type_safety: strict