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 | M4 — Skills |
|
||||
| Size | M — 1–3 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
|
||||
|
||||
Reference in New Issue
Block a user