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
25 changes: 23 additions & 2 deletions .planning/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,29 @@ Phases execute in numeric order: 51 -> 51.5 (merged out-of-band) -> 52 -> 53
| v2.5 Semantic Dedup | 35-38 | 11/11 | Complete | 2026-03-10 |
| v2.6 Cognitive Retrieval | 39-44 | 13/13 | Complete | 2026-03-16 |
| v2.7 Multi-Runtime Portability | 45-50 | 11/11 | Complete | 2026-03-22 |
| v3.0 Competitive Parity | 51-53 + 51.5 | 4/TBD | In progress | Phase 51 merged 2026-04-28; Phase 52 (CLI API) in PR review |
| v3.0 Competitive Parity | 51-53 + 51.5, 53.5 | 5/TBD | In progress | Phase 51 + 51.5 + 52 merged; Phase 53.5 (cross-project) in PR review |

---

*Updated: 2026-05-12 — Phase 52 (Simple CLI API) opening PR*
## v3.0 Cross-Project Federation (out-of-band)

> Branch: `feature/v3.0-cross-project-memory` (PR #25)

### Phase 53.5: Cross-Project Federation Core (1/1 plan) — COMPLETE 2026-04-10

Out-of-band insertion (mirrors Phase 51.5 pattern). Originally planned as Phase 51 before the Retrieval Orchestrator took that slot; renumbered to a decimal phase to preserve v3.0's documented Competitive Parity scope (Phases 51-53).

- [x] 53.5-01: Cross-project federated query (proto fields, config, fail-open federation, opt-in flag, e2e tests)

**Deliverables:**
- `proto/memory.proto`: `all_projects` flag on `RouteQueryRequest`, `project` attribution on `RetrievalResult`
- `CrossProjectConfig` in `memory-types/config.rs` with `registered: Vec<PathBuf>`
- `Storage::open_read_only()` in `memory-storage`
- `memory-service/src/federated.rs`: pure `federated_query` function with fail-open, TOC search fallback, project attribution
- `RetrievalHandler::with_registered_projects()` builder; `all_projects=true` opt-in in `route_query`
- E2E tests: merged results, attribution, fail-open, default unchanged
- 9 unit tests + 4 e2e tests — all passing

---

*Updated: 2026-05-14 — Phase 52 merged via PR #29; Phase 53.5 (cross-project federation) under review via PR #25*
24 changes: 14 additions & 10 deletions .planning/STATE.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
---
gsd_state_version: 1.0
milestone: v3.0
milestone_name: Competitive Parity & Benchmarks
status: in_progress
stopped_at: null
last_updated: "2026-05-12T00:00:00.000Z"
last_activity: 2026-05-12 — Phase 52 (Simple CLI API) rebased onto main and opening PR
last_updated: "2026-05-14T00:00:00.000Z"
last_activity: 2026-05-14 — Phase 52 merged via PR #29; Phase 53.5 (cross-project) re-rebased for merge
progress:
total_phases: 4
completed_phases: 3
Expand All @@ -25,10 +24,10 @@ See: .planning/PROJECT.md (updated 2026-03-22)

## Current Position

Phase: 52 of 53 (Simple CLI API) — opening PR
Plan: 3 of 3 complete (52-01 scaffold, 52-02 read-path, 52-03 write/query commands)
Status: Phase 51 + 51.5 + 52 done; Phase 53 (Benchmark Suite) next
Last activity: 2026-05-12Rebased gsd/phase-52-simple-cli-api onto post-Phase-51 main; opening PR
Phase: 53.5 of 53 (cross-project federation, out-of-band) — landing via PR #25
Plan: 1 of 1 complete (53.5-01 cross-project federated query)
Status: Phase 51 + 51.5 + 52 merged; Phase 53.5 (cross-project) merging next; Phase 53 (Benchmark Suite) still pending
Last activity: 2026-05-14Phase 52 merged via PR #29; PR #25 re-rebased onto post-Phase-52 main

Progress: [████████░░] 75% (3 of 4 phases)

Expand Down Expand Up @@ -73,6 +72,11 @@ See .planning/MILESTONES.md
- [Phase 52]: All CLI commands route through gRPC (no direct RocksDB access) — daemon stays single source of truth
- [Phase 52]: JsonEnvelope output pattern: ok/error/context_ok constructors, TTY detection via IsTerminal
- [Phase 52]: New `memory-cli` crate (binary name: `memory`) added to workspace — separate from `memory-daemon`
- Phase 53.5 inserted as a decimal phase (out-of-band, mirrors 51.5) for cross-project federation work originally authored against the Phase 51 slot — preserves v3.0 Competitive Parity scope (Phases 51-53)
- [Phase 53.5]: TOC-based primary fallback in `federated_query` when BM25/vector indexes aren't built — ensures cross-project mode always works
- [Phase 53.5]: Project attribution stored in `metadata["project"]` — same convention as `metadata["agent"]` from v2.1
- [Phase 53.5]: `federated_query` is a pure function — matches existing `enrich_with_salience` pattern
- [Phase 53.5]: `open_read_only` uses `DB::open_cf_for_read_only` from rocksdb 0.22 with `create_if_missing(false)`

## Blockers

Expand Down Expand Up @@ -101,9 +105,9 @@ See: .planning/MILESTONES.md for complete history

## Cumulative Stats

- ~58,000 LOC Rust across 16 crates (memory-orchestrator from Phase 51, memory-cli from Phase 52)
- 52 phases (Phase 1-52), 153 plans across 9 milestones (counting Phase 51's 3 plans + 51.5 + 52's 3 plans)
- 46+ E2E tests + 144 bats CLI tests + orchestrator unit tests + memory-cli unit tests
- ~58,400 LOC Rust across 16 crates (memory-orchestrator from Phase 51, memory-cli from Phase 52) + federated module in memory-service (Phase 53.5)
- 52 phases (Phase 1-52 + 53.5), 154 plans across 9 milestones
- 50+ E2E tests + 144 bats CLI tests + orchestrator + memory-cli + 9 federated unit tests + 4 cross-project e2e tests

## Session Continuity

Expand Down
1 change: 1 addition & 0 deletions crates/e2e-tests/src/bin/perf_bench.rs
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,7 @@ async fn run_route_query(
mode_override: None,
limit: 10,
agent_filter: None,
all_projects: false,
}))
.await
.map_err(|e| e.to_string())?;
Expand Down
Loading
Loading