Skip to content

ci(versioning): policy-as-code, tag-gate und retention kanonisch umsetzen#57

Merged
tomtastisch merged 8 commits intomainfrom
codex/ci/1-3-versioning-policy-rac
Feb 14, 2026
Merged

ci(versioning): policy-as-code, tag-gate und retention kanonisch umsetzen#57
tomtastisch merged 8 commits intomainfrom
codex/ci/1-3-versioning-policy-rac

Conversation

@tomtastisch
Copy link
Owner

@tomtastisch tomtastisch commented Feb 14, 2026

Ziel & Scope

Umgesetzte Aufgaben (abhaken)

  • RaC-Policy eingefuehrt: tools/versioning/rac-policy.json
  • PR-Gate versioning-policy implementiert (fail-closed)
  • Auto-Labeling von version:* auf versioning:* migriert
  • Tag-Gate mit RC-Kollision/Ordnungsregeln integriert
  • Release-Workflow um Tag-Gate + GH-Release-Prerelease-Steuerung erweitert
  • Retention-Workflow fuer GH Releases/NuGet/GH Packages ergänzt
  • Governance Snapshot erzeugt (artifacts/governance/*)
  • Race-Fix: versioning-policy wartet deterministisch auf genau ein versioning:*

Nachbesserungen aus Review (iterativ)

  • PR-Body auf Governance-Pflichtsektionen nachgezogen
  • versioning-policy gegen Labeling-Race gehaertet
  • Falls CI weitere Findings meldet: sequenziell nachziehen, pushen, erneut verifizieren

Security- und Merge-Gates

  • Branch-/PR-Naming entspricht Ruleset (codex/ci/..., ci(...): ...).
  • Required Checks laufen fail-closed.
  • Pflichtaussage: security/code-scanning/tools muss bei Merge 0 offene Alerts haben.

Evidence (auditierbar)

  • node tools/versioning/test-compute-pr-labels.js
  • node tools/versioning/test-evaluate-versioning-policy.js
  • node tools/versioning/test-tag-gate.js
  • bash -n tools/ci/release/retention_apply.sh
  • jq length artifacts/governance/labels.json
  • jq length artifacts/governance/rulesets.json
  • Artefakte:
    • artifacts/policy/decision.json, artifacts/policy/summary.tsv, artifacts/policy/actions.log
    • artifacts/tag-gate/decision.json, artifacts/tag-gate/summary.tsv, artifacts/tag-gate/actions.log
    • artifacts/retention/decision.json, artifacts/retention/summary.tsv, artifacts/retention/actions.log
    • artifacts/governance/labels.json, artifacts/governance/rulesets.json, artifacts/governance/snapshot.md

DoD (mindestens 2 pro Punkt)

  • RaC + Policy-Gate:
    • PR ohne oder mit mehreren versioning:* failt deterministisch
    • versioning:none mit API-relevanten Änderungen failt
  • Auto-Labeling:
    • Genau ein versioning:* wird gesetzt
    • Mapping stammt aus RaC (rac-policy.json)
  • Tag-Gate:
    • Invalid-/Kollisions-/Ordnungsfaelle failen
    • Evidence-Artefakte werden immer geschrieben
  • Retention:
    • Keep-Set deterministisch aus Tags abgeleitet
    • Aktionen ausserhalb Keep-Set sind definiert (delete/unlist/delete)
  • Snapshot:
    • Label- und Ruleset-Inventar vollstaendig via gh exportiert
    • Snapshot enthaelt direkte Settings-Links

Closes #52
Closes #53
Closes #54
Closes #56

Copilot AI review requested due to automatic review settings February 14, 2026 15:52
@github-actions github-actions bot added area:pipeline area:versioning area:tooling ci CI/workflow change impl:config versioning:patch Fix/Refactor/Docs/CI/Tooling; requires PATCH bump and removed area:versioning labels Feb 14, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Diese PR implementiert die in den Issues #52/#53/#54/#56 beschriebenen Governance-/Versioning-Bausteine als Policy-as-Code (RaC) inkl. PR-Gate, Tag-Gate, Release-Härtung sowie Retention-Automation und migriert die Versioning-Labels auf das kanonische Präfix versioning:*.

Changes:

  • Einführung von RaC (tools/versioning/rac-policy.json) und PR-Check versioning-policy via Node-Skript + Evidence-Artefakte.
  • Migration der Versioning-Labels von version:*versioning:* inkl. Anpassung von Tooling/Testcases und Issue-Labeler.
  • Integration eines Tag-Gates in den Release-Workflow sowie Hinzufügen eines Retention-Workflows + Retention-Skript für GH Releases / NuGet / GH Packages.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tools/versioning/validate-label-decision.js Prüft Auto-Label-Decision jetzt gegen versioning:* statt version:*.
tools/versioning/testcases/01-docs-only.json Testcase erwartet versioning:* Label.
tools/versioning/testcases/02-ci-only.json Testcase erwartet versioning:* Label.
tools/versioning/testcases/03-src-tests-docs.json Testcase erwartet versioning:* Label.
tools/versioning/testcases/04-breaking.json Testcase erwartet versioning:* Label.
tools/versioning/testcases/05-scope-switch.json Migration bestehender/expektierter Versioning-Labels auf versioning:*.
tools/versioning/testcases/06-guard-fallback.json Testcase erwartet versioning:none.
tools/versioning/test-tag-gate.js Neuer Node-Testtreiber für tag-gate.js.
tools/versioning/test-evaluate-versioning-policy.js Neuer Node-Testtreiber für evaluate-versioning-policy.js.
tools/versioning/tag-gate.js Neues Tag-Gate (RC-Kollision/Order-Regeln) + Evidence-Artefakte.
tools/versioning/rac-policy.json Neue kanonische RaC-Policy (Tags, Labels, Classification, Retention-Parameter).
tools/versioning/labels.json Fügt versioning:* Labels hinzu und markiert version:* als Legacy (Migration).
tools/versioning/label-schema.json Erlaubte Labels auf versioning:* umgestellt.
tools/versioning/evaluate-versioning-policy.js Neues Policy-Evaluationsskript (Labels + Changed-Files Klassifikation) + Evidence-Artefakte.
tools/versioning/compute-pr-labels.js Lädt Versioning-Label-Mapping aus RaC statt Hardcoding (versioning:*).
tools/ci/release/retention_apply.sh Neues Retention-Skript (GH Releases delete, NuGet unlist, GH Packages delete) + Evidence.
.github/workflows/version-policy.yml PR-Workflow auf versioning-policy (RaC-Eval) umgestellt + Artefakt-Upload.
.github/workflows/release.yml Release-Workflow um Tag-Gate-Job und GH-Release Handling (stable/rc prerelease) erweitert.
.github/workflows/release-retention.yml Neuer Workflow: periodische/after-release Retention via retention_apply.sh.
.github/workflows/issue-labeler.yml Issue-Labeler migriert auf versioning:* inkl. Default versioning:none.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copilot AI review requested due to automatic review settings February 14, 2026 16:14
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 8 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@tomtastisch tomtastisch enabled auto-merge (squash) February 14, 2026 16:29
@tomtastisch tomtastisch merged commit a1878b5 into main Feb 14, 2026
29 checks passed
@tomtastisch tomtastisch deleted the codex/ci/1-3-versioning-policy-rac branch February 14, 2026 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment