This repository has been archived on 2026-07-08. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
can-you-assist/workplans/CYA-WP-0006-profile-1-production-hardening.md
tegwick a0f79af2ab Normalize agent instructions and workplan frontmatter (STATE-WP-0067)
- 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
2026-06-22 23:16:24 +02:00

7.6 KiB
Raw Blame History

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 in run_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-connect client wiring (separate future slice).
  • Deep phase-memory graph/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 T02T05.

Acceptance criteria:

  • Gap checklist exists with prioritized items mapped to tasks T02T05.
  • 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 13 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-context with 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/ -q passes cleanly.
  • At least one test per new behavior path from T02T04.

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 T02T05 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_id and task ids written by fix-consistency.
  • .custodian-brief.md regenerated 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.md for 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-connect adapter 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.