Skip to content

Release 2.1.106 (2026-07-03)

Features

  • enforce single-task linkage at PR-body construction (#2118)
  • feat(linkage): add find_linkage_keyword free-text guard helper

Shared guard for the free-text PR fields: matches any Ref/Close/Fix/Resolve + issue ref mid-line, ignores bare #N. freetext_linkage_error redirects the reasoning to a comment on the primary issue rather than stripping it. Ref #2117

  • feat(pr-workflow): reject linkage keywords in report-ready notes/summary

Agent-facing construction point: report-ready now raises with an actionable, lossless-redirect message when --notes/--summary carry a linkage keyword, instead of letting it duplicate the builder's linkage line and fail in CI later. Ref #2117

  • feat(pr-body): reject linkage keywords in build_pr_body notes/summary

Chokepoint guard: every PR body flows through build_pr_body (submit CLI mode, submit-from-state, pr-fix-body), so guarding here closes the direct-CLI path that never touches report-ready. With free text keyword-free, the builder's Issue Linkage line is the body's only keyworded linkage. Also reformats test_cli_e2e.py per ruff format (surfaced by the final vrg-validate pass). Ref #2117