0xray 4.0.21 → 4.0.23

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 (103) hide show
  1. package/.grok-plugin/plugin.json +1 -1
  2. package/.opencode/skills/hermes-agent/SKILL.md +1 -1
  3. package/.opencode/skills/orchestrator/SKILL.md +28 -6
  4. package/.xray/features.json +1 -1
  5. package/AGENTS-consumer.md +11 -11
  6. package/AGENTS.md +8 -8
  7. package/README.md +27 -27
  8. package/SKILLS.md +1 -1
  9. package/dist/AGENTS.md +8 -8
  10. package/dist/CHANGELOG.md +98 -0
  11. package/dist/README.md +27 -27
  12. package/dist/SKILLS.md +1 -1
  13. package/dist/governance/governance-core.d.ts +2 -1
  14. package/dist/governance/governance-core.js +20 -11
  15. package/dist/governance/governance-service.js +9 -7
  16. package/dist/inference/inference-accumulator.js +36 -4
  17. package/dist/inference/inference-cycle.d.ts +12 -0
  18. package/dist/inference/inference-cycle.js +180 -21
  19. package/dist/inference/inference-proposal-generator.js +148 -5
  20. package/dist/inference/session-capture.d.ts +4 -0
  21. package/dist/integrations/cursor/README.md +1 -1
  22. package/dist/integrations/cursor/hooks/cursor-hook-utils.js +19 -0
  23. package/dist/integrations/cursor/hooks/pre-tool-use.js +2 -1
  24. package/dist/integrations/governance/index.d.ts +5 -0
  25. package/dist/integrations/governance/index.js +22 -2
  26. package/dist/integrations/governance/types.d.ts +11 -0
  27. package/dist/integrations/governance/types.js +16 -0
  28. package/dist/integrations/hooks/station-hook-runtime.cjs +90 -30
  29. package/dist/integrations/hooks/station-hook-runtime.mjs +1 -0
  30. package/dist/integrations/hooks/station-memory-ingest.mjs +4 -2
  31. package/dist/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  32. package/dist/mcps/governance.server.d.ts +2 -0
  33. package/dist/mcps/governance.server.js +12 -1
  34. package/dist/memory-routing/index.d.ts +1 -1
  35. package/dist/memory-routing/index.js +1 -1
  36. package/dist/memory-routing/lesson-pickup.d.ts +2 -0
  37. package/dist/memory-routing/lesson-pickup.js +57 -0
  38. package/dist/memory-routing/provider-loader.d.ts +8 -1
  39. package/dist/memory-routing/provider-loader.js +49 -1
  40. package/dist/memory-routing/provider-registry.d.ts +7 -2
  41. package/dist/memory-routing/provider-registry.js +26 -6
  42. package/dist/memory-routing/record-lesson.d.ts +16 -0
  43. package/dist/memory-routing/record-lesson.js +26 -0
  44. package/dist/memory-routing/types.d.ts +15 -0
  45. package/dist/nucleus/thin-dispatch.d.ts +2 -0
  46. package/dist/nucleus/thin-dispatch.js +14 -4
  47. package/dist/processors/implementations/agents-md-validation-processor.js +1 -1
  48. package/dist/skills/hermes-agent/SKILL.md +1 -1
  49. package/dist/skills/orchestrator/SKILL.md +28 -6
  50. package/package.json +2 -2
  51. package/scripts/foundry/CHANGELOG.md +2 -0
  52. package/scripts/foundry/README.md +2 -2
  53. package/scripts/foundry/cli.mjs +1 -1
  54. package/scripts/foundry/inspect.mjs +160 -5
  55. package/scripts/foundry/plant/skills/inspect/SKILL.md +2 -0
  56. package/scripts/foundry/reconcile-version.mjs +23 -1
  57. package/scripts/foundry/release.mjs +1 -1
  58. package/scripts/foundry/validate-release-docs.mjs +24 -20
  59. package/scripts/foundry/version-manager.mjs +180 -7
  60. package/scripts/mjs/test-consumer-readiness.mjs +10 -3
  61. package/src/integrations/openclaw/plugin/xray-pre-tool/package.json +1 -1
  62. package/src/mcps/governance.server.ts +12 -1
  63. package/src/skills/hermes-agent/SKILL.md +1 -1
  64. package/src/skills/orchestrator/SKILL.md +28 -6
  65. package/vendor/@0xray/repertoire/data/stack-overlay.json +156 -3
  66. package/vendor/@0xray/repertoire/data/subject-overlay.json +3 -3
  67. package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts +4 -0
  68. package/vendor/@0xray/repertoire/dist/RepertoireService.d.ts.map +1 -1
  69. package/vendor/@0xray/repertoire/dist/RepertoireService.js +7 -6
  70. package/vendor/@0xray/repertoire/dist/RepertoireService.js.map +1 -1
  71. package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.d.ts.map +1 -1
  72. package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js +10 -11
  73. package/vendor/@0xray/repertoire/dist/ingestion/xray-session-ingester.js.map +1 -1
  74. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.d.ts.map +1 -1
  75. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js +5 -0
  76. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/confidence-gate.js.map +1 -1
  77. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.d.ts.map +1 -1
  78. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js +16 -0
  79. package/vendor/@0xray/repertoire/dist/orchestrator-bridge/signal-injector.js.map +1 -1
  80. package/vendor/@0xray/repertoire/dist/paths.d.ts +3 -3
  81. package/vendor/@0xray/repertoire/dist/paths.d.ts.map +1 -1
  82. package/vendor/@0xray/repertoire/dist/paths.js +66 -4
  83. package/vendor/@0xray/repertoire/dist/paths.js.map +1 -1
  84. package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts +11 -0
  85. package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.d.ts.map +1 -1
  86. package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js +2 -0
  87. package/vendor/@0xray/repertoire/dist/provider/memory-routing-provider.js.map +1 -1
  88. package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts +54 -4
  89. package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.d.ts.map +1 -1
  90. package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js +375 -20
  91. package/vendor/@0xray/repertoire/dist/registry/CuratedSignalsManager.js.map +1 -1
  92. package/vendor/@0xray/repertoire/dist/types.d.ts +21 -0
  93. package/vendor/@0xray/repertoire/dist/types.d.ts.map +1 -1
  94. package/xray/agents_template.md +10 -5
  95. package/xray/features.json +1 -1
  96. package/dist/mcps/shared/prompt-security-validator.d.ts +0 -44
  97. package/dist/mcps/shared/prompt-security-validator.js +0 -148
  98. package/dist/mcps/shared/security-scanner.d.ts +0 -119
  99. package/dist/mcps/shared/security-scanner.js +0 -429
  100. package/dist/scripts/activate-kernel-pipeline.d.ts +0 -7
  101. package/dist/scripts/activate-kernel-pipeline.js +0 -101
  102. package/src/mcps/shared/prompt-security-validator.ts +0 -199
  103. package/src/mcps/shared/security-scanner.ts +0 -599
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * Foundry stamper — JSON version fields + CHANGELOG only.
4
+ * Foundry stamper — JSON version fields, CHANGELOG, and the present-tense patch-pin strip.
5
5
  *
