SLM-418: add pronoun-focus-followup replay preference pattern (DSH5-10) - #1119
Conversation
Fourth slice of SLM-418's replay-grounded preference extraction. Adds extract_merge_preference_row, a standalone extraction path (a merge attempt is never a recorded ConversationTraceV1 turn, so this is not a trace-turn scan like extract_replay_preference_rows): one MERGE_SUCCESS row per successful merge_conversation_branches attempt, grounded at the left branch tip with merge:<sorted-tip-pair> offered alongside checkout/undo in the legal set, and replaying to the real BranchMergeContinuationV1 state. Merge conflict is intentionally not modeled as a row: a conflicting merge has no successor state to replay to and no recorded "chosen instead" action, so fabricating one would violate the pattern's own exact-context-replay requirement. This is honored by construction -- merge:<pair> is only ever offered as a legal candidate once merge_conversation_branches has already confirmed success -- and proven by test_merge_conflict_never_yields_a_preference_row. Brings pattern coverage to 6 of 7; only pronoun/focus follow-ups remain, as does all SFT/preference training and held-out measurement. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LrpUNRDWqyatkAec3MzxLe
Fifth slice of SLM-418's replay-grounded preference extraction (DSH5-10): completes coverage to 7 of 7 named patterns by adding pronoun_focus_followup, a new branch inside extract_replay_preference_rows's existing turn-pair scan for a second consecutive AST_EDIT turn. Focus is never a transcript pronoun or semantic descriptor -- it is _touched_refs, the exact OperatorRef values the immediately preceding AST_EDIT turn's own verified OperatorApplicationV1.arguments bound. A pair is classified pronoun_focus_followup only when that focus set is non-empty, the following edit's own bound arguments intersect it, and the exact legal set at the shared decision state contains a sibling: another legal action for the same operator whose bound refs do not overlap the focus set (a genuinely available, equally legal switch the user did not take). Switching to a different, legal, explicit reference is honestly left unrowed rather than asserted a correction. Stacked on #1118 (merge-success, 6 of 7). Corrects the hardcoded evidence strings in advanced_operator_disposition.py accordingly. No training or held-out evaluation is added -- this stays wiring evidence only, the same honesty class as the prior four slices (#1107, #1112, #1115, #1118). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GyJd3opkGqa6dwne9dXsVT
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 42 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Fifth slice of SLM-418's replay-grounded preference extraction (DSH5-10): using undo/redo/fork/checkout/merge/pronoun-focus history as a preference signal for ambiguous follow-up instructions.
Stacked on #1118 (merge-success, 6 of 7) — this PR's base branch is
claude/great-dirac-v82ph9, so it should merge after #1118 lands (or be retargeted tomainat that point).pronoun_focus_followup, the last of the issue's seven named patterns, as a new branch insideextract_replay_preference_rows's existing turn-pair scan loop (a second consecutiveAST_EDITturn) — unlike merge-success, this reuses the existing scan rather than needing a standalone extraction function._touched_refs, the exactOperatorRefvalues the immediately precedingAST_EDITturn's own verifiedOperatorApplicationV1.argumentsbound. A pair is classifiedpronoun_focus_followuponly when:advanced_operator_disposition.pyaccordingly.No training or held-out evaluation is added — this stays
wiringevidence only, the same honesty class as the prior four slices (#1107, #1112, #1115, #1118). Only the issue's own SFT/preference-training, four-baseline comparison, held-out benefit measurement, and turn-depth/context-view ablations remain, as documented indocs/design/dsh5-10-replay-preference-rows.md.Test plan
NODE_OPTIONS= pytest -q tests/test_dsl/test_replay_preference.py tests/test_dsl/test_operator_merge.py tests/test_dsl/test_operator_conversation.py tests/test_evals/test_advanced_operator_disposition.py tests/test_scripts/test_validate_advanced_operator_disposition.py— 61/61 pass (fresh.venv, Python 3.12,pip install -e ".[dev,grammar]", plusNODE_OPTIONS= npm ciinsrc/apps/openui_bridgefor the schema-oracle gates)pytest tests/test_dsl/test_replay_preference.pyvia the repo's pre-commit hook — 17/17 passruff check(via pre-commit hook) — cleanpython -m scripts.verify_version_stamps --check --base origin/claude/great-dirac-v82ph9— ok (dsl.operators.replay_preferencebumped v5→v6)python -m scripts.repo_policy— okpython -m scripts.verify_decode_invariants— cleanGenerated by Claude Code