ruvnet / ruvnet/RuVector

[PIR][WP22] D²ACCI-pattern stage-level memory diagnostic gate + DCR metric (ADR-325)

Open
#881 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

adr phase-w3-2 pir wave-3
Dominant language
Rust
Stars
4.5k
Forks
603
Avg merge
23h 32m
Merged PRs (30d)
59

Description

Epic: #837 · Wave 3, Phase W3-2 · Proposed ADR-325 · Paper: D²ACCI — A Dual-Loop Diagnostic Protocol for Evidence-Preserving Agent memory (arXiv:2608.17756, Grade A, all figures exact-match). ⚠️ No upstream code or benchmark artifact exists today — this is a reproduction-from-description build, materially larger scope than an adapt-from-repo WP. Size accordingly.

Goal

Build a stage-level diagnostic gate over the five memory-pipeline stages — ingestion, extraction, retrieval, filtering, generation — in crates/ruvector-agent-memory, plus a graded DCR (Diagnostic Coverage Ratio) observability metric attached to every memory-mutation's promotion record.

Extends merged ADR-307 (three-level persistent memory, WP3/WP4), ADR-320 (MemFuse-pattern atomic observation + causal graph, WP18), ADR-282/ADR-306 (research-gate paired-bootstrap promotion gate).

The key architectural distinction — STAGE-level, complementary to research-gate's OUTCOME-level gate

research-gate today answers a single outcome-level question: "did this whole mutation beat its parent?" It does not localize which of the five memory-pipeline stages changed behavior when a memory-system mutation's end-to-end score moves. This WP adds exactly that fault-localization layer, and it sits underneath research-gate, layered, not a replacement — the outcome-level paired-bootstrap statistics remain the promotion authority; the diagnostic gate adds stage-localizable attribution beneath them.

Every memory-mutation promotion record carries a graded DCR metric (per the paper).

Acceptance criteria

  • Each of the 5 stages is independently instrumented so a behavior change is stage-localizable — the promotion record identifies which stage moved, not just that the end-to-end score moved.
  • Promote a memory strategy only on: paired-improvement (research-gate's existing outcome-level delta) AND no protected-regression AND stage-localizable provenance. Every memory strategy is treated as an immutable, versioned policy artifact.
  • DCR metric computed and attached to every memory-mutation promotion record.
  • The diagnostic layer is wired under research-gate's existing paired-bootstrap statistics, provably not replacing or weakening the outcome-level gate.

Preprint-reproduction rule

D²ACCI's reported numbers are hypotheses, not the acceptance bar. With no upstream code to check against, the reproduction is entirely from the paper description — and promotion still requires an independently recomputed research-gate paired-bootstrap delta over the pre-WP baseline, never the paper's own figures.

Scope / files

crates/ruvector-agent-memory/src/{ledger.rs, observation.rs, fusion.rs, scoring.rs}, plus scripts/research-gate/research_gate.py (new diagnostic-trace consumer, layered under the existing paired-bootstrap statistics).

Depends on

WP4 (#840, TARL ledger — ledger.rs, observation.rs must exist) · WP18 (#865, MemFuse causal-graph fusion — fusion.rs)


Sources: 08-wave3-evidence-review.md (evidence grade + artifact status), 09-wave3-program-plan.md (WP/ADR mapping). Filed by the issue steward after coordinator approval of the Wave-3 breakdown.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with crates/ruvector-agent-memory/src/{ledger.rs, observation.rs, fusion.rs, scoring.rs} and scripts/research-gate/research_gate.py, then read ADR-307, ADR-320, ADR-282 and ADR-306 to understand the existing promotion layers. Done means all five stages are independently localizable, every promotion record carries DCR, and the diagnostic layer remains underneath the existing paired-bootstrap gate without weakening it.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
ai, backend, observability
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.