Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions docs/adr/ADR-2104-direct-control-over-mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,3 +118,20 @@ without losing the capability.
- **Priority:** P1 — this cycle (Track A item 1; CY-A1, exit test passed 30 Sep)
- **Why:** The fail-hard half is proven on the running image. On 30 Sep, `rm /run/agentbox/mcp-hub.json` drove the hub to FATAL after 365 s with no 9720 listener, and restoring the file brought it back (TODO CY-A1; code `d17c557a6`). The inventory is out of date in one row: `ontology-bridge` was retired by ADR-2107 and ADR-2108 (`f5d71b874`), and `[resources.mcp_hub].servers` now lists eight servers (`agentbox.toml:1267`). The port-or-delete follow-on (the `consultant-client` crate, then deleting servers with no call sites) has not started.
- **Next:** Amend the inventory to note that the `ontology-bridge` row is closed by ADR-2108, then accept on the CY-A1 exit test. The port half stays `partial`.

## Note — 2026-10-03: ruvnet-brain corpus ingest follows upstream's content-addressed releases

No active ADR owns `scripts/ruvnet-brain-ingest.mjs` (its lineage is archived), so this record, the only
active one ruling on the `ruvnet-brain` surface, carries the note. It does not move the order-3 row: the
ingest writes `ruvnet-kb` rows into RuVector, and the MCP server only gained a derived `provenance` block in
`ruvnet_brain_status`.

- Upstream `stuinfla/ruvnet-brain` tags are now `corpus-sha256-<archive digest>`, with `.zip.sig` and
`corpus-receipt.json`. The ingest takes GitHub's designated `/releases/latest`, because the list API had
put `v4.5.2` ahead of the promoted `corpus-sha256-832bae01…`. It requires `.zip.sha256` to equal the tag
digest and the receipt's archive digest to equal the zip, and it records `sig_present`. It reports
`signature_verified: false` ("no published public key"); no key is guessed.
- Live reconcile, 2026-10-03 12:37–12:46Z: v4.5.1 → `corpus-sha256-832bae01…`, 162,292 chunks (1,518
embedded, 160,774 unchanged, 450 pruned, 0 failed), receipt `0c210a54…` matched, shipped runtime v4.5.2.
- The ingest does not rebuild the HNSW index. The serial `REINDEX` (ADR-2018) and the recall gate remain an
operator follow-up after each real delta.
17 changes: 16 additions & 1 deletion mcp/ruvnet-brain/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,21 @@ async function brainStatus() {
[NAMESPACE],
);
out.manifest = manifest.rows.length ? parseVal(manifest.rows[0].value) : null;
// Release provenance, as recorded by the ingest (scripts/ruvnet-brain-ingest.mjs).
// A manifest from a pre-2026-10-03 ingest carries none of these fields.
const m = out.manifest && typeof out.manifest === 'object' ? out.manifest : null;
if (m && 'sig_present' in m) {
out.provenance = {
content_addressed: Boolean(m.content_addressed),
archive_sha256: m.archive_sha256 ?? null,
sig_present: Boolean(m.sig_present),
signature_verified: Boolean(m.signature_verified),
signature_reason: m.signature_reason ?? null,
receipt_sha256: m.receipt_sha256 ?? null,
receipt_matches_archive: m.receipt_matches_archive ?? null,
shipped_runtime: m.shipped_runtime ?? null,
};
}
if (!out.corpus.total) {
out.hint = 'Corpus empty — run scripts/ruvnet-brain-ingest.mjs (auto-runs at boot when [skills.ruvnet_brain].auto_ingest = true).';
}
Expand Down Expand Up @@ -219,7 +234,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
},
{
name: 'ruvnet_brain_status',
description: 'Corpus health: chunk counts, embedded coverage, distinct repos, ingest manifest (corpus version + timestamp).',
description: 'Corpus health: chunk counts, embedded coverage, distinct repos, ingest manifest (corpus version + timestamp) and release provenance (archive digest, signature present/verified, receipt digest, shipped runtime).',
inputSchema: { type: 'object', properties: {} },
},
],
Expand Down
Loading
Loading