Skip to content

Commit 0434850

Browse files
committed
Tighten supersession preview preference topics
1 parent 1f89f22 commit 0434850

6 files changed

Lines changed: 317 additions & 10 deletions

File tree

.dev/roadmap/memory-consolidation/current-progress-and-next-steps.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,28 @@
11
# agent-memory memory-consolidation current progress and next steps
22

33
Status: AI-authored draft. Not yet human-approved.
4-
Last updated: 2026-05-28 10:18 KST
4+
Last updated: 2026-05-28 10:43 KST
55

66

77

88

9+
## Current checkpoint: topic-aware supersession preview fixed; live supersession lane now has no exact candidate
10+
11+
- Continued from the fresh live read-only automation-policy checkpoint using the real live DB `/Users/reddit/.agent-memory/memory.db`; no mock DB or smoke DB was used for the live decision.
12+
- Primary run directory: `/tmp/agent-memory-next-candidate-review-20260528T103752Z`.
13+
- Re-ran the concrete next-lane preview artifacts as review material only: reinforcement refinement, decay collapse, and supersession.
14+
- Reinforcement refinement remained review-only with 7 candidates: high-tier `procedure:1`, `fact:1`, `episode:1`, `fact:6`, `fact:4`, `fact:8`; low-tier `fact:5`. No mutation/apply path was supported by the preview.
15+
- Decay collapse remained review-only with 1 candidate, `fact:5`, whose resolution hint is `collect_more_activation_evidence_before_decay_action`; this does not support collapse/deprecation/delete.
16+
- The live supersession preview originally reported one high-tier `same_claim_slot_conflict` between `fact:5` and `fact:9`. Real DB review/history/graph evidence showed they are independent user preferences under the broad `(user, prefers, project:agent-memory)` slot, not a replacement/supersession pair.
17+
- Code change: `dogfood supersession-preview` now groups `user prefers ...` memories by the existing remember-preference topic key before treating them as same-slot supersession candidates, and its review command templates now use valid `review explain` / `review history` / `review replacements` commands. Independent preference topics no longer produce false positive supersession candidates; same-topic preference contradictions and non-preference same-slot conflicts remain reviewable.
18+
- Post-fix live artifact: `/tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview-topic-aware.json` reports `candidate_count=0`, `read_only=true`, `mutated=false`, and `default_retrieval_unchanged=true`; quality gate is red only on `no_supersession_candidates_ready`.
19+
- Focused verification: `uv run pytest tests/test_cli.py -q -k 'supersession_preview'` passed (`3 passed, 254 deselected`).
20+
- No apply, fact/procedure/episode promotion, ranking mutation, core memory-status write, relation write, collapse/delete, telemetry reset, or background/default automation was executed.
21+
22+
Next step: do not open a supersession/replacement corridor from `fact:5`/`fact:9`. Continue with real live read-only evidence; reinforcement refinement still needs a separate guarded policy before any mutation, and `fact:5` decay remains collect-more-evidence only.
23+
24+
Reference: `.dev/roadmap/memory-consolidation/references/post-v0.1.162-live-topic-aware-supersession-preview.md`
25+
926
## Current checkpoint: fresh live read-only automation-policy checks green; lifecycle/apply lanes still stopped
1027

