Skip to content

Release 2.1.143 (2026-07-15)

Features

  • report-ready always pushes the relay ref (#2376)
  • feat(pr-workflow): report-ready always pushes the relay ref

After the durable local write, report-ready unconditionally mirrors the ready state onto refs/vergil/pr-workflow/ via GitHubTransport (no off-platform detection), so a cloud VM's report-ready is visible to the Mac that runs vrg-submit-pr. The local write happens first and stays; a push failure is surfaced loudly on stderr but never rolls the local state back. The relay push's git chatter is redirected to stderr to keep report-ready's JSON-on-stdout contract intact. Task 3 of epic vergil-project/.github#148.

  • refactor(pr-workflow): move WorkflowState import into TYPE_CHECKING block

WorkflowState is used only in the _push_relay_ref annotation, so ruff TC001 requires it in a type-checking block.

  • delete the relay ref on branch cleanup (#2378) When vrg-finalize-pr cleans up a branch (both the merged and closed-PR paths in _delete_branch_and_worktree), also delete its pr-workflow relay ref via GitHubTransport(branch).delete(), which no-ops when the ref is absent. Add a swept safety net in the cleanup stage that prunes any relay ref whose branch no longer exists on the remote, so an abandoned or out-of-band-deleted branch cannot leave an orphan lingering in refs/vergil/pr-workflow/*. Adds git.remote_branches and github_transport.list_relay_branches helpers. Ref #2369 (epic vergil-project/.github#148, Task 5).

Refactoring

  • shared _open_pr core + worktree-free relay branch path (#2377) Extract a shared _open_pr(branch, base, metadata, *, push) core from the submit flow and add an optional positional 'branches' arg that opens PRs worktree-free from already-pushed branches (issue #2368, epic vergil-project/.github#148 Deliverable B).

_open_pr runs the standards/provenance guards, resolves linkage, builds the body, optionally pushes, and opens the PR with an explicit --head so it works from outside the branch's worktree. The batch _submit_one path now delegates to it; the no-arg local template path is unchanged and guarded by a regression test.

Relay path: per branch, resolve the ready-state (local worktree file preferred, else GitHubTransport ref), verify origin's tip matches the recorded head_sha, and call _open_pr(push=False) - no current_branch, no worktree lookup, no push. Already-submitted branches are skipped; the path refuses --all/--select, --issue/--summary/--title, and the finalize/release/install cascade. Adds github.create_pr(head=...).

CI Evidence: All gates passed — full audit bundle available. Download →