Release 2.1.99 (2026-07-01)¶
Bug fixes¶
-
reject an epic issue in report-ready (guard parity with vrg-submit-pr) (#2071) vrg-pr-workflow report-ready now refuses --issue pointing at an epic, so the error surfaces where the value is entered instead of only later at vrg-submit-pr. Factors the epic detection into a shared epics.is_epic_linkage() (single source of truth) that vrg-submit-pr now also uses. The report-ready guard is best-effort: if epic-ness can't be determined (no remote / no gh auth, e.g. an offline run) it defers to vrg-submit-pr's authoritative check rather than blocking. Ref vergil-project/vergil-tooling#2026.
-
restore epic and triage issue creation (regression from #2017) (#2075)
2017 denied all raw gh issue create and routed creation through vrg-issue-create, which requires --epic — leaving top-level epics and unlinked triage issues with no sanctioned path. Adds two shape-specific tools (Option A): vrg-epic-create (top-level issue in /.github, forced 'epic' label, org auto-detected via github.detect_org) and vrg-triage-create (unlinked issue, forced 'triage' label, current repo or --repo). Each forces its shape's label, so #2017's no-arbitrary-bypass guarantee holds. Updates the vrg-gh issue-create denial to name all three sanctioned tools. Both new tools use argparse, so the help-coverage gate verifies their --help automatically. Design: docs/specs/2026-07-01-issue-creation-shapes-design.md. Plugin skills (epic-create/migrate-repo/triage-capture) switch to these in the vergil-claude-plugin companion issue. Ref vergil-project/vergil-tooling#2069.¶
Documentation¶
- document Closes-based task closure and event-driven rollup (#2073) Replace the old 'Ref-only, auto-close banned' language across the current docs with the event-driven model (epic vergil-project/.github#75): vrg-submit-pr auto-selects Closes for managed tasks (auto-close on merge), legacy issues keep Ref, Fixes/Resolves stay banned, and the parent epic rolls up via the on: issues.closed Action. Records the rationale — a task is one PR, so in develop = done and any later change is a new follow-up issue, never a reopening. Updates CLAUDE.md, docs/repository-standards.md, and the site guides/reference; dated docs/specs/* are left as historical snapshots.
Features¶
- scaffold the epic-rollup caller in every new repo (#2074) vrg-github-repo-init now provisions .github/workflows/epic-rollup.yml — the thin on: issues.closed caller that hands off to the reusable ops-epic-rollup workflow — for every managed repo, unconditionally (like ci.yml). Adds render_epic_rollup_workflow and writes it in step_ci_cd_workflows. The caller is static across repos and orgs: all repos reference vergil-project/vergil-actions, and the reusable workflow resolves the epic repo (.github) within the caller's own org. This makes event-driven closure (epic vergil-project/.github#75) the default for new repos and the basis for the Phase 3 rollout to existing repos.
Refactoring¶
- remove the command-triggered task close path (#2072) Task closure and epic rollup are event-driven now (epic vergil-project/.github#75): the PR's Closes linkage closes the task on merge (T3) and the on: issues.closed rollup Action closes the parent epic (caller #2052 + reusable ops-epic-rollup). Remove _close_managed_task and its two call sites — the single-PR post-pipeline close in main() and the finalize-batch close-tasks post-step — plus the now-unused epics/linkage imports. This also closes the vrg-submit-pr --all hole that started the epic: closure no longer lives in any command, so no path can forget it.