Skip to content

fix(rendering): slice 18 — committed tool-ownership gap (corpus new-bug ×3)#449

Merged
Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
fix/rendering-committed-tool-ownership
Jul 7, 2026
Merged

fix(rendering): slice 18 — committed tool-ownership gap (corpus new-bug ×3)#449
Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
fix/rendering-committed-tool-ownership

Conversation

@Juliusolsson05

Copy link
Copy Markdown
Owner

Fixes the corpus's biggest confirmed defect: collectCommittedCandidates never mined message.content for tool_use/tool_result blocks, so committed tool ownership sets were always empty for claude — a fully-committed but still-semanticCurrent turn kept its finalized tool blocks selected, painting duplicate tool cards (including the duplicated-AskUserQuestion capture). Confirmed independently by both triage passes across 4 fixtures.

Fix shape: rows stay entry-grain (the view bridge maps candidate → entry item 1:1; block-grain committed candidates would paint the entry once per block); ownership evidence goes block-grain via new plural ownedToolUseIds / ownedToolResultIds fields mined at collection time and unioned into the ownership sets.

Corpus effect (re-blessed under the stability model):

  • The three tool-ownership new-bug divergences are gone — fixtures 4177cefb, 14-25-07-a8ad1ebb, fc397785 now fully clean.
  • Three duplicate-turn units legacy painted on top of their committed twins disappeared. Audited block-by-block before blessing: empty thinking + committed-text-owned text + now-owned tool_use — the duplicate text+tool-card bug those bundles were filed about. Verdicted legacy-bug.
  • Corpus new-bug count: 4 → 1 (remaining: the dangling-tool-chip case, next slice).

131 pipeline tests; tsc gate (node + web) clean.

🤖 Generated with Claude Code

…ug x3)

The corpus's biggest confirmed defect: collectCommittedCandidates never
mined message.content for tool_use/tool_result blocks, so
buildCommittedOwnership().toolUseIds/toolResultIds were ALWAYS empty for
claude and a fully-committed but still-semanticCurrent turn kept its
finalized tool blocks selected - duplicate tool cards, including the
duplicated AskUserQuestion capture (whole-turn suppression is history-
only by design, so it never covered this).

Fix shape: rows stay ENTRY-grain (the view bridge maps candidate to
entry item 1:1 - block-grain committed candidates would paint the entry
once per block); ownership evidence goes BLOCK-grain via new plural
fields ownedToolUseIds/ownedToolResultIds mined at collection time,
unioned into the ownership sets.

Corpus effect (re-blessed): the three tool-ownership new-bug divergences
are GONE (fixtures 4177cefb, 14-25-07 a8ad1ebb, fc397785 now fully
clean), and three duplicate-turn units legacy painted on top of their
committed twins disappeared - audited block-by-block: empty thinking +
committed-text-owned text + now-owned tool_use, i.e. the duplicate
text+tool-card bug those bundles complain about. Verdicted legacy-bug.

Corpus new-bug count: 4 -> 1 (remaining: dangling tool chip, next
slice). 131 pipeline tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Juliusolsson05 Juliusolsson05 merged commit 7a6d051 into integration/rendering-pipeline Jul 7, 2026
@Juliusolsson05 Juliusolsson05 deleted the fix/rendering-committed-tool-ownership branch July 7, 2026 21:51
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