ruvnet-brain 4.3.30 → 4.3.32
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 — [](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.
|
|
3
|
+
"version": "4.3.32",
|
|
4
4
|
"description": "One-command installer for RuvNet Brain \u2014 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 a UserPromptSubmit retrieve-and-inject grounding hook and a PreToolUse write gate that refuses ungrounded rUv-product code until search_ruvnet has been consulted (ADR-0012 / ADR-067).",
|
|
4
|
-
"version": "4.3.
|
|
4
|
+
"version": "4.3.32",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Stuart Kerr"
|
|
7
7
|
},
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Self-heals the convergence manifest so a commit can never carry a stale one. Twice on
|
|
3
|
+
# 2026-09-27 (v4.3.30, v4.3.31) a commit was created with data/convergence-manifest.json out of
|
|
4
|
+
# date with the rest of the tree being committed -- once because a source fix landed in a
|
|
5
|
+
# separate commit after the manifest was written, once because the manifest was regenerated
|
|
6
|
+
# before a new file was `git add`ed (so `git ls-files` could not see it yet). Both times CI
|
|
7
|
+
# caught it minutes later on every OS in parallel: cheap to prevent locally, expensive to
|
|
8
|
+
# discover remotely. This hook regenerates the manifest against the CURRENT tree immediately
|
|
9
|
+
# before every commit and re-stages it, so the two can never drift apart again.
|
|
10
|
+
set -eu
|
|
11
|
+
ROOT="$(git rev-parse --show-toplevel)"
|
|
12
|
+
cd "$ROOT"
|
|
13
|
+
[ -f scripts/convergence-manifest.mjs ] || exit 0
|
|
14
|
+
node scripts/convergence-manifest.mjs >/dev/null 2>&1 && exit 0
|
|
15
|
+
node scripts/convergence-manifest.mjs --write
|
|
16
|
+
git add data/convergence-manifest.json
|
|
@@ -13,8 +13,16 @@ const REPO = 'stuinfla/ruvnet-brain';
|
|
|
13
13
|
const PACKAGE = 'ruvnet-brain';
|
|
14
14
|
export const ASSET_DOWNLOAD_TIMEOUT_MS = Number(process.env.RUVNET_RELEASE_ASSET_TIMEOUT_MS || 600_000);
|
|
15
15
|
|
|
16
|
+
// maxBuffer: execFileSync defaults to 1MB, which this helper never overrode. `refresh()` below
|
|
17
|
+
// slurps EVERY release's metadata (`releases?per_page=100 --paginate --slurp`) through it, and by
|
|
18
|
+
// 2026-09-27 the accumulated release history (many releases, several now carrying 14-15 chained
|
|
19
|
+
// transaction receipts as assets each) finally crossed that ceiling — same shape of bug as #77
|
|
20
|
+
// (spawnSync gh ENOBUFS), just at the metadata-listing call site instead of the asset-download one.
|
|
21
|
+
// 32MB matches the buffer already used for JSON metadata elsewhere in this codebase (e.g.
|
|
22
|
+
// release-abort-stale.mjs's artifact fetch) and costs nothing: no call through this helper handles
|
|
23
|
+
// raw asset bytes (those stream to disk via assetToFile), only ever-growing-but-still-small JSON.
|
|
16
24
|
const command = (name, args, options = {}) => execFileSync(name, args, {
|
|
17
|
-
encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 30_000, ...options,
|
|
25
|
+
encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 30_000, maxBuffer: 32 * 1024 * 1024, ...options,
|
|
18
26
|
}).trim();
|
|
19
27
|
const json = (name, args, options) => JSON.parse(command(name, args, options));
|
|
20
28
|
// ADR-086 S1: `releases/latest` is the customer download pointer and is a corpus generation on any
|