Skip to content

Commit d3d2ef8

Browse files
committed
ci(docs): pin path-filter / required-checks rationale at the source
dudect.yml is path-filtered to src/c/**, include/**, tests/c/test_dudect.c, tests/c/dudect/**. PRs that don't touch C source (e.g. workflow-only or docs-only changes) don't trigger the workflow, so its 4 job names never emit a status check on those PRs. Adding any of the 4 to the `main` branch's required-status-check ruleset would block every unrelated PR with "Expected -- Waiting for status to be reported" indefinitely. Same class of trapdoor as `baseline-guard.yml::Enforce baseline.json justification` and `wiki-sync.yml::sync-wiki`, both of which the PR #289 description already correctly excludes from the required cohort. Document the rationale in-tree at the top of all three path-filtered workflows so a future maintainer touching the rulesest doesn't have to re-derive it from PR #289 archaeology. The note explicitly cross- references each peer file and the canonical exclusion list. Behavioural change: none. Header comment additions only.
1 parent 41c1a53 commit d3d2ef8

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

.github/workflows/baseline-guard.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@
99
# an identifier for the CI runner on which the measurement was taken.
1010
# See benchmarks/check_baseline_justification.py for the full contract
1111
# and docs/BENCHMARK_HISTORY.md for the motivating history.
12+
#
13+
# RULESET / REQUIRED-CHECKS NOTE: this workflow is path-filtered to PRs
14+
# touching `benchmarks/baseline.json`, so its 'Enforce baseline.json
15+
# justification' job does NOT emit on unrelated PRs. Do NOT list this
16+
# job in the `main` branch's required-status-check ruleset — it would
17+
# block every PR that doesn't touch baseline.json with 'Expected —
18+
# Waiting for status to be reported'. Same reasoning as `dudect.yml`
19+
# and the wiki-sync job; see PR #289 'Deliberately not included' for
20+
# the canonical exclusion list.
1221

1322
name: Baseline.json Change Guard
1423

.github/workflows/dudect.yml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
name: CI - dudect Constant-Time Verification
22

3+
# RULESET / REQUIRED-CHECKS NOTE
4+
# ------------------------------
5+
# This workflow is path-filtered to PRs that touch C source / dudect
6+
# harness code (see `paths:` blocks below). PRs that don't touch any of
7+
# those paths will NOT trigger this workflow, so its 4 job names
8+
# ('dudect - Utility Functions', 'dudect - PQC Primitives',
9+
# 'dudect - Legacy Harnesses (tools/constant_time)',
10+
# 'dudect - X25519 AVX2 4-way (opt-in)') do NOT emit a status check on
11+
# such PRs.
12+
#
13+
# Consequence for branch rulesets: do NOT add these 4 names to the
14+
# `main` branch's required-status-check list. A required check that is
15+
# never reported on path-filtered PRs blocks merge indefinitely with
16+
# 'Expected — Waiting for status to be reported'. Same reasoning as
17+
# `baseline-guard.yml::Enforce baseline.json justification` and the
18+
# wiki-sync job — see PR #289 description ('Deliberately not included')
19+
# for the canonical exclusion list.
20+
#
21+
# The dudect gate still fails closed when it DOES run (no
22+
# `continue-on-error`, no silent skips inside the harness), which is the
23+
# regression case it exists to catch.
324
on:
425
push:
526
branches: [ main, develop, 'feature/**' ]

.github/workflows/wiki-sync.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
name: Sync Wiki
22

3+
# RULESET / REQUIRED-CHECKS NOTE: this workflow only fires on push to
4+
# `main` with `wiki/**` changes. The `sync-wiki` job is documentation
5+
# publishing, not correctness, so it must NOT be added to the
6+
# required-status-check ruleset on `main`. Same exclusion class as
7+
# `dudect.yml` and `baseline-guard.yml`; see PR #289 'Deliberately not
8+
# included' for the canonical list.
39
on:
410
push:
511
branches:

0 commit comments

Comments
 (0)