Deploy Poimen Memory K8s cluster with ArgoCD tracking (M2.2, M3.5-M3.7)
ci / markdown (push) Waiting to run
ci / markdown (push) Waiting to run
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|---|---|
|
||||
| Phase | M1 — Gated loop at L1 |
|
||||
| Size | M — 1–3 days |
|
||||
| Status | ⬜ Not started |
|
||||
| Status | ✅ Done |
|
||||
| Flags | — |
|
||||
| Spec | inlined below |
|
||||
| Blocks | M1.6 |
|
||||
@@ -14,6 +14,56 @@
|
||||
One command that reads a real project and produces a real log — and reports the
|
||||
number that says whether the gate works.
|
||||
|
||||
## Files
|
||||
|
||||
| Action | Path |
|
||||
|---|---|
|
||||
| Modify | `crates/mem-cli/src/main.rs` — extend `Commands::Ingest` with `--query` and `--resume` flags; replace stub `cmd_ingest()` body with real pipeline |
|
||||
| Create | `tests/it_ingest.rs` — integration tests (workspace root, 7 assertions) |
|
||||
|
||||
## Dependencies
|
||||
|
||||
**None new.** All crates already depend on what they need. This task wires existing
|
||||
pieces together.
|
||||
|
||||
## Existing code to reuse
|
||||
|
||||
- `cmd_ingest()` in `main.rs` — **replace the stub body**, keep the CLI struct
|
||||
- `PiSessionSource` from `mem-ingest/src/pi_session.rs` — already works (M0.5)
|
||||
- `ClaudeTranscriptSource` from `mem-ingest/src/claude_transcript.rs` — already works (M0.6)
|
||||
- `chunks()` from `mem-chunk/src/chunker.rs` — already works (M0.3)
|
||||
- `ChunkPolicy` from `mem-chunk/src/chunk_policy.rs` — already works
|
||||
- `QuerySet::load()` from `mem-core/src/query.rs` — from M1.2
|
||||
- `run_loop()` from `mem-core/src/gated_loop.rs` — from M1.5
|
||||
- `LogWriter` from `mem-store/src/event_log.rs` — from M1.6
|
||||
- `ChatClient` from `mem-llm/src/chat.rs` — from M1.1
|
||||
|
||||
## Wiring diagram
|
||||
|
||||
```
|
||||
CLI: mem ingest --project poimen --query tool-failures
|
||||
│
|
||||
├─ QuerySet::load("queries/poimen.yaml") ← M1.2
|
||||
│ └─ query = set.by_id("tool-failures")
|
||||
│
|
||||
├─ PiSessionSource::new(session_files) ← M0.5 (existing)
|
||||
│ └─ source.records() → Stream<Record>
|
||||
│
|
||||
├─ chunks(source, policy) ← M0.3 (existing)
|
||||
│ └─ Stream<Chunk>
|
||||
│
|
||||
├─ ChatClient::new(base_url, api_key, model) ← M1.1
|
||||
│
|
||||
├─ run_loop(L1, query, chunks, client, config) ← M1.5
|
||||
│ └─ RunOutcome { events, chunks_seen, chunks_used, ... }
|
||||
│
|
||||
├─ LogWriter::open(project, query, run_id) ← M1.6
|
||||
│ └─ write events to log/poimen/tool-failures/<ulid>.jsonl
|
||||
│
|
||||
└─ Print summary:
|
||||
chunks 412 used 17 update-rate 4.1% memory 142tok elapsed 6m12s
|
||||
```
|
||||
|
||||
## Facts (inlined — no spec read needed)
|
||||
|
||||
```
|
||||
@@ -79,7 +129,7 @@ chunk costs a model call, so `--resume` is not a nicety.
|
||||
7. `a7_live_smoke` — `#[ignore]`; real gateway, `--limit 20` on a real project;
|
||||
assert `run_end` and **print** the update-rate for a human to read.
|
||||
|
||||
**Command:** `cargo test -p mem-cli ingest` (add `-- --ignored` for a7)
|
||||
**Command:** `cargo test --test it_ingest` (add `-- --ignored` for a7)
|
||||
|
||||
**False pass:**
|
||||
- Asserting only that the command exits 0. A run whose gate always answers `no`
|
||||
|
||||
Reference in New Issue
Block a user