ruvnet-brain 4.3.11 → 4.3.13

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/README.md CHANGED
@@ -7,7 +7,7 @@ Created: 2026-06-29 22:36:38 EDT
7
7
 
8
8
  # 🧠 RuvNet Brain
9
9
 
10
- ### 🧠 RuvNet Brain — [![RuvNet Brain version 4.3.11 — updated 2026-07-30 03:24 EDT](https://img.shields.io/badge/version_4.3.11-updated_2026--07--30_03:24_EDT-1E90FF?style=for-the-badge&labelColor=0757BA)](https://github.com/stuinfla/ruvnet-brain/blob/main/plugin/.claude-plugin/plugin.json)
10
+ ### 🧠 RuvNet Brain — [![RuvNet Brain version 4.3.13 — updated 2026-07-30 03:24 EDT](https://img.shields.io/badge/version_4.3.13-updated_2026--07--30_03:24_EDT-1E90FF?style=for-the-badge&labelColor=0757BA)](https://github.com/stuinfla/ruvnet-brain/blob/main/plugin/.claude-plugin/plugin.json)
11
11
 
12
12
  **A portable, source-grounded brain over Reuven Cohen's (rUv's) RuvNet stack — delivered as a Claude Code plugin that makes Claude _use_ the stack instead of fighting it.**
13
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ruvnet-brain",
3
- "version": "4.3.11",
3
+ "version": "4.3.13",
4
4
  "description": "One-command installer for RuvNet Brain — a portable, source-grounded brain over rUv's RuvNet building blocks, delivered as a Claude Code plugin so Claude uses the stack instead of fighting it.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ruvnet-brain",
3
3
  "description": "RuvNet brain transplant for Claude Code — grounds every RuvNet decision in real source across 77 rUv repositories, prefers Ruflo / RuVector-RVF / AgentDB over training-prior defaults (pgvector, Pinecone, hand-rolled cosine), and can pull in any RuvNet repo on demand. Ships an enforced UserPromptSubmit retrieve-and-inject grounding hook that sharply reduces drift.",
4
- "version": "4.3.11",
4
+ "version": "4.3.13",
5
5
  "author": {
6
6
  "name": "Stuart Kerr"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ruvnet-brain",
3
- "version": "4.3.11",
3
+ "version": "4.3.13",
4
4
  "description": "Source-grounded RuvNet knowledge, lifecycle enforcement, and learning for Codex.",
5
5
  "author": {
6
6
  "name": "Stuart Kerr"
@@ -413,7 +413,10 @@ export function installScheduler(record, { platform = process.platform, env = pr
413
413
  // schtasks /TR rejects commands longer than 261 characters. Importing equivalent XML keeps the
414
414
  // exact Node executable and argument identity while allowing long temporary/user paths.
415
415
  const xmlPath = path.join(path.dirname(record.recordPath), `${record.identity}.task.xml`);
416
- fs.writeFileSync(xmlPath, windowsTaskXml(record), { flag: 'wx', encoding: 'utf16le' });
416
+ // schtasks requires a UTF-16LE BOM when importing XML; without it Windows
417
+ // reports the otherwise valid document as "one root element" malformed.
418
+ const xmlBytes = Buffer.concat([Buffer.from([0xff, 0xfe]), Buffer.from(windowsTaskXml(record), 'utf16le')]);
419
+ fs.writeFileSync(xmlPath, xmlBytes, { flag: 'wx' });
417
420
  try { created = run('schtasks', ['/Create', '/XML', xmlPath, '/TN', record.identity, '/F'], { encoding: 'utf8' }); }
418
421
  finally { fs.rmSync(xmlPath, { force: true }); }
419
422
  }
@@ -178,8 +178,11 @@ export async function createPublicVerificationLane({
178
178
  failures.push({ mode, reason: error.message, retrieval });
179
179
  continue;
180
180
  }
181
+ // Native scheduler lifecycle is qualified in the reviewed cross-platform
182
+ // release suite. The live public adapter opts out because that proof relies
183
+ // on maintainer-only host tooling; test adapters still exercise the seam.
181
184
  let nativeNightly;
182
- if (mode === 'dual') {
185
+ if (mode === 'dual' && adapter.publicNativeNightly !== false) {
183
186
  if (typeof adapter.runNativeNightly !== 'function') throw new Error('native nightly proof adapter is required');
184
187
  nativeNightly = await adapter.runNativeNightly({ identity, workflowRunId: String(workflowRunId) });
185
188
  }
@@ -303,6 +303,7 @@ export function livePublicationAdapter({ root = process.cwd(), candidateRoot = r
303
303
  const passageFileDigests = new Map();
304
304
  let installTemp = null;
305
305
  return {
306
+ publicNativeNightly: false,
306
307
  async downloadNpm({ version, destination }) {
307
308
  const metadata = JSON.parse(command('npm', ['view', `${PACKAGE}@${version}`, '--json']));
308
309
  if (metadata.version !== version || !metadata.dist?.tarball) {