1128
- Continued from the generated trace-candidate cleanup checkpoint using the real live DB `/Users/reddit/.agent-memory/memory.db`; no mock DB or smoke DB was used.
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Post-v0.1.162 live topic-aware supersession preview
2+
3+
Status: AI-authored draft. Not yet human-approved.
4+
Last updated: 2026-05-28 10:43 KST
5+
6+
## Scope
7+
8+
Continued from the fresh live read-only automation-policy checkpoint and inspected the concrete next-lane preview candidates against the real live DB `/Users/reddit/.agent-memory/memory.db`.
9+
10+
Primary run directory: `/tmp/agent-memory-next-candidate-review-20260528T103752Z`
11+
12+
No mock DB or smoke DB was used for the live decision. Focused tests were used only because the supersession preview code changed.
13+
14+
## Live evidence inspected
15+
16+
Re-ran the documented review-only next-lane previews:
17+
18+
- `/tmp/agent-memory-next-candidate-review-20260528T103752Z/reinforcement-refinement-preview.json`
19+
- `kind=dogfood_reinforcement_refinement_preview`
20+
- `read_only=true`, `mutated=false`, `default_retrieval_unchanged=true`
21+
- `candidate_count=7`
22+
- high-tier reinforcement review candidates: `procedure:1`, `fact:1`, `episode:1`, `fact:6`, `fact:4`, `fact:8`
23+
- `fact:5` remained low-tier with activation count `1`
24+
- `/tmp/agent-memory-next-candidate-review-20260528T103752Z/decay-collapse-preview.json`
25+
- `kind=dogfood_decay_collapse_preview`
26+
- `read_only=true`, `mutated=false`, `default_retrieval_unchanged=true`
27+
- `candidate_count=1`
28+
- candidate `fact:5`, `resolution_hint=collect_more_activation_evidence_before_decay_action`
29+
- ref-safe evidence says the memory exists, is approved/default-visible elsewhere, has scope and one relation; no raw content included
30+
- `/tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview.json`
31+
- pre-fix preview returned one high-tier `same_claim_slot_conflict`: `fact:5` vs `fact:9`
32+
- live review artifacts showed this was not a semantic supersession candidate; both facts are independent user preferences under the broad `(user, prefers, project:agent-memory)` slot:
33+
- `fact:5`: real downloaded-install QA for agent-memory milestone releases
34+
- `fact:9`: autonomous agent-memory progress when next steps are clear
35+
- both have independent auto-approval graph evidence and approval history
36+
37+
## Code change
38+
39+
The supersession preview now reuses the existing remember-preference topic key for `subject_ref=user` and `predicate=prefers` before treating preference memories as same-slot supersession candidates.
40+
41+
Effect:
42+
43+
- independent preference topics no longer appear as supersession/replacement candidates just because they share `(user, prefers, scope)`
44+
- same-topic preference contradictions still appear for human review
45+
- non-preference facts keep the previous subject/predicate/scope behavior
46+
- preview remains read-only and does not write review rows, relations, status transitions, ranking data, or core memories
47+
- ref-safe review command templates now use existing CLI verbs (`review explain`, `review history`, and `review replacements`) instead of the stale invalid `review fact` shape
48+
49+
Post-fix live artifact:
50+
51+
- `/tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview-topic-aware.json`
52+
- `read_only=true`
53+
- `mutated=false`
54+
- `default_retrieval_unchanged=true`
55+
- `candidate_count=0`
56+
- quality gate red only on `no_supersession_candidates_ready`
57+
58+
This resolves the only live supersession review candidate as a topic-grouping false positive. No supersession/replacement corridor should be opened from it.
59+
60+
## Verification
61+
62+
Focused code tests:
63+
64+
```text
65+
uv run pytest tests/test_cli.py -q -k 'supersession_preview'
66+
3 passed, 254 deselected
67+
```
68+
69+
Live real-DB verification:
70+
71+
```text
72+
uv run agent-memory dogfood supersession-preview /Users/reddit/.agent-memory/memory.db --limit 200 --top 20 --output /tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview-topic-aware.json
73+
```
74+
75+
Result: zero supersession candidates after topic-aware grouping, with no mutation.
76+
77+
## Current stop gates
78+
79+
- Do not create a supersession/replacement relation for `fact:5` and `fact:9`; they are independent preference topics.
80+
- Do not collapse/deprecate/delete `fact:5`; decay preview still recommends collecting more activation evidence, not mutation.
81+
- Do not persist duplicate lifecycle reinforcement candidates; refresh preview previously had no new unapplied targets.
82+
- Keep broad/background/default mutation, ordinary conversation auto-approval, default-ranking mutation, telemetry reset, core memory-status writes, retrieval-ranking writes, and unreviewed promotion blocked.
83+
84+
## Next safe action
85+
86+
Continue with real live read-only evidence. The remaining concrete review material is:
87+
88+
1. reinforcement refinement candidates, especially high-activation approved memories, but mutation still needs a separate guarded policy/corridor;
89+
2. `fact:5` decay monitoring, where current evidence supports more activation collection rather than collapse/deprecation;
90+
3. ordinary-turn auto-approval readiness, which remains blocked until explicit remember-intent evidence exists.

.dev/status/current-handoff.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,28 @@
11
# agent-memory current handoff
22

