Skip to content

Release 2.1.177 (2026-08-07)

Bug fixes

  • name each common-check's scope in its file-count message (#2645) The markdownlint/shellcheck/yamllint/hadolint checks each lint a fixed slice of the working tree (published docs, scripts/, etc.), never the branch diff. A bare "(N files)" was repeatedly misread as "N markdown files I changed," producing phantom off-by-one reports when a changed file fell outside the check's scope. Name the scope inline so N reads as "N files in ," not the diff.

  • gate docs / docs required check on [publish].docs (#2650) desired_ci_gates_ruleset appended the docs / docs required status check unconditionally, so every repo's branch protection required it — even repos whose CI never emits it. A repo with [publish].docs = false (e.g. an org .github repo) has no docs job in ci.yml, so the check is never reported; the required context stays pending, GitHub returns mergeStateStatus=BLOCKED, and every merge fails with 'the base branch policy prohibits the merge'.

Gate the check on the publish-docs flag, mirroring the existing conditional gates (integration tests, version-bump). Thread the flag through required_evidence_gates so the enforced gates and evidence-required gates stay aligned, and pass config.publish.docs at both production call sites.

Introduced by epic vergil-project/.github#224 / #2614.

Documentation

  • fix stale --fork help and error text referencing removed --slot (#2649) The --fork argparse help in vrg_vm.py still read 'Fork the targeted --slot into a new session instead of resuming it', but --slot was removed in #2607. Update it to describe the current model (fork the resolved session), consistent with the --label/--resume named surface.

Also reword the reachable Refuse in lib/session.py that a live 'vrg-vm session --fork' surfaces as 'ERROR: --fork requires --slot N ...' (the removed flag can never satisfy it) to point at the supported --resume/--label surface instead. Behavior is unchanged (--fork with no target still refuses); only the wording changes. Update the one test that asserted the old --slot wording.

Features

  • mark confirm stages ⚠ when they defer a publish failure (#2644) A stage whose fn returns normally was always recorded ok (✓), so confirm-main/confirm-develop rendered a green check even when they deferred a docker-publish failure — the break surfaced only in the terminal publish-status summary, easy to miss against a run of green.

Add progress.mark_warn(reason): a stage can now signal completed-with-warning without raising, downgrading its recorded status ok→warn (⚠) with the reason on its status row. Control flow (including fail_fast) is unaffected and the run still exits 0 on a pure warn.

Wire confirm_main/confirm_develop to call it when they observe a deferral, so each stage that saw a break shows ⚠ at its own row — including confirm-develop when the same family was already deferred on main (dedup keeps the list from growing, but the stage still observed it). Clean runs keep ✓; publish-status exit-1 and the summary are unchanged.

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