Skip to content

Release 2.1.97 (2026-07-01)

Features

  • add human-gated --close to perform the drift closes (#2053) vrg-epic-audit --close now actually closes what the audit finds: each drifted task issue (in its own repo) and each rolled-up epic (in {org}/.github), leaving an explanatory comment on each, then printing a summary of what was closed. Read-only stays the default. --close is a human action: it is refused (exit 1) unless identity_mode resolves to human, checked before any network work, mirroring the vrg-submit-pr boundary — agents can technically close but by convention shouldn't. Adds epic_audit.close_drift and render_closed. Ref vergil-project/vergil-tooling#2041.

  • add vrg-epic-rollup to close a parent epic on task close (#2054) Thin CLI over epics.rollup for the on: issues.closed Action (issue #2042, epic vergil-project/.github#75). Given the just-closed issue as --task, it closes the parent epic when the epic is finite and all child tasks are closed; a no-op otherwise, so it is safe to fire on every issue close. This makes rollup event-driven rather than dependent on vrg-finalize-pr running. The argparse parser makes the tool a covered case in the --help gate automatically.

  • accept Closes as sanctioned PR-body linkage (#2055) Teach the linkage layer and the pr-issue-linkage CI gate to accept Closes as the single canonical auto-close keyword for a task PR (epic vergil-project/.github#75, T2). LINKAGE_RE now matches Ref or the close family (Close/Closes/Closed), so the gate passes a Closes-linked PR and extract_tracking_issue/extract_tracking_ref recognize a task linked by either keyword. AUTOCLOSE_RE narrows to the still-banned Fixes/Resolves. ALLOWED_LINKAGES (the submit-field --linkage choices) deliberately stays Ref-only until T3 adds the Closes-emitting policy; commit-message auto-close banning is a separate regex and is unchanged.