From 07bbfcfcaae126d9f7c90ceaa9456f8bf3d040f1 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Agent Date: Sun, 8 Feb 2026 19:07:04 +0100 Subject: [PATCH 1/7] ci(policies): add schema-compliant top-level rule_id --- docs/governance/CI_POLICY.md | 9 +++++++++ tools/ci/policies/rules/artifact_contract.yaml | 1 + tools/ci/policies/rules/docs_drift.yaml | 1 + tools/ci/policies/rules/naming_snt.yaml | 1 + tools/ci/policies/rules/shell_safety.yaml | 1 + tools/ci/policies/rules/versioning_svt.yaml | 1 + 6 files changed, 14 insertions(+) create mode 100644 docs/governance/CI_POLICY.md diff --git a/docs/governance/CI_POLICY.md b/docs/governance/CI_POLICY.md new file mode 100644 index 00000000..ac089163 --- /dev/null +++ b/docs/governance/CI_POLICY.md @@ -0,0 +1,9 @@ +# CI Policy Rules + +rule_id | file +---|--- +CI-ARTIFACT-000 | tools/ci/policies/rules/artifact_contract.yaml +CI-DOCS-000 | tools/ci/policies/rules/docs_drift.yaml +CI-NAMING-000 | tools/ci/policies/rules/naming_snt.yaml +CI-SHELL-000 | tools/ci/policies/rules/shell_safety.yaml +CI-VERSION-000 | tools/ci/policies/rules/versioning_svt.yaml diff --git a/tools/ci/policies/rules/artifact_contract.yaml b/tools/ci/policies/rules/artifact_contract.yaml index 4dcdea04..e6e8f13f 100644 --- a/tools/ci/policies/rules/artifact_contract.yaml +++ b/tools/ci/policies/rules/artifact_contract.yaml @@ -1,3 +1,4 @@ +rule_id: CI-ARTIFACT-000 rules_schema_version: 1 rules: - rule_id: CI-ARTIFACT-001 diff --git a/tools/ci/policies/rules/docs_drift.yaml b/tools/ci/policies/rules/docs_drift.yaml index 2469118e..22f1852d 100644 --- a/tools/ci/policies/rules/docs_drift.yaml +++ b/tools/ci/policies/rules/docs_drift.yaml @@ -1,3 +1,4 @@ +rule_id: CI-DOCS-000 rules_schema_version: 1 rules: - rule_id: CI-DOCS-001 diff --git a/tools/ci/policies/rules/naming_snt.yaml b/tools/ci/policies/rules/naming_snt.yaml index 5a90dc19..92028028 100644 --- a/tools/ci/policies/rules/naming_snt.yaml +++ b/tools/ci/policies/rules/naming_snt.yaml @@ -1,3 +1,4 @@ +rule_id: CI-NAMING-000 rules_schema_version: 1 rules: - rule_id: CI-NAMING-001 diff --git a/tools/ci/policies/rules/shell_safety.yaml b/tools/ci/policies/rules/shell_safety.yaml index 29078b12..ad848fdf 100644 --- a/tools/ci/policies/rules/shell_safety.yaml +++ b/tools/ci/policies/rules/shell_safety.yaml @@ -1,3 +1,4 @@ +rule_id: CI-SHELL-000 rules_schema_version: 1 rules: - rule_id: CI-SHELL-001 diff --git a/tools/ci/policies/rules/versioning_svt.yaml b/tools/ci/policies/rules/versioning_svt.yaml index e1f6d4db..de40a1d1 100644 --- a/tools/ci/policies/rules/versioning_svt.yaml +++ b/tools/ci/policies/rules/versioning_svt.yaml @@ -1,3 +1,4 @@ +rule_id: CI-VERSION-000 rules_schema_version: 1 rules: - rule_id: CI-VERSION-001 From 4da52f51d10a60177142c39b41723a9b02cfd699 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Agent Date: Sun, 8 Feb 2026 19:24:38 +0100 Subject: [PATCH 2/7] ci(policy-runner): allow optional top-level rule_id in rule files --- tools/ci/checks/PolicyRunner/Program.cs | 2 +- tools/ci/policies/schema/rules.schema.json | 25 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/tools/ci/checks/PolicyRunner/Program.cs b/tools/ci/checks/PolicyRunner/Program.cs index 699aa723..f3543b05 100644 --- a/tools/ci/checks/PolicyRunner/Program.cs +++ b/tools/ci/checks/PolicyRunner/Program.cs @@ -939,7 +939,7 @@ static bool IsConfiguredBinaryPath(string path, IReadOnlyList configured var unknownRootKeys = root.Children.Keys .OfType() .Select(static x => x.Value ?? string.Empty) - .Where(key => key is not ("rules_schema_version" or "rules")) + .Where(key => key is not ("rule_id" or "rules_schema_version" or "rules")) .OrderBy(static x => x, StringComparer.Ordinal) .ToList(); if (unknownRootKeys.Count > 0) diff --git a/tools/ci/policies/schema/rules.schema.json b/tools/ci/policies/schema/rules.schema.json index 02471d78..ba5a1206 100644 --- a/tools/ci/policies/schema/rules.schema.json +++ b/tools/ci/policies/schema/rules.schema.json @@ -3,8 +3,16 @@ "$id": "tools/ci/policies/schema/rules.schema.json", "type": "object", "additionalProperties": false, - "required": ["rules_schema_version", "rules"], + "required": [ + "rules_schema_version", + "rules" + ], "properties": { + "rule_id": { + "type": "string", + "description": "Rule collection identifier (file-level). Optional.", + "pattern": "^CI-[A-Z0-9_-]+-[0-9]{3}$" + }, "rules_schema_version": { "type": "integer", "const": 1 @@ -15,7 +23,15 @@ "items": { "type": "object", "additionalProperties": false, - "required": ["rule_id", "policy_type", "severity", "title", "description", "applies_to", "params"], + "required": [ + "rule_id", + "policy_type", + "severity", + "title", + "description", + "applies_to", + "params" + ], "properties": { "rule_id": { "type": "string", @@ -36,7 +52,10 @@ }, "severity": { "type": "string", - "enum": ["warn", "fail"] + "enum": [ + "warn", + "fail" + ] }, "title": { "type": "string", From b863755ce87189063cd360de38866689c5facdd4 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Agent Date: Sun, 8 Feb 2026 19:41:06 +0100 Subject: [PATCH 3/7] docs(governance): rename CI policy doc to numbered DOC_NAME_RE format --- docs/governance/{CI_POLICY.md => 006_CI_POLICY.MD} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/governance/{CI_POLICY.md => 006_CI_POLICY.MD} (100%) diff --git a/docs/governance/CI_POLICY.md b/docs/governance/006_CI_POLICY.MD similarity index 100% rename from docs/governance/CI_POLICY.md rename to docs/governance/006_CI_POLICY.MD From 6aabf9836100c570482473762faae2268442e072 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Agent Date: Sun, 8 Feb 2026 19:56:10 +0100 Subject: [PATCH 4/7] ci: retrigger PR checks From cc62002ed831877a15f9641e1ffdd9291354aeb9 Mon Sep 17 00:00:00 2001 From: GitHub Copilot Agent Date: Sun, 8 Feb 2026 20:47:39 +0100 Subject: [PATCH 5/7] docs(governance): classify CI rules list as index (not policy) to satisfy RoC bijection --- docs/governance/{006_CI_POLICY.MD => 006_INDEX_CI_RULES.MD} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/governance/{006_CI_POLICY.MD => 006_INDEX_CI_RULES.MD} (100%) diff --git a/docs/governance/006_CI_POLICY.MD b/docs/governance/006_INDEX_CI_RULES.MD similarity index 100% rename from docs/governance/006_CI_POLICY.MD rename to docs/governance/006_INDEX_CI_RULES.MD From ca02368c27d555557fdd3187005d6cf6de673b06 Mon Sep 17 00:00:00 2001 From: Tomtastisch <82227609+tomtastisch@users.noreply.github.com> Date: Mon, 9 Feb 2026 07:04:39 +0100 Subject: [PATCH 6/7] Update docs/governance/006_INDEX_CI_RULES.MD Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/governance/006_INDEX_CI_RULES.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/governance/006_INDEX_CI_RULES.MD b/docs/governance/006_INDEX_CI_RULES.MD index ac089163..caada37e 100644 --- a/docs/governance/006_INDEX_CI_RULES.MD +++ b/docs/governance/006_INDEX_CI_RULES.MD @@ -1,4 +1,5 @@ # CI Policy Rules + rule_id | file ---|--- From e325bdb3779fb6d56d3af8ec0c76361329b30be7 Mon Sep 17 00:00:00 2001 From: Tomtastisch <82227609+tomtastisch@users.noreply.github.com> Date: Mon, 9 Feb 2026 07:04:54 +0100 Subject: [PATCH 7/7] Update docs/governance/006_INDEX_CI_RULES.MD Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/governance/006_INDEX_CI_RULES.MD | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/governance/006_INDEX_CI_RULES.MD b/docs/governance/006_INDEX_CI_RULES.MD index caada37e..29851163 100644 --- a/docs/governance/006_INDEX_CI_RULES.MD +++ b/docs/governance/006_INDEX_CI_RULES.MD @@ -1,10 +1,10 @@ # CI Policy Rules -rule_id | file ----|--- -CI-ARTIFACT-000 | tools/ci/policies/rules/artifact_contract.yaml -CI-DOCS-000 | tools/ci/policies/rules/docs_drift.yaml -CI-NAMING-000 | tools/ci/policies/rules/naming_snt.yaml -CI-SHELL-000 | tools/ci/policies/rules/shell_safety.yaml -CI-VERSION-000 | tools/ci/policies/rules/versioning_svt.yaml +| rule_id | file | +| --- | --- | +| `CI-ARTIFACT-000` | `tools/ci/policies/rules/artifact_contract.yaml` | +| `CI-DOCS-000` | `tools/ci/policies/rules/docs_drift.yaml` | +| `CI-NAMING-000` | `tools/ci/policies/rules/naming_snt.yaml` | +| `CI-SHELL-000` | `tools/ci/policies/rules/shell_safety.yaml` | +| `CI-VERSION-000` | `tools/ci/policies/rules/versioning_svt.yaml` |