Skip to content

Release 2.1.121 (2026-07-09)

Bug fixes

  • reap stale SSH masters + announce guest commands so cloud sessions can't silently hang (#2202) (#2212)

Documentation

  • document the validation task type (#2210) Add a Validation tasks section (and definition) to the GitHub Issue Standards site doc: acceptance is a recorded PASS comment not a merge; not PR-workable; closes only on PASS; gates epic closure; Blocked-by reflinks drive runnable-vs-blocked audit; created via vrg-issue-create --kind validation and run via issue-validate. Doc-review bookend for epic vergil-project/.github#115. Ref vergil-project/.github#118.

Features

  • unify operational success marker (SUCCESS, legacy PASS) (#2222) Broaden _OPERATIONAL_SUCCESS_RE to match Outcome: (SUCCESS|PASS) so all operational kinds share one success marker; PASS stays a recognized legacy alias so validations closed before the unification (e.g. dogfood #120) are not falsely flagged. Update the validation scaffold results template to Outcome: SUCCESS / FAILURE. Part of epic vergil-project/.github#124. Ref #2216.

  • add deployment label to the operational set (#2223) Add a deployment label (82-char description, color 0052cc) to the registry and to epics._OPERATIONAL_LABELS, so deployment tasks are recognized as operational: the guard refuses them and the audit's closed-without-success invariant covers them. Bump the vrg-ensure-label sync count 17->18; update the audit invariant tests to return search results per operational label (the invariant now loops two labels). Part of epic vergil-project/.github#124. Ref #2217.

  • add --kind deployment path + scaffold (#2224) Extend vrg-issue-create to --kind {task,validation,deployment}; generalize _render_validation_body -> _render_operational_body(kind) selecting a per-kind scaffold. New data/deployment_task_body.md: agent-safe deploy steps, release-as-precondition boundary, idempotent/retry, SUCCESS/FAILURE results. Validation kind unchanged. Part of epic vergil-project/.github#124. Ref #2218.

  • tag operational-pending audit items by kind (#2226) OperationalStatus gains by_kind (keyed by IssueRef, cross-repo safe), populated in operational_status via the public epics.operational_kind — one lookup per child instead of two. The audit's 'Operational tasks pending' section annotates each item with its kind, distinguishing deployment-pending from validation-pending. Part of epic vergil-project/.github#124. Ref #2219.

Refactoring

  • generalize the PR-workability guard to operational tasks (#2220) Behavior-preserving rename toward the operational-task family (epic vergil-project/.github#124): is_validation -> is_operational (label-set _OPERATIONAL_LABELS, currently {validation}), is_validation_task -> is_operational_task, plus a new public operational_kind; the guards _reject_if_validation_task / _reject_validation_issue -> _reject_if_operational_task / _reject_operational_issue in vrg-submit-pr and vrg-pr-workflow, and the one is_operational reference in epic_audit. No behavior change (validation still refused); no back-compat aliases. Ref #2214.

  • generalize the validation-aware audit to operational tasks (#2221) Behavior-preserving rename (epic vergil-project/.github#124): ValidationStatus→OperationalStatus; validation_status/validation_pending/closed_validation_without_pass → operational_status/operational_pending/closed_operational_without_success; _VALIDATION_PASS_RE→_OPERATIONAL_SUCCESS_RE (still matches Outcome: PASS); render section 'Validation pending'→'Operational tasks pending'. The closed-without-success invariant now loops the operational label set (via new public epics.operational_labels()) instead of the literal 'validation'. No behavior change; no back-compat aliases. Ref #2215.