Example 02-memory-reconciliation has three cases: permanent-correction, temporary-exception, and unclear-referent. All of them either replace, scope, or ignore a preference. None of them retracts one.
Add a case where the incoming message withdraws the stored preference without giving a new one, for example:
Stored: "I prefer TypeScript for personal projects."
Incoming: "Forget what I said about TypeScript. I don't have a language preference any more."
The interesting question: the relationship choice has four options (correction, exception, duplicate, unrelated). A retraction is arguably a correction, but the current policy at example.mjs#L15 maps correction to a replacement action. Decide whether the intended outcome is "propose replacement with an empty preference", a new action such as propose-removal, or something else, and write the note explaining why. Changing the policy is fine if the case needs it, but keep the existing three cases passing.
Done when
- New entry in
cases.mjs with id, note, state, an authored fixture (mark the probabilities as illustrative, like the existing ones), and expected.
npm run check passes and the regenerated example README lists the new case.
How to work on this
- Fork, then
git clone and run npm run check (Node 20.17+, no install step, no API key needed).
- Make the change, run
npm run check and npm run docs (CI fails if a generated example README is stale).
- Open one focused PR. Say what you verified, and mention any substantial AI assistance (see CONTRIBUTING.md).
Comment here if you want to take it, and ask anything that is unclear.
Example 02-memory-reconciliation has three cases:
permanent-correction,temporary-exception, andunclear-referent. All of them either replace, scope, or ignore a preference. None of them retracts one.Add a case where the incoming message withdraws the stored preference without giving a new one, for example:
The interesting question: the
relationshipchoice has four options (correction,exception,duplicate,unrelated). A retraction is arguably a correction, but the current policy atexample.mjs#L15mapscorrectionto a replacement action. Decide whether the intended outcome is "propose replacement with an empty preference", a new action such aspropose-removal, or something else, and write thenoteexplaining why. Changing the policy is fine if the case needs it, but keep the existing three cases passing.Done when
cases.mjswithid,note,state, an authoredfixture(mark the probabilities as illustrative, like the existing ones), andexpected.npm run checkpasses and the regenerated example README lists the new case.How to work on this
git cloneand runnpm run check(Node 20.17+, no install step, no API key needed).npm run checkandnpm run docs(CI fails if a generated example README is stale).Comment here if you want to take it, and ask anything that is unclear.