Repository navigation
chore(template): sync the mint machinery to rsr-template-repo 2be7b88 - #28
Conversation
estate-rules is red on main. The step "Use-this-template mint end to end"
runs tests/e2e/use_template_mint_test.sh, inherited from template c481073.
That version re-mints this already-minted tree and fails on an unfilled
{{OWNER}} token. The template fixed it across #275, #291, #293 and #294; its
current test self-skips in a minted child. Reproduced: the c481073 test
fails on main, the current test passes here.
How the sync was made (three-way, base c481073, which this repo was minted
from):
- 43 files this repository still held byte-identical to c481073 take the
template's 2be7b88 version: mint machinery, hooks, workflows, checks and
tests.
- 9 new machinery files are added: chain-mint, replay-mint,
check-mint-drift, format-container-kyaml, and their tests. The template's
own diagnostic workflow, oracle-segfault-diag.yml, and its lock record are
left out.
- Diverged files were merged with git merge-file. Kept as this repository's
own: governance.yml (the #15 caller), README, mise.toml (yq added for
scripts/kyaml-format.sh), the verdict-grid lane and rule-order policy
(standards 8e48b1c renders; the template's e064539 does not), the
rule-order checker and its test (from #22), and CHANGELOG.
- secret-scanner.yml takes the template's inline three-scanner workflow
(#295: stable contexts, no secrets: inherit). Its lock record is updated
and its contract test wired.
- tests/workflows/non_interactive_mint_test.sh and
tests/e2e/chain_mint_test.sh carry hyperpolymath/rsr-template-repo#300's
guard. In a legacy minted repo (no (mint-answers)) they assert repo-init's
refusal to mint again, by name, instead of failing.
Checked locally:
- check-lock-sync: in sync.
- check-workflow-edges, check-required-contexts, check-root-shape: pass.
- run-proven-suite: ALL LANES PASSED.
- Every single-line estate-rules lane: the same five fail as on unmodified
main, all environmental here (asciidoctor, this machine's yq) except
governance_policy_test.
- governance_policy_test still fails on the #15 governance caller's
pull_request branch filter. CI never reached that step before, because
the mint test failed first. Left for the owner's decision.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs
Canon lockstep is red on main. standards' canon.lock records 2.1.5 (#1424: gate table 0.3.1 and the applicability policy changed; the criteria did not), and this deed declared 2.1.3. Port of hyperpolymath/rsr-template-repo#298, the spine's adoption. - secret-types_chora.deed (canon): :version 2.1.3 to 2.1.5, and :gates-sha256 2f31f46d… to 5c510bba…. The criteria hash is unchanged. The (provenance) clause keeps 2.1.3: it records the canon this repository was minted against, which is history. - tests/workflows/governance_policy_test.sh expects the 2.1.5 tuple. That test already fails on main earlier, on the governance.yml pull_request filter that #15's caller carries; this does not change that. canon.lock marks 2.1.5 status "draft"; this adopts the identity the lock records, which is what the lockstep gate compares. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs (cherry picked from commit 402f898)
…emplate #308) The synced governance_policy_test.sh required an inline standards checkout and an unfiltered pull_request trigger; this repository's governance.yml (since #15) calls standards' governance-reusable.yml at a 40-hex SHA and only ran for PRs into main/master. Owner ruling: keep the caller, fix the test at source. - Port hyperpolymath/rsr-template-repo#308: the test accepts a locked, SHA-pinned call of governance-reusable.yml as well as the inline checkout, and checks either in full. - Drop the pull_request branch filter, so governance runs on stacked PRs too (the push filter stays). governance_policy_test.sh passes in full here, canon 2.1.5 included; lock sync, workflow edges and required contexts pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs
…e wires
tests/workflows/governance_badge_test.sh requires README.adoc to read the
stable raw URL governance-badges/badges/k9.json. The template README
carries it with {{OWNER}}/{{REPO}} tokens; this repository's README never
had it, and the earlier re-mint failure in estate-rules stopped the job
before it reached this suite. The governance-badges branch already
publishes badges/k9.json here, so the badge renders.
governance_badge_test.sh passes in full (behaviour, wiring, firing
controls); all 174 .adoc files render clean.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs
Codex Review Summary: ❌ FailedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Estate Rules' "Converted YAML stays KYAML" step (synced from the
template) failed: build/container/compose.yaml is not KYAML. The file is
exactly the template's compose.yaml with its tokens filled. The template
quotes token keys ("{{SERVICE_NAME}}") because a brace token is not a
plain scalar; once filled, canonical KYAML writes the key unquoted
(scripts/format-container-kyaml.sh says so, and runs at mint). This
repository was minted before that formatter existed, so three filled
keys kept their quotes: "secret-types" (twice) and "secret-types-data".
Unquoted, matching the unquoted rokur-audit key the template's own file
carries and passes with. Parsed data is unchanged (compared as sorted
JSON). The byte-exact check needs mikefarah yq 4.53.3, which could not
be installed in this environment; CI runs it.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs
|
🟠 indeterminate · commit Advisory: 11 row(s), worst 🟠 indeterminate (0 critical, 0 high) — reported, never grading the change.
Hypatia scan: error — the scanner produced no findings array
panic-attack assail: not_run — no status envelope was produced
pons asinorum: not_run — no status envelope was produced
accessibilitybot: not_applicable — template default: enrol once the repository serves HTML
cipherbot: not_applicable — template default: enrol once the repository implements cryptography
echidnabot: not_applicable — template default: enrol once the repository carries proofs and an ECHIDNA engine is configured
finishingbot (release readiness): not_run — enrolled, but no report-back was received
glambot (presentation quality): not_run — enrolled, but no report-back was received
panicbot: not_applicable — panic-attack is already graded by the verdict grid's own panic-attack row, from static-analysis-gate.yml evidence; enrolling panicbot would report one scanner twice and give two rows that can disagree
rhodibot (RSR compliance): not_run — enrolled, but no report-back was received
seambot: not_applicable — template default: enrol once a seam register exists at spec/seams/seam-register.json
sustainabot: not_applicable — reserved fleet slot; no adapter exists (gitbot-fleet bots/sustainabot/README.adoc)
Scope: static findings reported by each row's tool at the named commit. The table grades only findings in files this change touches, so the colour answers "does this change introduce anything?", not "what does the whole repository still carry?". Standing findings are counted in each accordion and in report.json; the baseline filter remains the place where acknowledged debt is recorded. The lane state is the worst GATING row; advisory rows are listed and counted but never set it. Purple, red, yellow and blue grade the worst GRADED finding present; orange is evidence missing, malformed or a scanner that did not run; grey is an explicit scope exclusion with its reason. No row is a security certification. report.json, badge.json and the raw findings are in the verdict-grid artifact on the linked run. |
…kflow (#308) ## Summary `tests/workflows/governance_policy_test.sh` required `governance.yml` to check out `metadatastician/standards` inline. Some children instead call `standards/.github/workflows/governance-reusable.yml` at a 40-hex SHA; secret-types has done so since hyperpolymath/secret-types#15. That call runs the same pinned policy, and keeps it defined once, in standards. Such a child failed the test only because of its shape, and every template sync brought the failure back. hyperpolymath/secret-types#28 is red on exactly that today. The owner chose to fix this at source and keep the caller. ## Changes - The test now accepts either shape and checks each in full: - **inline** (unchanged): a standards checkout at a 40-hex ref, whose action is in the lock record with a locked dependency commit. - **caller**: `jobs.governance.uses` names standards' `governance-reusable.yml` at a 40-hex SHA. `actions.lock` must record `owner/standards@<sha>` for `governance.yml`, with a locked dependency commit. - These still fail: a caller at a tag or branch, a caller missing from the lock, and any `pull_request` filter. - The header comment now describes the two shapes. ## RSR Quality Checklist ### Required - [x] Tests pass: `bash tests/workflows/governance_policy_test.sh` on the template (inline path). - [x] No banned language patterns (Bun / JavaScript only). - [x] SPDX headers unchanged. - [x] No secrets. ## Testing Controls run against a scratch copy of the repository: | `governance.yml` | Result | |---|---| | caller at `@46ee183…`, locked | `PASS: governance calls the pinned standards policy, and the call is locked` | | same caller at `@v1.0.0` | `AssertionError: a governance caller must call standards' governance-reusable.yml at a full 40-hex commit SHA` | | caller with its lock record removed | `AssertionError: governance's lock record must match the reusable workflow it calls` | | template's own inline workflow | `PASS: governance executes the pinned standards policy with locked actions` | --- _Generated by [Claude Code](https://claude.ai/code/session_01BYbQRtNu216R13jtZLmoqs)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
|
…patible proof #30 landed the same --cubical-compatible change on main with its own helper names. The owner chose this PR's version, so the 7 files that only #30 touched on main (Prelude, Generic, proof-flags.sh, grade-receipt.sh, the receipt, PROOF-STATUS and proof-debt) keep this branch's side. CHANGELOG keeps both new entries; the template sync (#28) and the other main changes merge cleanly. Checked with Agda 2.6.4.3 (Debian 13 agda-bin 2.6.4.3-1+b2): check.sh (core proofs, 4 expected rejections, flag control), minimal-laws.sh (3 laws, each needed), and grade-receipt.sh --check (15 modules, all sha256 verified). Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6 Signed-off-by: Claude <noreply@anthropic.com>
My earlier merge (ba2484f) took #32's head before #32 was updated (3bf7f8e), because the local ref was stale. So this branch lacked main's later changes (the template sync #28, canon 2.1.5 #27, https-only edges #25) and kept some #26-only text. This merge corrects that. Each conflicted file is a 3-way merge on 3bf7f8e (the #32 commit the earlier merge used), so only this PR's legs changes are carried onto main. Files the legs work does not own take main's version: tests/workflows/governance_policy_test.sh, and docs/proof-debt.adoc except its legs bullet (this restores #32's dated W-1 record). The receipt is regenerated. The diff against main is now the legs work: the Rocq and Lean sources, check-legs.sh, the legs CI job, the receipt's (legs) block and RECONCILED leg states (PWG-2ii derived), and the matching doc lines. Checked with Agda 2.6.4.3, Coq 8.18.0 and Lean 4.24.0: check.sh, minimal-laws.sh, check-legs.sh, grade-receipt.sh --check (15 modules), check-escape-hatches.sh, the invisible-character scan and tests/workflows/governance_policy_test.sh. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6 Signed-off-by: Claude <noreply@anthropic.com>
## Summary Estate Rules is red on `main` ([run 42879373951](https://github.com/hyperpolymath/secret-types/actions/runs/42879373951)) at the verdict-grid lane suite: `FAIL: cannot locate Hypatia path conversion`. `tests/workflows/workflow_evidence_test.sh` comes from the template. It reads the inline `jq --arg ws "$GITHUB_WORKSPACE/"` step that makes Hypatia's finding paths repo-relative. This repository had kept a one-job caller of `metadatastician/standards/.github/workflows/hypatia-scan-reusable.yml`, so the step was not there. The mint failure earlier in the same job hid this until #28. As the owner chose, this PR adopts the template's inline workflow. ## Changes - `.github/workflows/hypatia-scan.yml`: now `rsr-template-repo` `main` (`0208563`) byte for byte. - It builds the same Hypatia pin as before (`be98f74`). - It uploads the SARIF (category `hypatia`) and the `hypatia-scan-findings` artifact that `fork-governance.yml` and `verdict-grid-publish.yml` already read. - It fails on any critical finding. - The other workflows and `.github/workflows/README.adoc` already describe this inline job. - `.github/workflows/actions.lock`: the `hypatia-scan.yml` entry is the template lock's entry for the same file. Every dependency record it names was already in this lock. The `standards@46ee183` record stays for its other users. ## RSR Quality Checklist ### Required - [x] Tests pass (see Testing) - [x] Code is formatted: the workflow is the template's file unchanged - [x] Linter is clean - [x] No banned language patterns - [x] No `unsafe` blocks without `// SAFETY:` comments - [x] No banned functions - [x] SPDX license headers present - [x] No secrets, credentials, or `.env` files included ### As Applicable - None applies. ## Testing Run locally on this branch: - `scripts/check-lock-sync.sh`: pass (0 dangling edges, every workflow has a lock key). - standards `scripts/close-lock.sh --check .github/workflows` at `d3e4b48`: closed, no dangling edges. - `tests/workflows/workflow_evidence_test.sh`: pass (it failed with the old caller). - `scripts/check-workflow-edges.sh`: all workflow edges resolve. - `tests/workflows/check_lock_sync_test.sh` and `tests/workflows/governance_policy_test.sh`: pass. The lock entry was copied from the template's tool-written lock for the same file, not generated here: this session has no `gh actions-lock`. `Lock Sync Gate` and `Actions lockfile verify` in CI are the authority on it. Hosted proof of the scan itself comes from this PR's `Hypatia Security Scan` run. ## Screenshots Not applicable. --- _Generated by [Claude Code](https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6)_ Signed-off-by: Claude <noreply@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>
#36) ## Summary Every pull request's verdict-grid comment is orange: "The renderer pinned in metadatastician/standards@8e48b1caade0 was missing or did not match its recorded sha256." `scripts/verdict-grid-lane.sh` pins the renderer at standards `8e48b1c` and records the sha256 of both renderer files at that commit. The 2 steps that fetch the renderer fetched `e064539` instead, a ref the template sync (#28) brought in. At `e064539` neither file matches, so the lane refuses to run the renderer. The CHANGELOG records that this repository keeps `8e48b1c` because the renderer at `e064539` does not render. ## Changes - `.github/workflows/fork-governance.yml` (step "Checkout the verdict grid renderer at the pinned standards commit") and `.github/workflows/verdict-grid-publish.yml` (step "Checkout pinned renderer"): `ref` moves from `e064539…` to `8e48b1caade08a552646adeab66558ac43b4360d`. - `actions.lock` does not change: `ref` is an input of `actions/checkout`, not a `uses:` ref. | File at standards | sha256 at `8e48b1c` | sha256 at `e064539` | recorded in the lane script | |---|---|---|---| | `scripts/verdict-grid.sh` | `3ee93552…` | `1053d170…` | `3ee93552…` | | `scripts/lib/verdict-grid.jq` | `5681fcef…` | `b02da89e…` | `5681fcef…` | ## RSR Quality Checklist ### Required - [x] Tests pass (see Testing) - [x] Code is formatted: 2 changed lines - [x] Linter is clean - [x] No banned language patterns - [x] No `unsafe` blocks without `// SAFETY:` comments - [x] No banned functions - [x] SPDX license headers present (unchanged) - [x] No secrets, credentials, or `.env` files included ### As Applicable - None applies. ## Testing Run locally: - Both renderer files fetched at `8e48b1c` match the recorded hashes (`sha256sum -c --strict`). - `tests/workflows/verdict_grid_test.sh`: 188 checks pass. - `tests/workflows/workflow_evidence_test.sh` and `tests/workflows/workflow_edges_test.sh`: pass. - `scripts/check-workflow-edges.sh` and `scripts/check-lock-sync.sh`: pass. The hosted proof is this PR's own verdict-grid comment, which should render instead of showing orange. ## Screenshots Not applicable. --- _Generated by [Claude Code](https://claude.ai/code/session_0136P7ZmAsYpFA9gxfQLF3F6)_ Signed-off-by: Claude <noreply@anthropic.com> Co-authored-by: Claude <noreply@anthropic.com>



Summary
estate-rules is red on
main. Its step "Use-this-template mint end to end" runstests/e2e/use_template_mint_test.shas inherited from templatec481073. That version re-mints this already-minted tree and fails on an unfilled{{OWNER}}token. The template fixed this across #275, #291, #293 and #294, and its current test self-skips in a minted child.I reproduced both sides: the
c481073test fails onmain, and the current test passes on this branch.Changes
This is a three-way sync. The base is
c481073, the commit this repository was minted from, and the target is template2be7b88.c481073take the template's current version: mint machinery, hooks, workflows, checks and tests.chain-mint,replay-mint,check-mint-driftandformat-container-kyaml, plus their tests. The template's own diagnostic workflow (oracle-segfault-diag.yml) and its lock record are left out.governance.yml, the reusable caller from fix(ci): canonical reusable callers, least-privilege Actions canary and lock sync #15;README.adoc;mise.toml, withyqadded forscripts/kyaml-format.sh;8e48b1cbecause that renderer works and the template'se064539does not;CHANGELOG.adoc, which gets one entry for this sync instead of the template's release notes.secret-scanner.ymltakes the template's inline three-scanner workflow (rsr-template-repo#295: stable status contexts, nosecrets: inherit). Its lock record is updated and its contract test wired.non_interactive_mint_test.shandchain_mint_test.shcarry test(mint): in a legacy minted child, assert the re-mint refusal instead of failing rsr-template-repo#300's guard. Without it, both tests fail in any legacy minted child. In a repository minted without(mint-answers), the guard asserts thatrepo-initrefuses to mint again, by name.RSR Quality Checklist
Required
check-lock-sync: in sync.check-workflow-edges,check-required-contexts,check-root-shape: pass.run-proven-suite.sh:ALL LANES PASSED.main. Four are environmental on this machine (asciidoctor, this machine'syq) and pass in CI..envfiles includedStill red, and why
governance_policy_testfails because the fix(ci): canonical reusable callers, least-privilege Actions canary and lock sync #15 governance caller'spull_requesttrigger carries a branch filter, and the test also expects the inline standards checkout. CI never reached this step before, because the mint test failed first. Whether to keep the caller or take the template's inline governance workflow is your call.Generated by Claude Code