33
Status: AI-authored draft. Not yet human-approved.
4-
Last updated: 2026-05-28 10:18 KST
4+
Last updated: 2026-05-28 10:43 KST
55

66

77

88

9+
## Current checkpoint: topic-aware supersession preview fixed; live supersession lane now has no exact candidate
10+
11+
- Continued from the fresh live read-only automation-policy checkpoint using the real live DB `/Users/reddit/.agent-memory/memory.db`; no mock DB or smoke DB was used for the live decision.
12+
- Primary run directory: `/tmp/agent-memory-next-candidate-review-20260528T103752Z`.
13+
- Re-ran the concrete next-lane preview artifacts as review material only: reinforcement refinement, decay collapse, and supersession.
14+
- Reinforcement refinement remained review-only with 7 candidates: high-tier `procedure:1`, `fact:1`, `episode:1`, `fact:6`, `fact:4`, `fact:8`; low-tier `fact:5`. No mutation/apply path was supported by the preview.
15+
- Decay collapse remained review-only with 1 candidate, `fact:5`, whose resolution hint is `collect_more_activation_evidence_before_decay_action`; this does not support collapse/deprecation/delete.
16+
- The live supersession preview originally reported one high-tier `same_claim_slot_conflict` between `fact:5` and `fact:9`. Real DB review/history/graph evidence showed they are independent user preferences under the broad `(user, prefers, project:agent-memory)` slot, not a replacement/supersession pair.
17+
- Code change: `dogfood supersession-preview` now groups `user prefers ...` memories by the existing remember-preference topic key before treating them as same-slot supersession candidates, and its review command templates now use valid `review explain` / `review history` / `review replacements` commands. Independent preference topics no longer produce false positive supersession candidates; same-topic preference contradictions and non-preference same-slot conflicts remain reviewable.
18+
- Post-fix live artifact: `/tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview-topic-aware.json` reports `candidate_count=0`, `read_only=true`, `mutated=false`, and `default_retrieval_unchanged=true`; quality gate is red only on `no_supersession_candidates_ready`.
19+
- Focused verification: `uv run pytest tests/test_cli.py -q -k 'supersession_preview'` passed (`3 passed, 254 deselected`).
20+
- No apply, fact/procedure/episode promotion, ranking mutation, core memory-status write, relation write, collapse/delete, telemetry reset, or background/default automation was executed.
21+
22+
Next step: do not open a supersession/replacement corridor from `fact:5`/`fact:9`. Continue with real live read-only evidence; reinforcement refinement still needs a separate guarded policy before any mutation, and `fact:5` decay remains collect-more-evidence only.
23+
24+
Reference: `.dev/roadmap/memory-consolidation/references/post-v0.1.162-live-topic-aware-supersession-preview.md`
25+
926
## Current checkpoint: fresh live read-only automation-policy checks green; lifecycle/apply lanes still stopped
1027

1128
- Continued from the generated trace-candidate cleanup checkpoint using the real live DB `/Users/reddit/.agent-memory/memory.db`; no mock DB or smoke DB was used.

.dev/status/next-agent-memory-action.md

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,35 @@
11
# agent-memory next action
22

33
Status: AI-authored draft. Not yet human-approved.
4-
Last updated: 2026-05-28 10:18 KST
4+
Last updated: 2026-05-28 10:43 KST
55

66

77

88

