- Align agent files with on-disk workplan prefixes (infer from workplan ids) - Set workplan domain to registered domain_slug; add topic_slug where applicable - Repair frontmatter delimiter formatting; migrate legacy task status literals - Regenerate AGENTS.md, CLAUDE.md, and .claude/rules from State Hub templates
7.6 KiB
id, type, title, domain, repo, status, owner, topic_slug, created, updated, state_hub_workstream_id
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | state_hub_workstream_id |
|---|---|---|---|---|---|---|---|---|---|---|
| CYA-WP-0006 | workplan | Profile 1 Production Hardening: Reflection UX, Compaction, and Surfacing | agents | can-you-assist | finished | grok | foerster-capabilities | 2026-06-19 | 2026-06-22 | f62c6908-dec0-442c-83d2-e34f0e87c1e7 |
CYA-WP-0006: Profile 1 Production Hardening
Goal
Move the Profile 1 (Reflexion-style verbal reflections) spike from CYA-WP-0005-T05 from "minimal but working" to production-quality behavior that users can rely on daily:
- Clearer capture UX inside
cya retrospect - Lightweight reflection management (review, edit path, basic compaction)
- Stronger surfacing in normal responses and
--explain-context - Expanded tests and observability
Preserve all Profile 0 / safety invariants: user-controlled inspectable memory, full provenance, memory signals add caution only (never downgrade risk or bypass confirmation).
Background & References
- Profile 1 spike (done):
remember_reflection(),KIND_REFLECTION, optional capture step inrun_retrospection(), preferential recall by kind, basic output surfacing. - Gap analysis:
history/2026-05-28-CYA-Intent-Scope-Gap-Analysis-Post-0005.md— recommends production-hardening Profile 1 as the highest-leverage next deepening step. - Profile definitions: MemoryVision.md — Profile 1 section and Capability Matrix.
- Safety contract:
src/cya/safety/risk.py+ CYA-WP-0002-T04 invariants. - Gap checklist (T01):
docs/CYA-WP-0006-profile-1-gap-checklist.md
Non-Goals (for this slice)
- Profile 2 (hierarchical synthesis) or Profile 3 (procedural evolution) implementation.
- Real
llm-connectclient wiring (separate future slice). - Deep
phase-memorygraph/planner integration (feedback doc exists; wiring is later). - Automatic background reflection generation without explicit user trigger.
- PyPI publishing or CI automation (registered debt from CYA-WP-0004).
Task Breakdown
T01 — Audit Profile 1 spike gaps vs MemoryVision acceptance
id: CYA-WP-0006-T01
status: done
priority: high
state_hub_task_id: "ec8cc24d-80ca-4a51-b98c-87d0cfc9a110"
Document the delta between shipped spike behavior and MemoryVision Profile 1 acceptance
criteria: capture UX, activation surfacing, compaction, explainability, safety integration.
Produce a short checklist in the workplan or docs/ that gates T02–T05.
Acceptance criteria:
- Gap checklist exists with prioritized items mapped to tasks T02–T05.
- No code changes required unless a blocking bug is found (file separately as ADHOC if so).
Done: docs/CYA-WP-0006-profile-1-gap-checklist.md
T02 — Improve cya retrospect reflection capture UX
id: CYA-WP-0006-T02
status: done
priority: high
state_hub_task_id: "c7f381d4-d362-4183-a7bd-d3ceea7e997d"
Enhance the optional verbal-lesson step in run_retrospection():
- Guided prompts (what went well / what to remember / what to avoid)
- Preview before save; allow skip without storing empty records
- Store structured metadata (session date, scope) in provenance
Acceptance criteria:
- Users can capture 1–3 concise lessons with clear prompts and confirmation.
- Skipping leaves no orphan/empty reflection records.
- Existing retrospection kinds and goals flow unchanged.
Done: _capture_reflection_lessons() in orchestrator.py; helpers in memory/reflections.py.
T03 — Reflection review and lightweight compaction
id: CYA-WP-0006-T03
status: done
priority: medium
state_hub_task_id: "078d6f17-6d56-42ec-85c9-140c41d7e83f"
Add user-visible reflection management without hiding state:
export_memory(..., kinds=["reflection"])surfaced via CLI helper or documented path- Simple compaction: detect near-duplicate reflections in the same scope (string similarity or normalized key collision) and offer merge/replace in retrospect or a small subcommand
- All compaction is explicit — no silent deletion
Acceptance criteria:
- User can list/export reflections for a scope.
- Duplicate detection works on a small fixture set; merge/replace is opt-in.
- Compaction never bypasses safety or provenance requirements.
Done: cya memory reflections CLI; _offer_reflection_compaction() in retrospect; compact_reflections() / find_duplicate_reflection_groups().
T04 — Strengthen surfacing in responses and --explain-context
id: CYA-WP-0006-T04
status: done
priority: high
state_hub_task_id: "b1f7a333-bf9a-478c-993b-e421524ced3a"
Improve how activated reflections appear in handle_request() and context explanation:
- Show count + truncated lesson text in
--explain-contextwith provenance - Normal responses include a concise "reflections influenced this" line when relevant
- Cap token/line budget to avoid wall-of-text
Acceptance criteria:
- Roundtrip test: stored reflection → recall → visible in explain output.
- Output remains readable for 0, 1, and 5+ reflections.
Done: format_reflection_surfacing(); recall prioritization for KIND_REFLECTION.
T05 — Tests, observability, and safety regression coverage
id: CYA-WP-0006-T05
status: done
priority: high
state_hub_task_id: "b42c8fa1-6ab7-4b75-bdd5-43006e2d0a9c"
Expand tests/test_memory.py and orchestrator tests for:
- New capture UX paths (prompt/skip/preview)
- Compaction opt-in behavior
- Surfacing in explain-context
- Safety invariant: reflections cannot downgrade destructive-command confirmation
Add basic observability in export_memory (reflection counts by scope).
Acceptance criteria:
make test/python3 -m pytest tests/ -qpasses cleanly.- At least one test per new behavior path from T02–T04.
Done: 9 new tests in test_memory.py; tests/test_orchestrator.py added.
T06 — Documentation updates
id: CYA-WP-0006-T06
status: done
priority: medium
state_hub_task_id: "18498a09-1d1c-424b-bf13-6952fabd34d3"
Update README.md (retrospect / Profile 1 section), MemoryVision.md status note, and SCOPE.md if delivered scope changes materially.
Acceptance criteria:
- README documents the hardened Profile 1 flow with an example session.
- MemoryVision notes Profile 1 as "production" (not "spike") when T02–T05 complete.
Done: README, MemoryVision, SCOPE updated.
T07 — Register, sync, and handoff
id: CYA-WP-0006-T07
status: done
priority: medium
state_hub_task_id: "a9c2627f-7ed8-45a9-b1ee-7ba64ebbcd09"
Register workstream in State Hub via make fix-consistency REPO=can-you-assist,
log progress event, set workplan to ready after review or active when implementation
starts.
Acceptance criteria:
state_hub_workstream_idand task ids written by fix-consistency..custodian-brief.mdregenerated with CYA-WP-0006 visible.
Dependencies & Cross-Repo Coordination
- phase-memory: Optional future compaction planner hooks — not required for this slice.
See
docs/phase-memory-optimization-suggestions.mdfor long-term asks. - llm-connect: Not required (reflections are user-authored text in this slice).
Debt & Future Work (Registered)
- Profile 2 synthesis spikes (user-triggered, dry-run first).
- Real
llm-connectadapter implementation slice. - CI gate for
make test+make check-dist(from CYA-WP-0004 debt). - Profile selection UX (
cya memory profile ...).
Success Criteria
When complete:
- Profile 1 is demonstrably production-usable: capture, review, activation, and surfacing are polished and tested.
- Safety and explainability invariants from Profile 0 remain intact.
- Users reading README + MemoryVision understand Profile 1 as shipped capability, not a spike.
Completed 2026-06-22. All tasks done; 36 tests pass.