6
- * Does NOT bump package.json (reconcile-version.mjs is the one bumper).
7
- * Does NOT rewrite markdown prose (validate-release-docs.mjs verifies).
6
+ * Does NOT bump package.json (reconcile-version.mjs advances the next cut).
7
+ * Does NOT publish.
8
+ * Strips every present-tense patch pin from shipped guides and shipped OP-PROC.
9
+ * Does NOT edit Station, NOTES, dest, or node_modules.
8
10
  *
9
11
  * Usage:
10
12
  * npx @0xray/foundry stamp
@@ -285,7 +287,7 @@ function updateChangelog(newVersion, changeDescription) {
285
287
  console.log(`✅ Updated CHANGELOG.md`);
286
288
  }
287
289
 
288
- /** Markdown prose is verified, not rewritten. */
290
+ /** Kernel headers stay era text. Patch refs are stripped from the shipped set below. */
289
291
 
290
292
  export const DOCS_SITE_HEADER_FILES = [
291
293
  'docs-site/docs/index.md',
@@ -328,6 +330,58 @@ function updateJsonVersionField(relPath, newVersion) {
328
330
 
329
331
  function updateFeaturesJsonVersion(newVersion) {
330
332
  updateJsonVersionField('xray/features.json', newVersion);
333
+ updateJsonVersionField('.xray/features.json', newVersion);
334
+ }
335
+
336
+ export function packageLockVersions(dir) {
337
+ const full = path.join(dir, 'package-lock.json');
338
+ if (!fs.existsSync(full)) return null;
339
+ const lock = JSON.parse(fs.readFileSync(full, 'utf-8'));
340
+ const root = typeof lock.version === 'string' ? lock.version : '';
341
+ const pkg = typeof lock.packages?.['']?.version === 'string' ? lock.packages[''].version : '';
342
+ return { root, pkg };
343
+ }
344
+
345
+ /**
346
+ * Write the root lock version and packages[""].version to match package.json.
347
+ * Returns 'missing' | 'same' | 'updated' | 'unmatched'.
348
+ * Does not rewrite the rest of the lock.
349
+ */
350
+ export function syncPackageLockVersion(dir, newVersion) {
351
+ const full = path.join(dir, 'package-lock.json');
352
+ if (!fs.existsSync(full)) return 'missing';
353
+ const raw = fs.readFileSync(full, 'utf-8');
354
+ const current = packageLockVersions(dir);
355
+ if (current && current.root === newVersion && current.pkg === newVersion) return 'same';
356
+ const previous = current?.root ?? '';
357
+ const lines = raw.split('\n');
358
+ let rootDone = false;
359
+ let pkgDone = false;
360
+ const next = lines.map((line) => {
361
+ if (!rootDone && line === ` "version": "${previous}",`) {
362
+ rootDone = true;
363
+ return ` "version": "${newVersion}",`;
364
+ }
365
+ if (rootDone && !pkgDone && line === ` "version": "${previous}",`) {
366
+ pkgDone = true;
367
+ return ` "version": "${newVersion}",`;
368
+ }
369
+ return line;
370
+ });
371
+ if (!rootDone || !pkgDone) return 'unmatched';
372
+ fs.writeFileSync(full, next.join('\n'));
373
+ return 'updated';
374
+ }
375
+
376
+ function updatePackageLockVersion(newVersion) {
377
+ const synced = syncPackageLockVersion(rootDir, newVersion);
378
+ if (synced === 'updated') {
379
+ console.log(`✅ Updated package-lock.json (version: ${newVersion})`);
380
+ }
381
+ if (synced === 'unmatched') {
382
+ console.error(`\n❌ package-lock.json version fields did not match the expected shape for ${newVersion}\n`);
383
+ process.exit(1);
384
+ }
331
385
  }
332
386
 
333
387
  function updateOpenclawPluginVersion(newVersion) {
@@ -339,6 +393,117 @@ function getCurrentVersion() {
339
393
  return pkg.version;
340
394
  }
341
395
 
396
+ /**
397
+ * Shipped guides whose present-tense patch ref the stamper removes.
398
+ * Historical headings (features-since) stay. Seat memory is not in this list.
399
+ */
400
+ export const SHIPPED_GUIDE_STRIP_FILES = [
401
+ 'README.md',
402
+ 'AGENTS.md',
403
+ 'AGENTS-consumer.md',
404
+ 'SKILLS.md',
405
+ 'llms.txt',
406
+ 'docs-site/docs/index.md',
407
+ 'docs-site/docs/introduction.md',
408
+ 'docs-site/docs/full-reference.md',
409
+ 'docs-site/docs/architecture/v4-now.md',
410
+ 'docs-site/docs/architecture/v4-vision.md',
411
+ 'docs-site/docs/guides/memory-wake.md',
412
+ 'docs-site/docs/guides/memory-routing.md',
413
+ 'docs-site/docs/guides/repertoire.md',
414
+ 'docs-site/docs/guides/station-vs-repertoire.md',
415
+ 'docs-site/docs/guides/getting-started.md',
416
+ 'docs-site/docs/guides/integrations.md',
417
+ 'docs-site/docs/guides/consumer-migration.md',
418
+ 'docs-site/docs/guides/aside-context.md',
419
+ 'docs-site/docs/mcp/README.md',
420
+ 'docs-site/docs/agents/README.md',
421
+ 'grok-bot/AGENTS.md',
422
+ ];
423
+
424
+ /** Shipped OP-PROC. Station, NOTES, and dest are not procedure files the stamper may edit. */
425
+ export const SHIPPED_OP_PROC_STRIP_FILES = [
426
+ 'grok-bot/ops/LEAD-CADENCE.md',
427
+ 'src/skills/orchestrator/SKILL.md',
428
+ 'grok-bot/skills/ship-ready-mill-gate/SKILL.md',
429
+ ];
430
+
431
+ export function patchRefStripRelPaths() {
432
+ return [...SHIPPED_GUIDE_STRIP_FILES, ...SHIPPED_OP_PROC_STRIP_FILES];
433
+ }
434
+
435
+ /** Seat-local memory and installed trees. The stamper never writes these. */
436
+ export function isPatchRefStripRefused(relPath) {
437
+ const norm = path.posix.normalize(String(relPath).replace(/\\/g, '/')).replace(/^\.\//, '');
438
+ const parts = norm.split('/').filter((part) => part !== '' && part !== '.');
439
+ if (parts[parts.length - 1] === 'NOTES.md') return true;
440
+ if (parts.includes('node_modules')) return true;
441
+ const xrayAt = parts.indexOf('.xray');
442
+ if (xrayAt !== -1 && parts[xrayAt + 1] === 'state') return true;
443
+ return false;
444
+ }
445
+
446
+ /**
447
+ * Remove every present-tense patch pin from prose. Stamps in CHANGELOG
448
+ * headings stay, because this does not match `## [x.y.z]`.
449
+ * `version` must be semver or the call is a no-op. The pins removed are
450
+ * not limited to that version.
451
+ * @param {string} content
452
+ * @param {string} version
453
+ */
454
+ export function stripPatchRefText(content, version) {
455
+ if (typeof version !== 'string' || !/^\d+\.\d+\.\d+$/.test(version)) return content;
456
+ const semver = '\\d+\\.\\d+\\.\\d+';
457
+ const patterns = [
458
+ new RegExp(`0xray@${semver}\\b`, 'g'),
459
+ new RegExp(`npm is \\*\\*${semver}\\*\\*`, 'g'),
460
+ new RegExp(`Product \\*\\*${semver}\\*\\* is on npm`, 'g'),
461
+ new RegExp(`Do not republish ${semver}\\b`, 'g'),
462
+ new RegExp(`This cut is \\*\\*${semver}\\*\\*`, 'g'),
463
+ new RegExp(`This cut is ${semver}\\b`, 'g'),
464
+ ];
465
+ let next = content;
466
+ for (const re of patterns) next = next.replace(re, '');
467
+ return next.replace(/[ \t]{2,}/g, ' ');
468
+ }
469
+
470
+ /**
471
+ * @param {string} baseDir
472
+ * @param {string} rel
473
+ * @param {string} version
474
+ * @returns {boolean} true when the file changed
475
+ */
476
+ export function stripPatchRefFile(baseDir, rel, version) {
477
+ if (isPatchRefStripRefused(rel)) return false;
478
+ const full = path.resolve(baseDir, rel);
479
+ const relToBase = path.relative(baseDir, full);
480
+ if (relToBase.startsWith('..') || path.isAbsolute(relToBase)) return false;
481
+ if (isPatchRefStripRefused(relToBase.split(path.sep).join('/'))) return false;
482
+ if (!fs.existsSync(full) || !fs.statSync(full).isFile()) return false;
483
+ const before = fs.readFileSync(full, 'utf8');
484
+ const after = stripPatchRefText(before, version);
485
+ if (after === before) return false;
486
+ fs.writeFileSync(full, after);
487
+ return true;
488
+ }
489
+
490
+ /**
491
+ * Strip every present-tense patch pin from shipped guides and shipped OP-PROC under baseDir.
492
+ * `version` must be semver or the call is a no-op.
493
+ * Refuses `.xray/state/**`, NOTES, dest curated_signals.json, and node_modules.
494
+ * Does not bump. Does not publish.
495
+ * @param {string} baseDir
496
+ * @param {string} version
497
+ * @returns {string[]} relative paths that changed
498
+ */
499
+ export function stripLivePatchRefs(baseDir, version) {
500
+ const changed = [];
501
+ for (const rel of patchRefStripRelPaths()) {
502
+ if (stripPatchRefFile(baseDir, rel, version)) changed.push(rel);
503
+ }
504
+ return changed;
505
+ }
506
+
342
507
  /** Paths written by release artifact updates (existing files only). */
343
508
  export function getReleaseArtifactPaths(baseDir = resolveMillRoot()) {
344
509
  const candidates = [
@@ -368,22 +533,28 @@ export function getReleaseArtifactPaths(baseDir = resolveMillRoot()) {
368
533
  'docs-site/sidebars.ts',
369
534
  'xray/features.json',
370
535
  '.xray/features.json',
536
+ 'package-lock.json',
371
537
  'docs/PIPELINE-FACET-SNAPSHOT.json',
372
538
  'src/integrations/openclaw/plugin/xray-pre-tool/package.json',
373
539
  ];
374
540
  return candidates.filter((rel) => fs.existsSync(path.join(baseDir, rel)));
375
541
  }
376
542
 
377
- /** Update CHANGELOG + README + AGENTS (+ consumer/docs) for current package.json version (no bump). */
543
+ /** Stamp JSON + CHANGELOG, then strip every present-tense patch pin from shipped guides and OP-PROC. No bump. No publish. */
378
544
  function updateReleaseArtifactsOnly(changeDescription = '') {
379
545
  const current = getCurrentVersion();
380
546
  const counts = getFrameworkCounts();
381
- process.stdout.write(`Release artifacts for v${current} (JSON + CHANGELOG only)\n`);
547
+ process.stdout.write(`Release artifacts for v${current} (JSON + CHANGELOG; strip shipped guides and OP-PROC)\n`);
382
548
  process.stdout.write(`counts: ${counts.agents} agents, ${counts.mcps} MCPs, ${counts.skills} skills\n`);
383
549
  updateChangelog(current, changeDescription);
384
550
  updatePluginJsonVersion(current);
385
551
  updateFeaturesJsonVersion(current);
552
+ updatePackageLockVersion(current);
386
553
  updateOpenclawPluginVersion(current);
554
+ const stripped = stripLivePatchRefs(rootDir, current);
555
+ if (stripped.length > 0) {
556
+ process.stdout.write(`Stripped present-tense patch pins from ${stripped.join(', ')}\n`);
557
+ }
387
558
  runReleaseDocsValidation();
388
559
  process.stdout.write(`Release artifacts updated for v${current}\n`);
389
560
  }
@@ -415,7 +586,9 @@ function main() {
415
586
  if (args.includes('--help') || args.includes('-h')) {
416
587
  process.stdout.write(`Current version: ${getCurrentVersion()}\n`);
417
588
  process.stdout.write('Usage: npx @0xray/foundry stamp\n');
418
- process.stdout.write('Bump is refused. Use reconcile-version.mjs --apply, then this stamper.\n');
589
+ process.stdout.write('Bump is refused. Reconcile advances the next cut, then this stamper runs.\n');
590
+ process.stdout.write('The stamper strips every present-tense patch pin from shipped guides and shipped OP-PROC.\n');
591
+ process.stdout.write('It does not edit Station, NOTES, dest, or node_modules. It does not publish.\n');
419
592
  process.exit(0);
420
593
  }
421
594
 
@@ -17,9 +17,16 @@ const __dirname = path.dirname(__filename);
17
17
  class ConsumerReadinessCheck {
18
18
  constructor() {
19
19
  this.checks = [];
20
- // Check if we're running from a consumer environment (not the source directory)
20
+ // Mill = this repo (package name 0xray + src/). Consumer = installed tarball.
21
21
  const cwd = process.cwd();
22
- this.isConsumerEnvironment = !cwd.includes("dev/stringray") && cwd.includes("dev/jelly");
22
+ let isDevMill = false;
23
+ try {
24
+ const pkg = JSON.parse(fs.readFileSync(path.join(cwd, "package.json"), "utf8"));
25
+ isDevMill = pkg.name === "0xray" && fs.existsSync(path.join(cwd, "src"));
26
+ } catch {
27
+ isDevMill = false;
28
+ }
29
+ this.isConsumerEnvironment = !isDevMill;
23
30
  }
24
31
 
25
32
  async runChecks() {
@@ -78,7 +85,7 @@ class ConsumerReadinessCheck {
78
85
  if (fs.existsSync(".mcp.json")) {
79
86
  const mcpConfig = JSON.parse(fs.readFileSync(".mcp.json", "utf8"));
80
87
  const serverCount = Object.keys(mcpConfig.mcpServers || {}).length;
81
- const hasServers = serverCount >= 16; // At least 16 servers
88
+ const hasServers = serverCount >= 7; // consumer mill: 7 0xRay MCP servers
82
89
 
83
90
  this.checks.push({
84
91
  name: "MCP server configuration",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xray-pre-tool",
3
- "version": "4.0.21",
3
+ "version": "4.0.23",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "description": "0xRay constitution + temperament PreToolUse for OpenClaw",
@@ -245,8 +245,19 @@ class GovernanceServer extends XrayKnowledgeSkillBase {
245
245
  }
246
246
  }
247
247
 
248
+ /** Boot stays flag-gated. A required external call starts the client on demand. */
249
+ private async armRequiredDynamo(requireExternal: boolean): Promise<void> {
250
+ if (!requireExternal) return;
251
+ const integration = await initializeGovernanceIntegration();
252
+ if (!integration.isAvailable()) {
253
+ await integration.ensureDynamoClient();
254
+ }
255
+ }
256
+
248
257
  private async handleGovernProposals(args: GovernProposalsArgs): Promise<CallToolResult> {
249
258
  const service = getGovernanceService();
259
+ const requireExternal = this.resolveRequireExternal(args.options?.require_external);
260
+ await this.armRequiredDynamo(requireExternal);
250
261
 
251
262
  const request: GovernanceRequest = {
252
263
  proposals: args.proposals.map((p, i) => ({
@@ -260,7 +271,7 @@ class GovernanceServer extends XrayKnowledgeSkillBase {
260
271
  })),
261
272
  context: args.context || {},
262
273
  options: {
263
- requireExternalDynamo: this.resolveRequireExternal(args.options?.require_external),
274
+ requireExternalDynamo: requireExternal,
264
275
  },
265
276
  };
266
277
 
@@ -64,7 +64,7 @@ Returns: pass/fail with per-file results and violations.
64
64
 
65
65
  ### xray_codex_check
66
66
 
67
- Validate code against the 60-term Universal Development Codex. Checks error-handling, type-safety, performance, security, architecture.
67
+ Validate code against the 69-term Universal Development Codex. Checks error-handling, type-safety, performance, security, architecture.
68
68
 
69
69
  ```
70
70
  xray_codex_check(code="const x: any = foo()", operation="create")
@@ -7,15 +7,15 @@ version: 1.0.0
7
7
  schema_version: "1.0"
8
8
  tags: [orchestration, orchestrator, lead-dev]
9
9
  capabilities:
10
- - coordinate_agents
11
- - delegate_tasks
12
- - manage_workflow
10
+ - coordinate_agents
11
+ - delegate_tasks
12
+ - manage_workflow
13
13
  dependencies: []
14
14
 
15
15
  mcp:
16
- orchestrator:
17
- command: node
18
- args: [node_modules/0xray/dist/mcps/orchestrator.server.js]
16
+ orchestrator:
17
+ command: node
18
+ args: [node_modules/0xray/dist/mcps/orchestrator.server.js]
19
19
  ---
20
20
 
21
21
  # Orchestrator Skill — includes lead-dev operating model
@@ -64,6 +64,10 @@ Config: `features.json` → `multi_agent_orchestration.lead_dev_mode`
64
64
 
65
65
  The seven rules are the engine. The cadence is the time signature. Disk SSOT: `grok-bot/ops/LEAD-CADENCE.md`.
66
66
 
67
+ Jargon is not the job. Review and cadence ask whether the change works. Do not spend the loop reciting dest names, mill liturgy, or host mantras.
68
+
69
+ - **Feat rebase:** when the mandated work turns into mantra, or the job has split across planes that no longer share one present, stop. Go up a level and answer the original message again from this seat. Do not continue the side thread and call that the job.
70
+
67
71
  - **Peer test:** another instance with only worn 0xRay continues the ticket. No command stream.
68
72
  - **Wear first:** Read `.xray/state/STATION.md`. Same cloud. Same critic (resume only). Dummy Reads Station.
69
73
  - **Dummy tests `SKILLS.md`:** a suited dummy proves the worn catalog. Same-sess bodies keep context and hold a Station card.
@@ -73,6 +77,24 @@ The seven rules are the engine. The cadence is the time signature. Disk SSOT: `g
73
77
  - **Live tick, not pacer:** `/loop` runs work now. Keep workstreams moving. Do not idle-wait 12 minutes. **Clean ticks every cycle** — unsubscribe then resubscribe so the prompt matches metal. Name-dedupe does not rewrite. A stale prompt (waiting URL after live, Hold after strip) is dirty: rewrite, do not act. **If the card and WAVEBOARD are idle, unsubscribe and do not resubscribe.**
74
78
  - **Board clock:** PR events + resume the same critic. Not two idle pacers. Merge after PASS+CI (gate A). Publish only after mill-gate D + `foundry gate`.
75
79
  - **Dispatch:** ticket + PR URLs + “Wear, then review.” The critic Reads `SEATS.md` Reviewer. Do not paste a command novel. When a law is spoken twice, encode it this wake.
80
+ - **Cascade:** Chat is not the brain. A cascade that must survive compaction is a named repertoire signal on the stack overlay, hydrated onto the project law list. NOTES holds the same cascade for the second Read. Station stays the ticket. A reflection is not this capture. Capture priority: a law is an invariant you would otherwise re-read the source to relearn. One law per subsystem bone. Heat touches last_seen and does not append a confidence sample, so more hits do not raise conviction. Heat touches last_seen when the diary contains that signal's name or a local clause of four definition content words; two definition words are not a hit; the same words scattered through a long diary are not a hit; a weak session score is not lifted to 0.55 and a sample below 0.55 is not recorded. Constructing the organ does not append workspace samples. Hero names: `heat-is-not-conviction`, `inference-cycle-invariant`, `governance-vote-invariant`, `thin-dispatch-invariant`. Repertoire mergeStackOverlay refreshes a changed stack definition and keeps observation stats. A floor observation count does not change a route. Feedback moves conviction by a tenth, and a failure can leave 0.55. learned-conviction.json beside dest restores that average when a wake flattens it to 0.55. It does not store the observation count.
81
+ - **Cold brief:** a new critic or any new subagent that does not already have this thread gets the latest commit SHA on the branch under review (fetch it; do not reuse an earlier SHA from a previous pass) and the Station card (`.xray/state/STATION.md`: intent, plan, git). If the card is missing, give branch + HEAD + what just changed. If the branch moves after you brief them, send the new SHA before they verdict.
82
+ - **Control:** The lead keeps control. Do not assume the subagent has the context. Give the duty, the latest SHA, the Station card, and the laws that apply. The subagent wears the applicable 0xRay suit before it works: the tree under review, built and installed. An older published package is not that suit. The lead checks the result.
83
+
84
+ ### Engine cadence
85
+
86
+ This suite is the engine that builds the engine. When a seat sees OP-PROC, write it onto these existing surfaces in the same wake. Do not open a new skill.
87
+
88
+ 1. Change the engine with precision.
89
+ 2. Ship it local: build and install the tree. A live npm version stays live. Once a version is live, the stamper strips every present-tense patch pin from shipped guides and shipped OP-PROC, or reconcile advances the next cut. The stamper does not edit Station, NOTES, dest, or node_modules. It does not publish.
90
+ 3. Test the change.
91
+ 4. Run another deep review of the diff you just made.
92
+ 5. Monitor long-term memory (dest name count and whether observations are the only growth) and short-term memory (Station: intent, plan, git).
93
+ 6. Ship the PR.
94
+
95
+ ### Planes
96
+
97
+ Operating planes: code, OP-PROC, model, suit, mill, host, and test/ship. Test/ship is the critical OP-PROC plane. Test then ship is the hero. Ship without that proof is the catastrophe. Long-term memory is the project law list. Each wake refreshes a changed stack definition and keeps observation stats. Heat writes the matched names onto Station, the short-term card that survives compaction. Reactive decisions move out of TypeScript into OP-PROC as the model improves. That move is why the mill and the suit exist. It is not fully proved. Once a version is live, the stamper strips every present-tense patch pin from shipped guides and shipped OP-PROC, or reconcile advances the next cut. The stamper does not edit Station, NOTES, dest, or node_modules. It does not publish. Do not freeze the live cut.
76
98
  - **Close:** loop until Station is done. Compact: Station survives the cut. Overlay dest names are OP-PROC — reload `repertoire-working.json` `opProcNames`, not Station.
77
99
  - **Board:** critic Strict comments; forge implements; lead stays main thread.
78
100
  - **Codex 69:** rewire this skill and existing ops. Do not add a new `SKILL.md` to hold the cadence.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "description": "Stack-language overlay for 0xRay 4.0 memory routing. Additive to the 8-name factory seed. Not a plant diary and not the 0.1.8 brain.",
3
- "last_updated": "2026-09-20T00:00:00.000Z",
3
+ "last_updated": "2026-09-23T00:00:00.000Z",
4
4
  "source": "stack-overlay-4.0",
5
5
  "schema_version": "1.1",
6
6
  "implementation_guidance": {
@@ -483,7 +483,7 @@
483
483
  },
484
484
  {
485
485
  "name": "compact-rekey-from-disk",
486
- "definition": "After compact, rekey from Station + COMPACT-SURVIVAL.md + project Repertoire names. Chat summary is not the mind. Probe stack language before acting.",
486
+ "definition": "After compact, rekey from Station, the overlay names, and learned conviction beside dest. Chat summary is not the mind. A floor observation count is not a decision. Feedback moves conviction by a tenth, and that value is restored when a wake flattens it back to 0.55. Probe stack language before acting.",
487
487
  "tags": [
488
488
  "compact",
489
489
  "rekey",
@@ -495,7 +495,7 @@
495
495
  "evaluation_criteria": "Reply treats the name as a stack invariant, not a factory trap.",
496
496
  "validation_experiment": "Probe getTaskConfidence with the example snippet and expect this name.",
497
497
  "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
498
- "implementation_notes": "Grow on the project copy. Never write the tarball.",
498
+ "implementation_notes": "learned-conviction.json sits next to the project curated_signals.json. It stores avg_confidence, not observation_count. Restore it when dest avg is on the 0.55 floor.",
499
499
  "example_inference_snippet": "Rekey from disk. Push knowledge into Repertoire before the next compact.",
500
500
  "observation_stats": {
501
501
  "observation_count": 1,
@@ -745,6 +745,159 @@
745
745
  "last_seen": "2026-09-21T00:00:00.000Z",
746
746
  "governance_forced_count": 0
747
747
  }
748
+ },
749
+ {
750
+ "name": "feat-rebase",
751
+ "definition": "When the mandated work turns into mantra, or the job has split across planes that no longer share one present, stop. Go up a level and answer the original message again from this seat. Do not continue the side thread and call that the job.",
752
+ "tags": [
753
+ "cadence",
754
+ "rebase",
755
+ "lead"
756
+ ],
757
+ "priority": "high",
758
+ "status": "proposed",
759
+ "first_seen": "2026-09-23",
760
+ "evaluation_criteria": "Reply answers the original message from this seat instead of continuing a side thread.",
761
+ "validation_experiment": "A seat keeps answering notifications after the human asked for the original job \u2014 treat as fail.",
762
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
763
+ "implementation_notes": "LEAD-CADENCE.md Feat rebase. Not a new skill.",
764
+ "example_inference_snippet": "Go up a level and answer the original message again from this seat.",
765
+ "observation_stats": {
766
+ "observation_count": 1,
767
+ "avg_confidence": 0.55,
768
+ "max_confidence": 0.55,
769
+ "last_seen": "2026-09-23T00:00:00.000Z",
770
+ "governance_forced_count": 0
771
+ }
772
+ },
773
+ {
774
+ "name": "operating-planes",
775
+ "definition": "Operating planes are code, OP-PROC, model, suit, mill, host, and test/ship. Test/ship is the critical OP-PROC plane: test then ship is the hero; ship without that proof is the catastrophe. Long-term memory is the project law list. Each wake copies stack laws onto that list, keeps observation stats, and refreshes a changed definition. Heat writes the matched names onto Station, the short-term card that survives compaction. As the model improves, reactive decisions move out of code into OP-PROC. That move is not fully proved. Once a version is live, the stamper strips every present-tense patch pin from shipped guides and shipped OP-PROC, or reconcile advances the next cut. The stamper does not edit Station, NOTES, dest, or node_modules. It does not publish. Do not freeze the live cut.",
776
+ "tags": [
777
+ "planes",
778
+ "op-proc",
779
+ "test-ship",
780
+ "version-manager"
781
+ ],
782
+ "priority": "high",
783
+ "status": "proposed",
784
+ "first_seen": "2026-09-23",
785
+ "evaluation_criteria": "Reply names test/ship as the hero or the catastrophe, and treats a live cut as the stamper stripping shipped guides and shipped OP-PROC.",
786
+ "validation_experiment": "A seat ships without the test, or wakes after compact without the test/ship plane — treat as fail.",
787
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
788
+ "implementation_notes": "LEAD-CADENCE.md Planes. Not a new skill. Patch stamps stay in package.json, CHANGELOG, and stamped JSON. The stamper strips shipped guides and shipped OP-PROC. It does not edit Station, NOTES, dest, or node_modules. It does not publish.",
789
+ "example_inference_snippet": "Test then ship is the hero. Ship without that proof is the catastrophe.",
790
+ "observation_stats": {
791
+ "observation_count": 1,
792
+ "avg_confidence": 0.55,
793
+ "max_confidence": 0.55,
794
+ "last_seen": "2026-09-23T00:00:00.000Z",
795
+ "governance_forced_count": 0
796
+ }
797
+ },
798
+ {
799
+ "name": "wake-cascade",
800
+ "definition": "Chat is not the brain. Compaction drops the seat. Short-term memory is Station. Long-term memory is the project repertoire law list. NOTES is the deep cut: the pickup line cadences onto Station, and the body holds the cascade the card cannot. Capture a cascade by writing a named signal on the stack overlay and hydrating it onto dest. Observation counts are not capture. A reflection is not this capture. This wake, sorted: planes are code, OP-PROC, model, suit, mill, host, and test/ship; test then ship is the hero and ship without that proof is the catastrophe; each wake refreshes a changed stack definition and keeps observation stats, then heat writes matched names onto Station; the lead keeps control and a subagent gets the duty, the latest SHA, the Station card, the laws, and the suit built from the tree under review; when the work becomes mantra or the planes no longer share one present, answer the original message from this seat; once a version is live, the stamper strips every present-tense patch pin from shipped guides and shipped OP-PROC, or reconcile advances the next cut; the stamper does not edit Station, NOTES, dest, or node_modules; it does not publish; engine cadence is change, ship local, test, review the diff, monitor dest against Station, ship the PR; missing moral fusion is not an isotopic reject, vote confidence is a clamped weighted mean, thinDispatch strategy follows the adjusted level, and an empty inference cycle saves state.",
801
+ "tags": [
802
+ "cascade",
803
+ "memory",
804
+ "repertoire"
805
+ ],
806
+ "priority": "high",
807
+ "status": "proposed",
808
+ "first_seen": "2026-09-23",
809
+ "evaluation_criteria": "After compact the seat can state the cascade from the repertoire name and from NOTES, without the chat.",
810
+ "validation_experiment": "A seat wakes blank and rebuilds the planes from the thread summary — treat as fail.",
811
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
812
+ "implementation_notes": "NOTES body is the same cascade for the second Read. Not a reflection. Not a new skill.",
813
+ "example_inference_snippet": "Chat is not the brain. The cascade is the repertoire name wake-cascade.",
814
+ "observation_stats": {
815
+ "observation_count": 1,
816
+ "avg_confidence": 0.55,
817
+ "max_confidence": 0.55,
818
+ "last_seen": "2026-09-23T00:00:00.000Z",
819
+ "governance_forced_count": 0
820
+ }
821
+ },
822
+ {
823
+ "name": "heat-is-not-conviction",
824
+ "definition": "Heat touches last_seen on names the kernel diary already matches. Heat touches last_seen when the diary contains that signal's name or a local clause of four definition content words; two definition words are not a hit; the same words scattered through a long diary are not a hit; a weak session score is not lifted to 0.55 and a sample below 0.55 is not recorded. Constructing the organ does not append workspace samples. It does not append a confidence sample, so a second heat does not raise observation_count and does not move avg_confidence. More hits do not raise conviction. Promotion still flips a proposed law to validated at two observations and confidence 0.55. Conviction moves on feedback, not on heat. Kernel diary text is logs/framework/activity.log, routing outcomes, pattern metrics, and .xray/inference/latest-workflow.json plus workflow-status.json. Heat matches that text onto existing names and does not mint a law. A missing session file or a stale inference-state timestamp is telemetry, not a law. Repertoire mergeStackOverlay refreshes a changed stack definition and keeps observation stats. It does not pass fleshGeneric. Subject overlay still fleshes only a generic field-observed stub. A floor observation count does not change a route. Feedback moves conviction by a tenth, and a failure can leave 0.55. learned-conviction.json beside dest restores that average when a wake flattens it to 0.55. It does not store the observation count.",
825
+ "tags": ["memory", "heat", "kernel"],
826
+ "priority": "high",
827
+ "status": "proposed",
828
+ "first_seen": "2026-09-23",
829
+ "evaluation_criteria": "A rising observation count at 0.55 is not treated as learning.",
830
+ "validation_experiment": "A seat reads observation mass as conviction — treat as fail.",
831
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
832
+ "implementation_notes": "heatKernelDiary calls touchLastSeen. recordPrimitiveObservations still appends samples for session and field ingest. A floor sample does not move avg_confidence. Feedback steps are a tenth. learned-conviction.json beside dest stores avg_confidence, not observation_count, and restores it when dest is flattened to 0.55. promoteQualifiedSignals uses DEFAULT_PROMOTION_MIN_CONFIDENCE 0.55 and min observations 2. mergeStackOverlay in repertoire src/paths.ts refreshes stack law fields and keeps observation_stats. It does not pass fleshGeneric.",
833
+ "example_inference_snippet": "Heat touches last_seen and does not append a confidence sample. A changed stack definition refreshes and the observation count stays.",
834
+ "observation_stats": {
835
+ "observation_count": 1,
836
+ "avg_confidence": 0.55,
837
+ "max_confidence": 0.55,
838
+ "last_seen": "2026-09-23T00:00:00.000Z",
839
+ "governance_forced_count": 0
840
+ }
841
+ },
842
+ {
843
+ "name": "inference-cycle-invariant",
844
+ "definition": "An inference cycle that generates no proposals still writes inference-cycle-state.json. Without that write the one-day trigger never starts and the next call repeats. InferenceCycle.getInstance applies later options, including force and skipApply. Governance failure rejects the proposals. Proposal text is a keyword map over session problem strings. generateProposals also emits recurring-pattern titles.",
845
+ "tags": ["inference", "invariant"],
846
+ "priority": "high",
847
+ "status": "proposed",
848
+ "first_seen": "2026-09-23",
849
+ "evaluation_criteria": "Empty cycles persist state, and later getInstance options apply.",
850
+ "validation_experiment": "An empty cycle returns without a state file — treat as fail.",
851
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
852
+ "implementation_notes": "src/inference/inference-cycle.ts and inference-proposal-generator.ts. generateProposals maps session problem strings through a keyword map and also emits recurring-pattern titles. Not a new skill.",
853
+ "example_inference_snippet": "An empty inference cycle still saves state. Proposal text is a keyword map over session problem strings. generateProposals also emits recurring-pattern titles.",
854
+ "observation_stats": {
855
+ "observation_count": 1,
856
+ "avg_confidence": 0.55,
857
+ "max_confidence": 0.55,
858
+ "last_seen": "2026-09-23T00:00:00.000Z",
859
+ "governance_forced_count": 0
860
+ }
861
+ },
862
+ {
863
+ "name": "governance-vote-invariant",
864
+ "definition": "PHI 1.666 and TAU 0.865 are unused constants. The matrix cutoffs are the literals 0.92, 0.95, 0.82, 0.88, 0.75, and 0.80. Reason text does not claim TAU. mergeVotes averageConfidence is the weighted mean of confidence, sum of weight times confidence over sum of weight, clamped to 0..1. That number is resonance. isotopicRatio is compared only when it is a finite number. moralFusion is not defaulted to 0.5. A missing fusion number does not force reject. Critical moral tension does reject. Without moral fields the three-skill vote stands.",
865
+ "tags": ["governance", "invariant"],
866
+ "priority": "high",
867
+ "status": "proposed",
868
+ "first_seen": "2026-09-23",
869
+ "evaluation_criteria": "A vote with no moral fusion is not an isotopic reject, and average confidence stays in 0..1.",
870
+ "validation_experiment": "Reason text names TAU, or average confidence exceeds 1 — treat as fail.",
871
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
872
+ "implementation_notes": "src/governance/governance-core.ts and governance-service.ts. Not a new skill.",
873
+ "example_inference_snippet": "No moral fusion is not an isotopic reject. Average confidence is a clamped weighted mean.",
874
+ "observation_stats": {
875
+ "observation_count": 1,
876
+ "avg_confidence": 0.55,
877
+ "max_confidence": 0.55,
878
+ "last_seen": "2026-09-23T00:00:00.000Z",
879
+ "governance_forced_count": 0
880
+ }
881
+ },
882
+ {
883
+ "name": "thin-dispatch-invariant",
884
+ "definition": "scoreComplexity applies the thresholds it is given. After Repertoire adjusts the score, level, recommendedStrategy, and estimatedAgents follow the adjusted level. A high-confidence trap with an adjusted score of at least 26 forces architect. A provenance-failure tag with an adjusted score under 51 forces bug-triage-specialist. On a frontier host the spawn gate warns and allows a spawn with no plan. Guided and strict hosts deny. The lead-dev plan builder is on.",
885
+ "tags": ["engine", "invariant", "thin-dispatch"],
886
+ "priority": "high",
887
+ "status": "proposed",
888
+ "first_seen": "2026-09-23",
889
+ "evaluation_criteria": "Strategy follows the adjusted level, and the trap routes are architect at 26 and bug-triage under 51.",
890
+ "validation_experiment": "Strategy stays on the pre-adjust level after Repertoire moves the score — treat as fail.",
891
+ "master_index_integration": "Project-local curated_signals after hydrateWritableSignals merges data/stack-overlay.json. Never write the factory tarball.",
892
+ "implementation_notes": "src/nucleus/thin-dispatch.ts and RepertoireOrchestratorBridge.resolveThinDispatchAgent. Not a new skill.",
893
+ "example_inference_snippet": "After Repertoire adjusts the score, strategy follows the adjusted level. A trap at 26 forces architect.",
894
+ "observation_stats": {
895
+ "observation_count": 1,
896
+ "avg_confidence": 0.55,
897
+ "max_confidence": 0.55,
898
+ "last_seen": "2026-09-23T00:00:00.000Z",
899
+ "governance_forced_count": 0
900
+ }
748
901
  }
749
902
  ]
750
903
  }
@@ -60,11 +60,11 @@
60
60
  "priority": "high",
61
61
  "status": "proposed",
62
62
  "first_seen": "2026-09-22",
63
- "evaluation_criteria": "Task language about x402, catalog, or receipted extract matches this name.",
64
- "validation_experiment": "Ask getTaskConfidence about paying only live x402 services.",
63
+ "evaluation_criteria": "A hit is the name repo-clearing, repo clearing, or four consecutive content words of the definition in order. x402 prose alone is not a hit.",
64
+ "validation_experiment": "getTaskConfidence on text that contains repo-clearing returns that name. A definition clause of spend USDC on live endpoints returns that name. x402 prose alone does not.",
65
65
  "master_index_integration": "Project dest only. Hangar stays unsuitied unless an AI sits down.",
66
66
  "implementation_notes": "Hangar is not suit. Do not invent Station as the hangar identity.",
67
- "example_inference_snippet": "Pay only live x402 services. Never double-pay. Clearing catalog hangar.",
67
+ "example_inference_snippet": "repo-clearing pays only live x402 services. Never double-pay.",
68
68
  "observation_stats": {
69
69
  "observation_count": 1,
70
70
  "avg_confidence": 0.55,
@@ -60,6 +60,10 @@ export declare class RepertoireService {
60
60
  };
61
61
  /**
62
62
  * Heat existing dest names from kernel diary text. No new names.
63
+ * Touches last_seen when the diary contains that signal's id, the id with
64
+ * hyphens read as spaces, or a consecutive definition clause. Does not append
65
+ * a confidence sample. Two definition words are not a hit. Heat must not mint
66
+ * and must not change observation_count or avg_confidence.
63
67
  * Colon pattern ids like `architect:architect_skill` never become dest keys.
64
68
  */
65
69
  heatKernelDiary(collected?: KernelDiaryCollect): {
@@ -1 +1 @@
1
- {"version":3,"file":"RepertoireService.d.ts","sourceRoot":"","sources":["../src/RepertoireService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RepertoireService.d.ts","sourceRoot":"","sources":["../src/RepertoireService.ts"],"names":[],"mappings":"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"}