Skip to content

Commit 5fa2040

Browse files
committed
fix: mark invalid memory dates as stale evidence
1 parent 924a8fc commit 5fa2040

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

src/memory/store.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function normalizeMemory(raw: unknown): Memory | null {
4141

4242
if (!id || !category || !memory || !reason || !date) return null;
4343

44-
const source = m.source === 'git' ? 'git' as const : undefined;
44+
const source = m.source === 'git' ? ('git' as const) : undefined;
4545
return { id, type, category, memory, reason, date, ...(source && { source }) };
4646
}
4747

@@ -135,14 +135,17 @@ export interface MemoryWithConfidence extends Memory {
135135
* Compute confidence decay: confidence = 2^(-age_days / half_life)
136136
* Conventions never decay. Memories below 0.3 are flagged stale.
137137
*/
138-
export function computeConfidence(memory: Memory, now?: Date): { effectiveConfidence: number; stale: boolean } {
138+
export function computeConfidence(
139+
memory: Memory,
140+
now?: Date
141+
): { effectiveConfidence: number; stale: boolean } {
139142
const halfLife = HALF_LIFE_DAYS[memory.type] ?? 180;
140143
if (!Number.isFinite(halfLife)) {
141144
return { effectiveConfidence: 1.0, stale: false };
142145
}
143146
const memDate = Date.parse(memory.date);
144147
if (!Number.isFinite(memDate)) {
145-
return { effectiveConfidence: 0.5, stale: false };
148+
return { effectiveConfidence: 0, stale: true };
146149
}
147150
const ageDays = ((now ?? new Date()).getTime() - memDate) / (1000 * 60 * 60 * 24);
148151
const confidence = Math.pow(2, -ageDays / halfLife);

tests/confidence-decay.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ describe('Memory confidence decay', () => {
7171
it('handles invalid date gracefully', () => {
7272
const memory = makeMemory({ type: 'decision', date: 'not-a-date' });
7373
const result = computeConfidence(memory, now);
74-
expect(result.effectiveConfidence).toBe(0.5);
75-
expect(result.stale).toBe(false);
74+
expect(result.effectiveConfidence).toBe(0);
75+
expect(result.stale).toBe(true);
7676
});
7777

7878
it('withConfidence enriches array of memories', () => {

0 commit comments

Comments
 (0)