Deploy Poimen Memory K8s cluster with ArgoCD tracking (M2.2, M3.5-M3.7)
ci / markdown (push) Waiting to run

This commit is contained in:
Story Crater Bot
2026-08-22 23:13:42 -07:00
parent 9c723fe66f
commit d3be7f6fd4
105 changed files with 10973 additions and 113 deletions
+36 -2
View File
@@ -4,7 +4,7 @@
|---|---|
| Phase | M4 — Skills |
| Size | M — 13 days |
| Status | ⬜ Not started |
| Status | 🟡 In progress — `render_skill()` and `mem materialize` implemented |
| Flags | — |
| Spec | inlined below |
| Blocks | M3.1 |
@@ -14,6 +14,40 @@
Turn a memory note into a draft skill — the step that makes the memory *do*
something rather than only be read.
## Existing code (already implemented)
**`crates/mem-core/src/lesson.rs`** already contains:
| Function | What it does | Tests |
|---|---|---|
| `render_skill(tool, lessons)` | Generates `SKILL.md` with YAML frontmatter (`name`, `description`), per-lesson sections with `seen`/`last_seen`/`confidence`/`resolution`, and recurring-failure warnings | `skill_description_lists_symptoms_not_summary` |
| `render_injection(hit, max_chars)` | Generates capped injection text for prompts | `injection_is_capped` |
**`crates/mem-cli/src/lessons_cmd.rs`** already contains:
| Command | What it does |
|---|---|
| `mem materialize` | Writes `skills/<tool>-failures/SKILL.md` per tool + `MEMORY.md` digest. Creates dirs, prints symlink instructions for Claude Code / pi. |
## What remains to complete this task
The existing code generates skills from **command-level lessons** (`Lesson` struct). This task requires:
1. **Draft from L1/L2 memory notes**`mem skill draft --from <project>/<query-id>` reads a GRU-Mem memory node, not a lesson
2. **LLM-assisted conversion** — prompt the model to convert descriptive memory into procedural instruction using the rubric
3. **`_drafts/` enforcement** — existing `mem materialize` writes directly to `skills/`; this task must write to `_drafts/` only
4. **`generated_from: <sha>` provenance** — link back to the memory node
5. **Integration tests**`tests/it_skill_draft.rs` (7 assertions)
## Files
| Action | Path |
|---|---|
| **Exists** | `crates/mem-core/src/lesson.rs``render_skill()` |
| **Exists** | `crates/mem-cli/src/lessons_cmd.rs``mem materialize` |
| Modify | `crates/mem-cli/src/main.rs` — add `Commands::Skill { Draft }` subcommand |
| Create | `tests/it_skill_draft.rs` — integration tests (7 assertions) |
## Facts (inlined — no spec read needed)
```
@@ -92,7 +126,7 @@ frontmatter flag, because a directory cannot be accidentally globbed into
7. `a7_idempotent` — same input twice produces identical bytes apart from
`generated_at`.
**Command:** `cargo test -p mem-cli skill_draft`
**Command:** `cargo test --test it_skill_draft`
**False pass:**
- Asserting the file was written without asserting *where*. The entire safety