Skip to content

v1.2.3

Choose a tag to compare

@joryirving joryirving released this 10 Jun 19:31
59c7a05

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's findings output and a surviving blocker forces request_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_loop re-plans after seeing each round's results, so the model can chase leads (read the touched file → grep for the callers it found). New input tool_max_rounds (default 3); tool_max_requests becomes 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: auto only): 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 isMinimized state.
  • 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.