Skip to content

feat(memory): read the user's decisions and keep their memory files - #139

Open
xikimay wants to merge 3 commits into
mainfrom
feat/decision-extraction
Open

xikimay wants to merge 3 commits into
mainfrom
feat/decision-extraction

Conversation

@xikimay

@xikimay xikimay commented Oct 6, 2026

Copy link
Copy Markdown
Owner

Why

The user's decisions become Claude Code memories (#137). This adds what reads them out of a turn and keeps them in topic files without ever undoing the user's edits; the keeper that runs it comes next (3b).

How

  • ProjectHistory+Decisions: EXTRACT with topics and the removed decisions, the answer's checks (a REPLACE or DROP touches only a decision the call was shown), the operation log and its replay (edits, removals, merges), the merge over lasting decisions, ordering by date, secrets withheld.
  • ProjectHistory+DecisionFiles: marked lines, the user's changes read back (any change is theirs, removals confirmed), rewrites that touch only Nirux's unchanged lines, new files naming their topic, the index line at the end and its 180-line / 23,000-byte guard.
  • docs/project-memory-tree.md §3.8 and docs/project-memory.md §5 updated to the reviewed design; a test keeps the published prompts equal to the code's.
  • Two adversarial reviews, a premortem, confirmation reviews, and an independent agent review in place of /code-review (delegated by the user), on 3a and 3b together; mutation checks on the fixes; swift test and swift build -c release pass locally.

🤖 Generated with Claude Code

https://claude.ai/code/session_01FvgKNapp4zsnMK1w9gkSiz

The extraction a turn gets (EXTRACT with topics and the removed
decisions), the answer's checks, the operation log and its replay, the
merge over lasting decisions; and the topic files' lines: marks, the
user's changes read back (any change is theirs, removals confirmed),
rewrites that touch only Nirux's unchanged lines, the index line and
its guard. No caller yet: the keeper comes next. The design's section
3.8 follows the reviewed behavior; a test keeps its prompts equal to
the code's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FvgKNapp4zsnMK1w9gkSiz
@xikimay
xikimay force-pushed the feat/decision-extraction branch from dd33b3f to 2241692 Compare October 6, 2026 18:26
xikimay and others added 2 commits October 6, 2026 20:47
Run A recalled 6.5 of the 10 test decisions. EXTRACT now records each
option the user left out and what they turned down as lines of their
own, leaves out a proposal's details the user didn't speak to, and
counts a peer's relay only when it quotes the user or says plainly that
the user decided. A line whose message doesn't name what its decision
names (an issue, a branch, an id, code) is void.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FvgKNapp4zsnMK1w9gkSiz
A line is void only when what its decision names (an issue of two
digits or more, a branch, a file path, an id like B3b) appears in
another user or peer message of the turn and not in its own message
(with its branch and sender), the turn's replies, the proposal it
agrees to or the line it replaces; void lines are logged. Left-out
options count only for choices about what the project does, not offers
of next steps, and only a proposal about the project is turned down.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FvgKNapp4zsnMK1w9gkSiz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant