Skip to content

ci(openspec): gate archived changes on having no unticked tasks - #342

Merged
Harol-Reina merged 1 commit into
mainfrom
ci/gate-archived-tasks
Sep 21, 2026
Merged

Harol-Reina merged 1 commit into
mainfrom
ci/gate-archived-tasks

Conversation

@Harol-Reina

Copy link
Copy Markdown
Contributor

What

One step beside the existing strict validate, in the same openspec job:

- name: Validate archived changes (no unticked tasks)
  run: npx -y @fission-ai/openspec@1.13.1 validate --archived --no-interactive

Why now, and not before

ADR-0023 §7 deferred this gate per repo until that repo reached rc=0 — 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: validate --all --strict does not read changes/archive/.

It is a gate, not decoration

Proved on a scratch copy rather than assumed:

control (untouched)                          rc=0
one box unticked in one archived change      rc=1

What this costs from here

Archiving a change with an unticked box now fails CI. That is the intent — the alternative is what this repo just spent a session undoing — but it adds real friction at close-out, and the box must then be dispositioned honestly: - [x] with evidence, or harvested into an open change. Never ticked to get green.

Verification on this branch

openspec validate --archived      13 passed, 0 failed
openspec validate --all --strict   6 passed, 0 failed
npm run lint:generated-types      ratchet OK (floor 37)

decision_ref: verbara-meta/ADR-0023 §7

🤖 Generated with Claude Code

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.
@Harol-Reina
Harol-Reina added this pull request to the merge queue Sep 21, 2026
Merged via the queue into main with commit 188d95d Sep 21, 2026
13 checks passed
@Harol-Reina
Harol-Reina deleted the ci/gate-archived-tasks branch September 21, 2026 12:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant