Repository navigation
fix: make memory opt-in and preserve pressure compaction - #580
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reachedNext included review available in 16 minutes. View limit detailsLimit details: You’ve used all 8 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (11)
📒 Files selected for processing (49)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
| Filename | Overview |
|---|---|
| internal/daemon/memory_extractor_output.go | Requires successful semantic termination and preserves partial output as diagnostics when extraction is interrupted. |
| internal/daemon/role_resolver.go | Centralizes effective role enablement under the daemon and workspace memory gates while retaining the pressure-compaction exception. |
| internal/daemon/role_status.go | Projects the same effective memory-role state used by runtime invocation. |
| internal/daemon/daemon_memory_e2e_integration_test.go | Adds runtime coverage for role status and terminal-less extractor failure without candidate persistence. |
| docs/qa/reports/2026-09-09-issue-561-memory-opt-in.md | Records the review remediation and targeted regression evidence. |
Reviews (2): Last reviewed commit: "fix: reject interrupted extraction and p..." | Re-trigger Greptile
What & why
Fixes #561.
CompozyOS is a control plane. Starting a daemon or completing an ordinary turn should not opt an operator into persistent memory extraction or background dreaming.
memory.enabledand the existing independentroles.dream.enablednow default tofalse. To opt in, set[memory] enabled = truein the daemon configuration and restart; enable[roles.dream] enabled = trueseparately for dreaming. Existing explicit settings retain their meaning, and no user configuration or stored memory is rewritten or deleted.The opt-in path is also repaired. Previously, the extractor discarded the entire JSONL batch on its first invalid line, treated common no-memory answers as parse failures, and stopped the child with a misleading completion detail before parsing was accounted for. The timeout reported in the issue is a separate execution deadline, not a JSON-parser consequence.
{"no_candidates":true}. Conventional empty answers, an empty array, and JSONL fences are handled deliberately. Unknown prose and malformed candidates remain line-numbered failures.memory.extractor.failed, not a false completed event.session.compaction.enabled, independently of persistent memory. Factory boot retains private checkpoint WAL storage and resume-only coverage. Only actual pressure can launch its summary child; no public memory provider or session-end worker is registered. An explicit checkpoint-role opt-out or failed summary leaves uncovered events unarchived.How you verified it
Implemented and reviewed with Codex, GPT-6-Astra, high reasoning. Checked head: 5e90cd6.
N/(responses and loss of valid candidates around malformed output. The fixed cases passed with-race.go run ./cmd/compozy-codegen allcompleted without generated drift.make gatefound a trailing blank line, which was corrected. The owner explicitly requested publication with the full gate delegated to CI; a clean full local gate is not claimed. All required CI checks remain delivery requirements.Final heavy checks used
GOMAXPROCS=4,COMPOZY_GO_TEST_P=1, andCOMPOZY_GO_LINT_CONCURRENCY=2throughmise exec. Manual Go tests retained-race -p=1 -parallel=4; integration also used the repository's modernc checkptr setting. The E2E runner acquired the repository's machine-wide verification lock. The short isolated lab used 57-byte daemon and at-most-88-byte harness sockets. Both labs completed targeted teardown withclean: true. The strict QA audit has one remaining criterion, C14 (full local gate), delegated to CI by the owner; it found zero other blockers or warnings.QA evidence and cross-surface audit.
Impact
Existing keys, CLI verbs, HTTP/UDS routes, native tool IDs, and response shapes remain. Global/profile/workspace configuration precedence is retained under the daemon memory master switch. No SQLite shape or migration changes are required; disabled boot still applies memory schema migrations. This preserves SD-013 user state and public-surface compatibility while intentionally changing omitted defaults.
Site configuration/memory references, the official Compozy skill reference, affected QA scenarios, and a release note co-ship. Web uses the existing controls and contracts. Retrieval algorithms (#562) and startup tool-manual policy (#563) are unchanged.
Limits: deterministic ACP fixtures prove daemon/process/protocol behavior, not live-provider reliability or timeout frequency. Provider-native compaction was not exercised; the factory pressure/resume check exercises Compozy checkpoint coverage and degraded replay.