[PIR][WP22] D²ACCI-pattern stage-level memory diagnostic gate + DCR metric (ADR-325)
Nobody has claimed this yet.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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