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.3 |
|
||||
@@ -14,6 +14,47 @@
|
||||
Turn the model's tagged output into `(U_t, M̂_t, E_t)`, strictly — because a
|
||||
lenient parser silently fabricates gate decisions.
|
||||
|
||||
## Files
|
||||
|
||||
| Action | Path |
|
||||
|---|---|
|
||||
| Create | `crates/mem-core/src/gate_parser.rs` — `parse_gate_response()`, `GateResponse`, `ParseError` |
|
||||
| Modify | `crates/mem-core/src/lib.rs` — add `pub mod gate_parser;` and re-exports |
|
||||
| Create | `fixtures/gate-response-valid.txt` — well-formed model output |
|
||||
| Create | `fixtures/gate-response-nested-think.txt` — nested `<think>` tags |
|
||||
| Create | `tests/it_gate_parser.rs` — integration tests (workspace root) |
|
||||
|
||||
## Dependencies
|
||||
|
||||
**None new.** Use `str::find()` and `str::rfind()` for tag extraction. No regex
|
||||
crate needed — the tags are simple XML-like delimiters, not a grammar.
|
||||
|
||||
## Existing code to reuse
|
||||
|
||||
- Pattern reference: `lesson.rs` uses similar string scanning for error markers
|
||||
(`markers()`, `GENERIC_MARKERS`). Same technique, different tags.
|
||||
- `thiserror` already in `mem-core` deps for error enum derivation.
|
||||
|
||||
## Expected input/output
|
||||
|
||||
```
|
||||
Input:
|
||||
<think>
|
||||
This chunk shows a kubectl error. The user fixed it by adding --namespace.
|
||||
</think>
|
||||
<check>yes</check>
|
||||
<update>kubectl get pods fails without --namespace; fixed by adding --namespace=kube-system</update>
|
||||
<next>continue</next>
|
||||
|
||||
Output:
|
||||
GateResponse {
|
||||
think: "This chunk shows a kubectl error. The user fixed it by adding --namespace.",
|
||||
update_gate: true,
|
||||
candidate: "kubectl get pods fails without --namespace; fixed by adding --namespace=kube-system",
|
||||
exit_gate: false,
|
||||
}
|
||||
```
|
||||
|
||||
## Facts (inlined — no spec read needed)
|
||||
|
||||
Expected response shape:
|
||||
@@ -88,7 +129,7 @@ cases. Capture real ones with `MEM_LLM_RECORD` from M1.1.
|
||||
silently-defaulted `GateResponse`.
|
||||
9. `a9_real_responses` — every recorded real response parses.
|
||||
|
||||
**Command:** `cargo test -p mem-core gate_parser`
|
||||
**Command:** `cargo test --test it_gate_parser`
|
||||
|
||||
**False pass:**
|
||||
- A regex that finds the first `<check>` and stops. It passes 1–2 and silently
|
||||
|
||||
Reference in New Issue
Block a user