Follow-up from PR #1106 / #1101 code review. MCP ref auto-pinning breaks when responseLevel: digest is used with --settle.
Problem
interactionSettleView (digest level) drops settle.diff.lines and keeps only summary, but mergeSettleIssuedRefPins collects refs exclusively from lines. MCP clients receive settle.refsGeneration but never record pins for added-line refs, so the next @ref command goes out unpinned and stale-ref warnings return.
Snapshot digest already solved this: snapshotView retains a capped refs: [{ ref, label }] array when dropping node payloads (src/daemon/response-views.ts). Settle digest does not mirror that pattern.
Suggested fix
- In
interactionSettleView, when dropping line texts at digest level, add a capped refs array from added diff lines (refs only, like snapshot digest).
- Update
mergeSettleIssuedRefPins / readIssuedRefBodies to read settle.refs (or equivalent) when lines are absent.
- Add test:
MCP merges digest-level settle refs too (analogous to existing MCP merges digest-level snapshot refs too in command-tools.test.ts).
Acceptance
press --settle with responseLevel: digest → subsequent press @<newRef> is auto-pinned with ~s<refsGeneration>.
- Default response level behavior unchanged.
Context
Follow-up from PR #1106 / #1101 code review. MCP ref auto-pinning breaks when
responseLevel: digestis used with--settle.Problem
interactionSettleView(digest level) dropssettle.diff.linesand keeps onlysummary, butmergeSettleIssuedRefPinscollects refs exclusively fromlines. MCP clients receivesettle.refsGenerationbut never record pins for added-line refs, so the next@refcommand goes out unpinned and stale-ref warnings return.Snapshot digest already solved this:
snapshotViewretains a cappedrefs: [{ ref, label }]array when dropping node payloads (src/daemon/response-views.ts). Settle digest does not mirror that pattern.Suggested fix
interactionSettleView, when dropping line texts at digest level, add a cappedrefsarray from added diff lines (refs only, like snapshot digest).mergeSettleIssuedRefPins/readIssuedRefBodiesto readsettle.refs(or equivalent) whenlinesare absent.MCP merges digest-level settle refs too(analogous to existingMCP merges digest-level snapshot refs tooincommand-tools.test.ts).Acceptance
press --settlewithresponseLevel: digest→ subsequentpress @<newRef>is auto-pinned with~s<refsGeneration>.Context
src/daemon/response-views.ts,src/mcp/command-tools.ts