ruvnet-brain 4.5.0 → 4.5.1
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.5.
|
|
3
|
+
"version": "4.5.1",
|
|
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.5.
|
|
4
|
+
"version": "4.5.1",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Stuart Kerr"
|
|
7
7
|
},
|
|
@@ -121,15 +121,20 @@ export function confirm({ footprint, env = process.env, home = os.homedir(), now
|
|
|
121
121
|
}
|
|
122
122
|
const source = readJson(path.join(roots.kbDir, 'SOURCE.json'));
|
|
123
123
|
const builtMs = Date.parse(source?.builtUtc || '');
|
|
124
|
-
const
|
|
124
|
+
const signatureFile = path.join(roots.brainHome, SIGNATURE_RECORD);
|
|
125
|
+
const recorded = fs.existsSync(signatureFile);
|
|
126
|
+
const signature = recorded ? readJson(signatureFile) : null;
|
|
125
127
|
const coverage = sha256File(path.join(roots.kbDir, 'COVERAGE.json'));
|
|
126
128
|
const signed = Boolean(signature?.coverageSha256 && coverage && signature.coverageSha256 === coverage);
|
|
127
129
|
const tag = source?.corpusReleaseTag || source?.releaseTag || null;
|
|
128
|
-
// Structural problems (a second copy,
|
|
130
|
+
// Structural problems (a second copy, a record the live bytes contradict) gate; age is currency and only advises.
|
|
131
|
+
// NO record is provenance unknown, not provably broken (an install from a local sealed artifact and the automatic
|
|
132
|
+
// updater never write one): it advises. A record that is present but unreadable or does not match gates.
|
|
129
133
|
const knowledgeProblems = [];
|
|
130
134
|
const knowledgeAdvice = [];
|
|
131
135
|
if (footprint.kbCopies !== 1) knowledgeProblems.push([`${footprint.kbCopies} copies on disk (must be exactly 1)`, footprint.kbCopyFix || (footprint.kbCopies ? CLEAN : 'npx ruvnet-brain@latest')]);
|
|
132
|
-
if (!
|
|
136
|
+
if (!recorded) knowledgeAdvice.push([`installed or updated without a recorded signature verification — run ${UPDATE} to verify`, UPDATE]);
|
|
137
|
+
else if (!signed) knowledgeProblems.push([signature ? 'signature record does not match the live COVERAGE.json' : 'signature record is unreadable', UPDATE]);
|
|
133
138
|
if (!Number.isFinite(builtMs) || (now - builtMs) / 3_600_000 >= KNOWLEDGE_MAX_AGE_HOURS) knowledgeAdvice.push([`built ${Number.isFinite(builtMs) ? ago(builtMs, now) : 'at an unknown time'} (limit ${KNOWLEDGE_MAX_AGE_HOURS}h)`, UPDATE]);
|
|
134
139
|
const where = roots.location?.state === 'linked'
|
|
135
140
|
? `at ${roots.kbDir} (moved to ${volumeOf(roots.location.real)}, mounted)` : `at ${roots.kbDir}`;
|