v1.2.3
Feature-bearing 1.2.x release (1.3.0 is reserved for the native tool-calling work tracked in #197). Everything is backward-compatible: all new inputs default to previous behavior.
Features
- Cumulative incremental verdicts via carried-forward findings (#193, #195): a review that requests changes persists its findings in the metadata marker; the next incremental review must answer each one (
resolved/still_open/not_verifiable_from_delta). Findings not convincingly resolved survive into the new review'sfindingsoutput and a surviving blocker forcesrequest_changes— fixing one of three blockers can no longer rubber-stamp the other two. Fail-closed: unanswered or unverifiable counts as open. The published review lists what the push resolved and what's still open. - Iterated plan→execute tool loop (#192):
tool_mode: plan_execute_loopre-plans after seeing each round's results, so the model can chase leads (read the touched file → grep for the callers it found). New inputtool_max_rounds(default 3);tool_max_requestsbecomes the total budget across rounds; cross-round dedup; results fed back fenced as untrusted data; planning hiccups degrade to "use the evidence so far" — never a failed review. The long-term agentic roadmap (native tool calling, etc.) lives in #197. - Dirty-baseline escalation (
escalate_on_dirty_baseline, default true,review_routing_mode: autoonly): incremental reviews against a baseline with known issues run on the smart model — resolution judgment is exactly what it's for.
Fixes
- Superseded reviews keep their content (#196): cleanup now only dismisses the stale verdict and minimizes (hides) the review — no more body rewrite to an "Outdated" stub, so expanding a hidden review still shows what it said. Already-processed detection reads the review's real
isMinimizedstate. - Incremental reviews are titled
# AI Automated Review (incremental)instead of a suffix buried on the analysis-engine line (#193). - The blocked-approval explanation now states the actual reason (dirty baseline vs
allow_approve/fork policy).
New inputs
tool_max_rounds, escalate_on_dirty_baseline. New finding fields: id, resolution, carried_over; new marker field: open_findings; new verdict_source value: carry_forward.