Lessons reach the session that needs them, every kind is a full citizen, and a slow disk no longer takes the instance down #167

Merged
bvandeusen merged 5 commits from dev into main 2026-09-19 12:02:16 -04:00
2 changed files with 23 additions and 0 deletions
Showing only changes of commit 31b478b7ac - Show all commits
+19
View File
@@ -523,6 +523,25 @@ _KIND_SUGGESTION = {
"a work-log, and cancel the other with a pointer. If one CORRECTS the "
"other's conclusions, supersession also works for tasks."
),
"lesson": (
"Read both TRIGGERS before anything else — a lesson is retrieved by "
"the situation it names, so two alike insights under different "
"triggers are two lessons and belong apart. Same trigger, same "
"teaching means one lesson learned twice: keep the clearer one, "
"update_lesson it with the union of both `taught_by` lists and "
"anything the other said that it doesn't, then delete_lesson the "
"other. The sources are the point — a lesson that loses an incident "
"loses its evidence."
),
"process": (
"A process arrives at the agent as a skill, so two alike processes "
"compete for the same moment and whichever wins retrieval is the one "
"that runs — a duplicate here executes the wrong procedure rather "
"than merely cluttering a list. Keep the one actually in use, "
"update_process it with any step the other has, then delete_process "
"the loser. If they are genuinely different procedures that share "
"vocabulary, sharpen the titles instead so the right one wins."
),
}
# kind → the Note-model predicate for BOTH sides of the self-join. Tasks are
+4
View File
@@ -344,6 +344,10 @@ def test_every_kind_has_a_suggestion_and_none_proposes_merging_notes():
for kind in _REPORT_KINDS:
assert _KIND_SUGGESTION.get(kind), f"no suggestion for {kind}"
if kind != "snippet":
# The property, not a spot-check: a sixth kind added to the
# report inherits the bar without anyone editing this test.
assert "merge_snippets" not in _KIND_SUGGESTION[kind]
assert "merge" in _KIND_SUGGESTION["snippet"]
assert "NOT merge" in _KIND_SUGGESTION["note"]
assert "supersedes" in _KIND_SUGGESTION["note"]