Repository navigation
Hold a task create while a recorded decision may settle it (refs #3784) - #3807
Conversation
Code Review SummaryVerdict: REQUEST CHANGES (one blocker). The design is sound and small: system-side check keyed to a procedure candidate, a held create returned as FindingsCritical Issues
Suggested Improvements
Tests
Nitpicks
|
malibio
left a comment
There was a problem hiding this comment.
Review verdict: REQUEST CHANGES. One blocker (the held create's same-args retry is likely cut off by the per-turn duplicate-call guard); details in the comment above.
Review addressedFixed
Skipped, with reasons
Re-Review DecisionDecision: NO RE-REVIEW NEEDED Rationale: One small, test-covered fix to the single blocker (confirmed by a test that fails without it), plus three low-risk tidy-ups. No new behaviour. |
The Creating a Task procedure's second step asks whether the work was declined before. The locked model skips it, and the decision is in no prompt. When that procedure is a candidate and the model creates a top-level node, the system now searches decisions for the title and hands them back as the tool result; the retry goes through. A turn that ends with the hold unresolved asks the user, naming the decision, as the duplicate-entity backstop does. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
- A held create was registered in the per-turn duplicate-call set before it ran, so the retry the refusal asks for was read as a repeat and ended the loop. The held call's key is now dropped. A loop-level test covers it and fails without the change. - The backstop treats a reply naming any returned decision, by title or id, as the user having been told. - A failed decision search is logged at debug before the create goes ahead. - is_declined_work_hold, beside is_duplicate_entity_refusal. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
0b27109 to
3432424
Compare
Summary
Refs #3784 (one of its five scenarios; the issue stays open).
When Creating a Task is a candidate and the model makes a top-level
create_node, the system searchesdecisionnodes for the title before the write runs and returns what it finds as the tool result. The retry of the same title goes through, so the model keeps the judgement. A turn that ends with the hold unresolved asks the user, naming the decision and offering to leave it or reopen it (declined_work_backstop, the sibling of the duplicate-entity backstop).Why
The procedure's second step is "was it declined before". On E4B the model skips it, the decision is in no prompt, and a forced read the model chose itself searched open tasks instead. Rendering the procedure first and offering it alone were both measured and changed nothing. Findings are on the issue.
Verified
create_node; now no node is created and the user is asked.agent_loopunit tests pass, 5 new.test:changedpasses.Not covered
The other four
eval:tasksscenarios (routing: the lane's procedure, the lookup path dropping it) and the confusion matrix /eval:agent/eval:tasksruns. This change is a create-time guard and moves no retrieval rank.🤖 Generated with Claude Code