You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
v0.3.0 session_journal is a single bucket — all auto-harvested entries with score>=0 flow into one queue, and ccmem promote / ccmem reject is the only outbound. Cross-provider review (Codex, 2026-05-08) observes that journal entries serve mixed semantic purposes that should not compete on the same promotion path.
Finding
5/7 dogfood capture (16 entries, 24h) shows at least 5 distinct semantic kinds in one bucket:
journal id
content kind
should route to
18
smoke-test plan with priority list
resume-checkpoint (next session todo)
19
next-session reminder
resume-checkpoint
10
trial schedule + commits-to-push
resume-checkpoint
9
open question soliciting user decision
open-question (likely discard)
21
technical knowledge wrapped in summary
memory-candidate (after extract)
6/8 (rejected)
wrap-up process reports
process-report (discard / hard-floor)
memories is intended as durable lasting facts for recall_query retrieval. Routing all kinds through one promote path means:
Resume-checkpoints (id=10/18/19) pollute memories if promoted, vanish if rejected — but their natural home is project resume / next-session todo, not memories
Open-questions (id=9) are transient by definition — promoting them is misuse, but rejecting loses the context of "user asked about X"
ccFamily division (cc trilogy planning) suggests resume-checkpoints belong to a different surface than memories — this issue is where that division lands at the data layer
Proposed fix
Add entry_type column to session_journal (schema v24):
```sql
entry_type TEXT NOT NULL DEFAULT 'unclassified'
CHECK (entry_type IN ('memory-candidate', 'resume-checkpoint', 'open-question', 'process-report', 'unclassified'))
```
Classification logic in outcome-scorer.ts (extending epistemic-status work in companion scorer issue):
open-question: ends with question marks targeting user, vocab signals (要不要 / shall we / which option)
resume-checkpoint: contains schedule markers (next session / 下次 / 5月X日 / commit待push) AND last-substantial-assistant position
memory-candidate: real outcome vocab (impl-facts / cause-effect anchors), not session-ending wrap-up
unclassified: doesn't match any → still surfaces in pending but flagged
ccmem pending and ccmem promote filter by entry_type='memory-candidate' by default; explicit --all or --type X flag exposes other types for triage.
resume-checkpoint entries: out of scope to route in this issue — flag the type at minimum, then a follow-up issue can decide outbound (project resume generator? cc trilogy ccReason hand-off?).
Acceptance criteria
Schema v24 adds session_journal.entry_type column with CHECK constraint
Classification ambiguity: real entries blend kinds (id=21 is memory-candidate-after-extract, currently looks like wrap-up). Initial classifier will mis-categorize; observation period (corpus collection) needed to tune.
Resume-checkpoint outbound is unsolved — flagging without routing leaves a half-implemented surface. Acceptance: this issue lands the type; a follow-up issue drives outbound.
Codex review (2026-05-08): journal entries currently mix lasting fact / resume checkpoint / open question / plan / tool lesson — all competing on same promotion path. Plans and session markers are more like checkpoints than memories — recommends routing layer to separate semantic kinds before they enter the same review queue.
Context
v0.3.0
session_journalis a single bucket — all auto-harvested entries with score>=0 flow into one queue, andccmem promote/ccmem rejectis the only outbound. Cross-provider review (Codex, 2026-05-08) observes that journal entries serve mixed semantic purposes that should not compete on the same promotion path.Finding
5/7 dogfood capture (16 entries, 24h) shows at least 5 distinct semantic kinds in one bucket:
memoriesis intended as durable lasting facts forrecall_queryretrieval. Routing all kinds through one promote path means:Why this matters
journalPendingCountaggregates 5+ kinds — the metric is structurally noisyProposed fix
Add
entry_typecolumn tosession_journal(schema v24):```sql
entry_type TEXT NOT NULL DEFAULT 'unclassified'
CHECK (entry_type IN ('memory-candidate', 'resume-checkpoint', 'open-question', 'process-report', 'unclassified'))
```
Classification logic in
outcome-scorer.ts(extending epistemic-status work in companion scorer issue):process-report: matchesisProcessReport()(existing Wrap-up flow leakage: Chinese verb form '存檔完成' bypasses PROCESS_REPORT_RES anchor #27 hard floor) → still hard-floor blocked, never reaches journalopen-question: ends with question marks targeting user, vocab signals (要不要 / shall we / which option)resume-checkpoint: contains schedule markers (next session / 下次 / 5月X日 / commit待push) AND last-substantial-assistant positionmemory-candidate: real outcome vocab (impl-facts / cause-effect anchors), not session-ending wrap-upunclassified: doesn't match any → still surfaces in pending but flaggedccmem pendingandccmem promotefilter byentry_type='memory-candidate'by default; explicit--allor--type Xflag exposes other types for triage.resume-checkpointentries: out of scope to route in this issue — flag the type at minimum, then a follow-up issue can decide outbound (project resume generator? cc trilogy ccReason hand-off?).Acceptance criteria
session_journal.entry_typecolumn with CHECK constraintoutcome-scorer.tsreturnsentry_typealongside score / reasons (signature extended)ccmem pendingdefaults to memory-candidate filter;--type Xswitches;--allshows everythingentry_type='unclassified'(handled by DEFAULT)docs/architecture.mdRisk
Related
ccmem pendingUX; entry_type filter integrates hereCross-provider review trail
Codex review (2026-05-08): journal entries currently mix lasting fact / resume checkpoint / open question / plan / tool lesson — all competing on same promotion path. Plans and session markers are more like checkpoints than memories — recommends routing layer to separate semantic kinds before they enter the same review queue.