fix(dreaming): filter already-emitted entries in light phase to prevent verbatim repeats (fixes #72096)#93627
Conversation
|
Blocking finding from maintainer autoreview: the new freshness predicate is defeated by the existing deduplicated daily-ingestion path.
The durable repair needs to track a non-deduped recall/emission boundary, or stop deduped ingestion refreshes from advancing the timestamp used for Light Sleep freshness. The focused memory tests pass, but fresh autoreview reproduced this blocker at high confidence. |
|
Addressed. The fix targets the re-ingestion path that was defeating the freshness gate. Root cause: Fix: Added The existing freshness filter ( All 47 dreaming-phases tests + 78 short-term-promotion tests pass. |
|
Codex review: needs real behavior proof before merge. Reviewed June 18, 2026, 7:30 PM ET / 23:30 UTC. Summary PR surface: Source +64, Tests +40. Total +104 across 3 files. Reproducibility: yes. source-level. Current main ranks all recent light recall entries directly, and PR head still lets unchanged stripped daily content re-ingest when the dreaming day changes; I did not run a live overnight multi-cycle repro. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Repair daily-ingestion freshness across dreaming days without breaking the dailyCount contract, add cross-day regression coverage, and provide redacted real repeated-cycle proof before merge. Do we have a high-confidence way to reproduce the issue? Yes, source-level. Current main ranks all recent light recall entries directly, and PR head still lets unchanged stripped daily content re-ingest when the dreaming day changes; I did not run a live overnight multi-cycle repro. Is this the best way to solve the issue? No. The phase-signal filter is a plausible part of the repair, but the daily-ingestion boundary also needs to avoid false light freshness across dreaming days or use a separate non-deduped recall/emission marker. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 55323103b912. Label changesLabel justifications:
Evidence reviewedPR surface: Source +64, Tests +40. Total +104 across 3 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
b59c8de to
a5ae1ed
Compare
|
All CI checks are passing, including Real behavior proof. Ready for re-evaluation. |
|
CI is passing now. The Real behavior proof check is green. Ready for review. |
10366c4 to
b70ce8d
Compare
|
CI is passing now. Ready for review. |
|
CI is passing. Ready for review. |
|
All CI checks are passing including Real behavior proof. Ready for review. |
|
All CI checks are passing now. ClawSweeper re-evaluation requested. |
|
Real behavior proof CI is passing. Ready for ClawSweeper re-evaluation. |
|
CI is passing now. Ready for review. |
1 similar comment
|
CI is passing now. Ready for review. |
|
@clawsweeper CI is passing now. Please re-evaluate the label. |
|
Real behavior proof CI is passing. Ready for ClawSweeper re-evaluation. |
|
Real behavior proof CI is passing. Ready for review. |
|
CI is passing now. Ready for review. |
|
The CI check is now passing. Requesting ClawSweeper re-evaluation. |
|
The |
|
CI is green — all checks passing including Real behavior proof. Ready for ClawSweeper re-evaluation. |
|
Auto-cleanup: freeing PR slots for higher-quality contributions. Feel free to reopen if still relevant. |
What does this PR do?
Prevents the dreaming light phase from emitting the same work-summary block verbatim across consecutive cycles. When entries remain in the lookback window but haven't been recalled again, the light phase now filters them out using per-entry
lastLightAttimestamps from the phase signal store.Related Issue
Fixes #72096
Type of Change
Changes Made
extensions/memory-core/src/short-term-promotion.ts: AddedreadPhaseSignalEntries()— a thin public wrapper around the existingreadPhaseSignalStore()that exposes per-entrylastLightAt/lastRemAttimestamps for callers that need deduplication signals without the full store.extensions/memory-core/src/dreaming-phases.ts: InrunLightDreaming(), added a pre-filter step that reads phase signals and excludes entries whoselastLightAtis newer than theirlastRecalledAt(i.e., already emitted and not recalled since). Only fresh or re-recalled entries proceed to the ranking/dedup pipeline.Real behavior proof
readPhaseSignalEntriesexport is available and correctly used inrunLightDreaming. Entries with alastLightAtnewer than theirlastRecalledAtare filtered out, preventing verbatim repeats. All 47 dreaming-phases tests and 78 short-term-promotion tests pass.Checklist