9+
## Current checkpoint: topic-aware supersession preview fixed; next lanes remain bounded/read-only
10+
11+
Completed the documented candidate inspection step against the real live DB.
12+
13+
Completed work:
14+
15+
- Run directory: `/tmp/agent-memory-next-candidate-review-20260528T103752Z`.
16+
- Live next-lane previews:
17+
- reinforcement refinement: 7 review-only candidates; no preview-supported mutation path.
18+
- decay collapse: 1 review-only candidate, `fact:5`, with `collect_more_activation_evidence_before_decay_action`.
19+
- supersession: initial one-candidate result was a false positive caused by grouping independent `user prefers ...` facts only by broad claim slot.
20+
- Implemented topic-aware grouping in `dogfood supersession-preview` for `user/prefers` facts using the existing remember-preference topic key, and corrected its review command templates to existing `review explain` / `review history` / `review replacements` commands.
21+
- Post-fix live supersession artifact: `/tmp/agent-memory-next-candidate-review-20260528T103752Z/supersession-preview-topic-aware.json`, `candidate_count=0`, `read_only=true`, `mutated=false`, `default_retrieval_unchanged=true`.
22+
- Focused verification: `uv run pytest tests/test_cli.py -q -k 'supersession_preview'` passed (`3 passed, 254 deselected`).
23+
24+
Next safe action:
25+
26+
1. Do not create supersession/replacement edges for `fact:5` and `fact:9`; they are independent preference topics.
27+
2. Do not collapse/deprecate/delete `fact:5`; decay review still says collect more activation evidence.
28+
3. Continue from real live read-only evidence and only open a new bounded corridor if exact human-review evidence supports a specific candidate.
29+
4. Keep broad/background/default mutation, ordinary conversation auto-approval, default-ranking mutation, collapse/delete, telemetry reset, core memory-status writes, retrieval-ranking writes, and unreviewed promotion blocked.
30+
31+
Reference: `.dev/roadmap/memory-consolidation/references/post-v0.1.162-live-topic-aware-supersession-preview.md`
32+
933
## Current checkpoint: fresh read-only automation-policy pass complete; next lanes are review-only
1034

1135
Completed the next documented fresh live read-only pass against the real live DB.

src/agent_memory/api/cli.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2862,14 +2862,21 @@ def _supersession_review_recommendation(review_score: dict[str, Any]) -> dict[st
28622862
}
28632863

28642864

2865+
def _supersession_group_key(fact) -> tuple[str, str, str, str | None]:
2866+
topic_key: str | None = None
2867+
if fact.subject_ref == "user" and fact.predicate == "prefers":
2868+
topic_key = _remember_preference_topic_key(fact.object_ref_or_value)
2869+
return (fact.subject_ref, fact.predicate, fact.scope, topic_key)
2870+
2871+
28652872
def _same_claim_slot_supersession_candidates(db_path: Path, *, limit: int, top: int) -> list[dict[str, Any]]:
28662873
facts = _list_supersession_preview_facts(db_path, limit=limit)
2867-
grouped: dict[tuple[str, str, str], list[Any]] = defaultdict(list)
2874+
grouped: dict[tuple[str, str, str, str | None], list[Any]] = defaultdict(list)
28682875
for fact in facts:
2869-
grouped[(fact.subject_ref, fact.predicate, fact.scope)].append(fact)
2876+
grouped[_supersession_group_key(fact)].append(fact)
28702877

28712878
candidates: list[dict[str, Any]] = []
2872-
for (subject_ref, predicate, scope), slot_facts in grouped.items():
2879+
for (subject_ref, predicate, scope, topic_key), slot_facts in grouped.items():
28732880
object_values = {fact.object_ref_or_value for fact in slot_facts}
28742881
if len(slot_facts) < 2 or len(object_values) < 2:
28752882
continue
@@ -2889,6 +2896,7 @@ def _same_claim_slot_supersession_candidates(db_path: Path, *, limit: int, top:
28892896
"predicate": predicate,
28902897
"scope": scope,
28912898
"fact_count": len(slot_facts),
2899+
"preference_topic_key": topic_key,
28922900
},
28932901
"older_fact_ref": _fact_review_ref(older_fact.id),
28942902
"newer_fact_ref": _fact_review_ref(newer_fact.id),
@@ -2912,8 +2920,9 @@ def _same_claim_slot_supersession_candidates(db_path: Path, *, limit: int, top:
29122920
"review_score": review_score,
29132921
"review_recommendation": _supersession_review_recommendation(review_score),
29142922
"review_commands": {
2915-
"review_older": f"agent-memory review fact {db_path} {older_fact.id}",
2916-
"review_newer": f"agent-memory review fact {db_path} {newer_fact.id}",
2923+
"review_older": f"agent-memory review explain fact {db_path} {older_fact.id}",
2924+
"review_newer": f"agent-memory review explain fact {db_path} {newer_fact.id}",
2925+
"review_history_older": f"agent-memory review history fact {db_path} {older_fact.id}",
29172926
"review_replacements_older": f"agent-memory review replacements fact {db_path} {older_fact.id}",
29182927
"future_guarded_apply": "not_supported_by_preview",
29192928
},

0 commit comments

Comments
 (0)