From 98bc8ed9f96f79d219956512943eb071f5242b60 Mon Sep 17 00:00:00 2001 From: "Harol A. Reina H." Date: Mon, 21 Sep 2026 07:05:25 -0500 Subject: [PATCH] ci(openspec): gate archived changes on having no unticked tasks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ADR-0023 §7 deferred this gate per repo until that repo reached rc=0, because wiring it earlier would have turned existing debt into a red main. This repo reached rc=0 on 2026-09-21; before that it carried closed changes with work still outstanding and nothing could see it. One step beside the existing strict validate, in the same job. Verified it is a gate and not decoration: on a scratch copy `validate --archived` exits 0 clean and exits 1 with a single box unticked in one archived change. What this costs from here: archiving a change with an unticked box fails CI. That is the intent — the alternative is what this repo just spent a session undoing — but the box must then be dispositioned honestly, either `- [x]` with evidence or harvested into an open change, never ticked to get green. --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d4212415..d30ee0d0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -465,6 +465,12 @@ jobs: - name: Validate specs and changes (strict) run: npx -y @fission-ai/openspec@1.13.1 validate --all --strict --no-interactive + # Archived changes must carry no unticked task. ADR-0023 §7 deferred this gate + # until this repo reached rc=0, which it did on 2026-09-21; before that the repo + # carried closed changes with work still outstanding, invisible to every gate. + - name: Validate archived changes (no unticked tasks) + run: npx -y @fission-ai/openspec@1.13.1 validate --archived --no-interactive + # AOT-at-PR gate (verbara-meta/ADR-0012 gate #1): run the REAL Native AOT publish # of Verbara.Platform.Api on every PR and fail on any IL trim/AOT warning. Until now # this gate only ran at release (the Dockerfile publishes AOT) — a dependency bump or