Skip to content

Commit 75041fd

Browse files
ci(governance): bump standards SHA to consume R5b, drop local R5b half (#172)
## Summary Two coupled changes after [standards#329](hyperpolymath/standards#329) landed R5b (version-string drift) as an estate-wide governance rule: 1. **`governance.yml` wrapper SHA pin** `5eb28d7d…` → `bf406d6f…`. Picks up the new estate-wide rule alongside the existing R0 / R1 / SSH-remote / weak-crypto / hardcoded-secrets checks. 2. **Local `governance-doc-drift.yml` slimmed to R5a only.** The R5b step is now redundant — standards' reusable runs the same check estate-wide. R5a (bare prover counts → `docs/PROVER_COUNT.md`) stays local because the count semantics are echidna-domain-specific; sibling repos (proven / ephapax / affinescript / typed-wasm) each have their own canonical-reference cohort that does not share R5a's regex shape. Renames consistently: workflow file's `name:` and job `name:` move from "R5" to "R5a"; the Summary step now explains the split and points readers to standards#329 for R5b. After this lands, R5b coverage on echidna comes from the upstream reusable; R5a remains the echidna-local supplement. ## Test plan - [x] `python3 -c "import yaml; yaml.safe_load(...)"` on both files → OK - [x] Wrapper has new SHA + dated comment - [x] Local rule is R5a-only (R5b step removed; summary updated) - [ ] CI on this PR — `governance / Security policy checks` (with new R5b inside it) + `Governance / Doc drift (R5a)` both green Refs #171, refs hyperpolymath/standards#329.
1 parent d7ce814 commit 75041fd

2 files changed

Lines changed: 28 additions & 58 deletions

File tree

.github/workflows/governance-doc-drift.yml

Lines changed: 27 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
# SPDX-License-Identifier: MPL-2.0
22
#
3-
# governance-doc-drift.yml — local-to-echidna governance rule R5.
3+
# governance-doc-drift.yml — local-to-echidna governance rule R5a.
44
#
55
# Companion to the shared `governance.yml` wrapper (which calls
66
# hyperpolymath/standards/governance-reusable.yml). Adds a hard gate
7-
# specifically for the kind of doc drift that the
8-
# #169 / #170 narrative-coherence PRs cleaned up: bare prover counts
9-
# outside docs/PROVER_COUNT.md and pinned version strings outside
10-
# CHANGELOG.md / Cargo.toml.
7+
# specifically for bare prover counts outside docs/PROVER_COUNT.md —
8+
# the kind of drift the #169 / #170 narrative-coherence PRs cleaned
9+
# up. The companion R5b rule (pinned version strings outside
10+
# CHANGELOG.md / Cargo.toml) is promoted to the estate-wide
11+
# governance-reusable.yml at hyperpolymath/standards#329.
12+
#
13+
# Why R5a stays local: the prover-count semantics are echidna-domain-
14+
# specific. Sibling repos (proven, ephapax, affinescript, typed-wasm)
15+
# each have their own canonical-reference cohort (lemma counts, stdlib
16+
# function counts, proof-obligation counts, syntax-feature counts) that
17+
# do not share R5a's regex shape. A future generic R5 with per-repo
18+
# configurable canonical patterns is the natural extension.
1119
#
1220
# Scope is deliberately tight: load-bearing top-level docs only.
1321
# Sub-tree docs (docs/handover/, docs/decisions/, docs/releases/,
14-
# docs/reports/, audits, etc.) are owner-managed historical
15-
# snapshots and not scanned. Sub-crate READMEs likewise belong to
16-
# their own crate-local cadence.
17-
#
18-
# Promoting this rule into hyperpolymath/standards's
19-
# governance-reusable.yml is the natural follow-up once the pattern
20-
# proves out here — keeping it local first means a fail closes one
21-
# repo, not the estate.
22+
# docs/reports/, audits, etc.) are owner-managed historical snapshots
23+
# and not scanned. Sub-crate READMEs likewise belong to their own
24+
# crate-local cadence.
2225

23-
name: Governance / Doc drift (R5)
26+
name: Governance / Doc drift (R5a)
2427

2528
on:
2629
push:
@@ -44,8 +47,8 @@ permissions:
4447
contents: read
4548

4649
jobs:
47-
r5-doc-drift:
48-
name: R5 — canonical-reference drift detection
50+
r5a-doc-drift:
51+
name: R5a — canonical-reference drift detection (prover counts)
4952
runs-on: ubuntu-latest
5053
steps:
5154
- name: Checkout
@@ -101,49 +104,16 @@ jobs:
101104
fi
102105
echo "✓ R5a clean — no bare prover counts in load-bearing docs."
103106
104-
- name: R5b — pinned version strings outside CHANGELOG.md / Cargo.toml
105-
run: |
106-
set -euo pipefail
107-
DOCS=(
108-
README.md README.adoc
109-
EXPLAINME.adoc
110-
CLAUDE.md
111-
CONTRIBUTING.md CONTRIBUTING.adoc
112-
QUICKSTART-USER.adoc QUICKSTART-DEV.adoc QUICKSTART-MAINTAINER.adoc
113-
RSR_COMPLIANCE.adoc
114-
SECURITY.md
115-
MAINTAINERS.adoc
116-
AUTHORS.md
117-
CODE_OF_CONDUCT.md
118-
)
119-
# Matches `Version: 1.2.3` / `**Version**: 1.2.3` / `_Version_: v1.2.3`
120-
# etc. Not `Version` without a number, not `version = "x"` in code
121-
# blocks that just talk about a dep field name.
122-
PATTERN='^[[:space:]]*[*_]{0,2}Version[*_]{0,2}[[:space:]]*[:=][[:space:]]*v?[0-9]+\.[0-9]+\.[0-9]+'
123-
HITS=0
124-
for doc in "${DOCS[@]}"; do
125-
[ -f "$doc" ] || continue
126-
while IFS= read -r line; do
127-
[ -n "$line" ] || continue
128-
echo "::error file=$doc::R5b pinned version: $line — route to CHANGELOG.md (release history) or Cargo.toml (semver pin)"
129-
HITS=$((HITS+1))
130-
done < <(grep -nE "$PATTERN" "$doc" 2>/dev/null || true)
131-
done
132-
if [ "$HITS" -gt 0 ]; then
133-
echo ""
134-
echo "::error::R5b tripped on $HITS line(s)."
135-
echo "Fix: drop the embedded version; defer to CHANGELOG.md + the"
136-
echo "git log. Cargo.toml's [package].version is the semver pin."
137-
exit 1
138-
fi
139-
echo "✓ R5b clean — no pinned version strings in load-bearing docs."
140-
141107
- name: Summary
142108
run: |
143-
echo "R5 (canonical-reference drift) summary"
144-
echo "----------------------------------------"
145-
echo "R5a: bare prover counts → docs/PROVER_COUNT.md"
146-
echo "R5b: pinned version strings → CHANGELOG.md / Cargo.toml"
109+
echo "R5a (canonical-reference drift — prover counts) summary"
110+
echo "---------------------------------------------------------"
111+
echo "R5a: bare prover counts → docs/PROVER_COUNT.md"
112+
echo ""
113+
echo "R5b (version-string drift) is promoted to the estate-wide"
114+
echo "governance reusable in hyperpolymath/standards (#329); this"
115+
echo "local file carries the prover-count rule that is specific"
116+
echo "to echidna's domain."
147117
echo ""
148118
echo "Scope: 14 load-bearing top-level docs. Sub-tree historical"
149119
echo "docs (docs/handover/, docs/decisions/, docs/releases/, …)"

.github/workflows/governance.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,4 @@ permissions:
3131

3232
jobs:
3333
governance:
34-
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@5eb28d7d8790d5389b7b6a5233fe6265a775e3d0 # main 2026-05-27 (post-#219 workflow_sha fix)
34+
uses: hyperpolymath/standards/.github/workflows/governance-reusable.yml@bf406d6f95c5212c34c30f6629be93d08c076339 # main 2026-06-01 (R5b version-string drift — standards#329)

0 commit comments

Comments
 (0)