|
1 | 1 | # Release Notes |
2 | 2 |
|
| 3 | +## 1.4.0 (2026-04-28) |
| 4 | + |
| 5 | +### Memory Quality Cleanup |
| 6 | + |
| 7 | +This release improves automatic workspace memory quality without risking broad cleanup of useful existing memories. |
| 8 | + |
| 9 | +The quality gate is now shared across compaction extraction and migration checks, the compaction prompt is stricter about what should become durable memory, and the one-time migration is intentionally conservative. |
| 10 | + |
| 11 | +### What Changed |
| 12 | + |
| 13 | +- **Unified quality rules**: memory quality checks now live in one shared module and apply consistently across feedback, decisions, project facts, and references. |
| 14 | +- **Stricter compaction output**: the compaction prompt now tells the model to save fewer memories and prefer durable facts, user preferences, architecture decisions, and hard-to-rediscover references. |
| 15 | +- **Conservative migration cleanup**: the `2026-04-28-quality-cleanup` migration only supersedes high-confidence garbage patterns, not every rejected memory. |
| 16 | +- **Audit logs**: automatic migration cleanup writes local JSONL audit records so superseded entries can be inspected and restored. |
| 17 | +- **Extraction rejection logs**: newly rejected compaction candidates are logged locally to help calibrate future quality rules. |
| 18 | +- **Regression coverage**: migration behavior is tested against sanitized real-workspace patterns to prevent mass false positives from coming back. |
| 19 | +- **Workspace cleanup tooling**: a dev/admin cleanup command can dry-run or quarantine definite temp/test workspace residues without deleting unknown missing-root workspaces. |
| 20 | +- **Test storage isolation**: test runs now use a temporary `XDG_DATA_HOME`, preventing fixture workspaces from polluting real local memory data. |
| 21 | + |
| 22 | +### What Gets Cleaned Up |
| 23 | + |
| 24 | +The migration may supersede existing `source: "compaction"` memories only when they match hard garbage patterns: |
| 25 | + |
| 26 | +- Empty entries |
| 27 | +- Progress snapshots, such as "Wave 1 completed successfully" |
| 28 | +- Test or suite count snapshots, such as "180 tests passed" |
| 29 | +- Raw errors and stack traces |
| 30 | +- Commit or CI snapshots |
| 31 | +- Temporary status notes, such as "Currently running npm test" |
| 32 | +- Active file snapshots |
| 33 | +- Code or API signatures |
| 34 | +- Path-heavy entries that are just rediscoverable file lists |
| 35 | + |
| 36 | +### What Is Protected |
| 37 | + |
| 38 | +The migration does not supersede entries whose only issue is a soft heuristic failure, such as: |
| 39 | + |
| 40 | +- `bad_feedback` |
| 41 | +- `bad_decision` |
| 42 | + |
| 43 | +This protects useful declarative memories like: |
| 44 | + |
| 45 | +- Product branding rules |
| 46 | +- API facts |
| 47 | +- Release rules |
| 48 | +- Architecture decisions |
| 49 | +- User workflow preferences |
| 50 | + |
| 51 | +Explicit and manual memories are also protected. |
| 52 | + |
| 53 | +### Migration Behavior |
| 54 | + |
| 55 | +- Runs once per workspace. |
| 56 | +- Only affects active `source: "compaction"` entries. |
| 57 | +- Marks matching entries as `status: "superseded"` instead of deleting them. |
| 58 | +- Adds `quality_cleanup` and `quality:<reason>` tags to superseded entries. |
| 59 | +- Writes audit logs to: |
| 60 | + `~/.local/share/opencode-working-memory/migration-logs/2026-04-28-quality-cleanup.jsonl` |
| 61 | +- Writes extraction rejection logs to: |
| 62 | + `~/.local/share/opencode-working-memory/extraction-rejections.jsonl` |
| 63 | + |
| 64 | +### Recovery |
| 65 | + |
| 66 | +If a useful memory is superseded, inspect the migration audit log and restore the entry by changing its status back to `"active"` in the workspace's `workspace-memory.json`. |
| 67 | + |
| 68 | +### Workspace Residue Cleanup |
| 69 | + |
| 70 | +If old test/temp workspace stores already exist locally, inspect them first: |
| 71 | + |
| 72 | +```bash |
| 73 | +npm run cleanup:workspaces -- --dry-run |
| 74 | +``` |
| 75 | + |
| 76 | +To move definite temp/test residues into a local quarantine folder instead of deleting them: |
| 77 | + |
| 78 | +```bash |
| 79 | +npm run cleanup:workspaces -- --quarantine |
| 80 | +``` |
| 81 | + |
| 82 | +The cleanup command skips existing workspace roots and unknown missing-root workspaces by default. |
| 83 | + |
| 84 | +### Upgrade Notes |
| 85 | + |
| 86 | +- No configuration changes required. |
| 87 | +- Existing workspace memory files remain compatible. |
| 88 | +- The OpenCode config entry stays the same: |
| 89 | + |
| 90 | +```json |
| 91 | +{ |
| 92 | + "plugin": ["opencode-working-memory"] |
| 93 | +} |
| 94 | +``` |
| 95 | + |
| 96 | +### Validation |
| 97 | + |
| 98 | +- `npm test` |
| 99 | +- `npm run typecheck` |
| 100 | + |
| 101 | +--- |
| 102 | + |
3 | 103 | ## 1.3.2 (2026-04-27) |
4 | 104 |
|
5 | 105 | ### CI Compatibility Patch |
|
0 commit comments