Skip to content

fix(ci): re-pin mirror and ci-pipeline off a commit that left main's reach - #1317

Merged
hyperpolymath merged 3 commits into
mainfrom
claude/hopeful-cray-40atxw
Oct 20, 2026
Merged

hyperpolymath merged 3 commits into
mainfrom
claude/hopeful-cray-40atxw

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Summary

Since 2026-10-19 17:14 UTC, Mirror to Git Forges and Self CI have failed on every push to main with zero jobs. The run is named after the file path, which is how GitHub labels a workflow it would not start.

Cause. Both callers use standards reusables pinned at 427eb35c. That commit was never on main:

The first run after the merge failed at startup:

Run Commit Result
1156 333b06a0 Jobs started
1157 cd477f24 (same tree, same pin, same lock record) 0 jobs

So the repo's files didn't change. Only whether GitHub could reach 427eb35c did.

Fix.

  • Re-pin all three calls to d55304a0, which is on main. lock-selfcheck.sh reports it SELF-CONSISTENT. The calls are mirror.yml → mirror-reusable.yml, plus secret-scanner-reusable.yml and rust-ci-reusable.yml from ci-pipeline.yml.
  • Relock with relock-standards-pin.sh. The reusables' inputs and secrets are unchanged between the two commits. Their internal changes are persist-credentials: false on the mirror checkouts, a newer dtolnay/rust-toolchain SHA, and the secret scanner's .gitleaks.toml gating.

Tool fix needed on the way. relock-standards-pin.sh refused this relock. Its stale-pin scan and its per-workflow entry check read every line of a workflow, so commented caller examples counted as live pins. Example: # uses: …rust-ci-reusable.yml@571cc734 in changelog-reusable.yml, elixir-ci-reusable.yml and rust-ci-reusable.yml. Both checks now go through one standards_pins helper. It skips full-line comments and takes the pin wherever a uses: key holds it, in block or flow (KYAML) style. Flow style was added in b386204 after the Codex review: the first version's ^\s*uses: anchor dropped one-line flow calls.

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • 🔧 Build / CI / tooling

How has this been verified?

  • bash scripts/tests/relock-standards-pin-test.sh → PASS. Two new cases:
    • "a commented caller example at another commit is not counted as a pin" fails on main's script;
    • "a flow-style call is counted as a pin" fails on the anchored scan from 38e4d91.
  • relock-standards-pin.sh --to d55304a0 .github/workflows → keyed to d55304a0 from 427eb35c. It removed one record that only 427eb35c used, dtolnay/rust-toolchain@e2a55d2. Re-run after b386204, it reports "already keyed".
  • check-lock-sync.sh .github/workflows → in sync.
  • .githooks/validate-actions-lock.sh → passes.
  • check-workflow-duplicate-keys.sh → 60 files clean.
  • prune-stale.sh → no further change.
  • tests/test_governance_reusable_shape.sh → 14 passed, 0 failed.
  • lock-selfcheck.sh on 427eb35c and on d55304a0 → both SELF-CONSISTENT. This needs the Go yq; with the Python yq the script reports UNEXAMINED.
  • shellcheck -S warning → the script is clean. The test file has one warning, SC2034 on NEW2, which was already there: the variable is used inside an eval string.
  • On this PR: the Call CI Pipeline / … jobs ran. That is the Self CI fix working: it starts again, through both re-pinned reusables. Mirror runs only on pushes to main, so the merge itself is its proof.
  • Not run: actionlint, which isn't installed in this container.

Checklist

  • My commits are signed. The session's managed signing is inactive, so the commits are unsigned (see CLAUDE.md).
  • I ran the project's own checks/tests locally and they pass.
  • No new files; no SPDX or licence change.
  • Docs: no public claim changes.
  • No soundness hole introduced. The pin scan ignores only full-line comments, which no run resolves.

Notes for reviewers

  • Not in scope: the older per-forge failures, where jobs ran and five forges failed at host verify or push (Oct 6–19). That is WO-2 in docs/reorg/2026-10-14-tidy/WORK-ORDERS-2026-10-19.adoc. Once this lands, Mirror will start again and should go back to those per-forge reds, not to green.
  • Possible follow-up: lock-selfcheck.sh doesn't check that a pinned SHA is reachable from main. A pin to a PR-branch commit passes every local gate and then breaks once the branch is deleted. Any estate repo pinned at 427eb35c will fail the same way.

🤖 Generated with Claude Code

https://claude.ai/code/session_01N6my4F3ohjwFReLW8cYYqC

…reach

mirror.yml and ci-pipeline.yml called standards reusables at 427eb35.
That commit is on #1301's branch only: #1301 merged as a squash with an
empty diff and its branch was deleted at 2026-10-19T17:14:40Z. From the
next push GitHub refused both callers at startup (failure, 0 jobs, run
name == path): Mirror to Git Forges and Self CI on every main push since
cd477f2, whose tree is identical to 333b06a, where Mirror still ran.

Re-pin all three calls to d55304a (on main, lock-selfcheck
SELF-CONSISTENT) and relock with relock-standards-pin.sh. The reusables'
inputs and secrets are unchanged between the two commits.

relock-standards-pin.sh refused this relock: its stale-pin and
entry-match scans read every line, so commented caller examples
(`#   uses: …@571cc73`) in three reusables counted as pins. Both scans
now read `uses:` lines only, through one helper. New test case; it
fails without the fix.

The older per-forge job failures (host verify, push) are WO-2's and are
untouched here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N6my4F3ohjwFReLW8cYYqC
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 30bb56ac-8d66-4733-9244-094cd73edcdc
📥 Commits

Reviewing files that changed from the base of the PR and between 3c00687 and 38e4d91.

⛔ Files ignored due to path filters: 1
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing: 4
  • .github/workflows/ci-pipeline.yml
  • .github/workflows/mirror.yml
  • scripts/relock-standards-pin.sh
  • scripts/tests/relock-standards-pin-test.sh

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

📜 Recent review details
⏰ Context from checks skipped due to timeout: 44
  • GitHub Check: Call CI Pipeline / Detect ecosystems
  • GitHub Check: Call CI Pipeline / Secret scanning / gitleaks
  • GitHub Check: analyze-js / analyze
  • GitHub Check: Call CI Pipeline / Secret scanning / shell-secrets
  • GitHub Check: scan / gitleaks
  • GitHub Check: scan / rust-secrets
  • GitHub Check: analyze-actions / analyze
  • GitHub Check: Call CI Pipeline / Secret scanning / rust-secrets
  • GitHub Check: scorecard / Run Scorecard PR
  • GitHub Check: Repo self-tests
  • GitHub Check: governance / Debt ratchet
  • GitHub Check: scan / shell-secrets
  • GitHub Check: governance / Licence consistency
  • GitHub Check: governance / JS runtimes — pnpm
  • GitHub Check: governance / JS runtimes — bun
  • GitHub Check: governance / JS runtimes — deno
  • GitHub Check: governance / Workflow security linter
  • GitHub Check: governance / Actions lockfile verify
  • GitHub Check: governance / JS runtimes — environment provisions Bun first
  • GitHub Check: governance / Well-Known (RFC 9116 + RSR)
  • GitHub Check: governance / Code quality + docs
  • GitHub Check: governance / Security policy checks
  • GitHub Check: governance / UUID v8 conformance
  • GitHub Check: governance / Live Actions policy (credentialed advisory)
  • GitHub Check: governance / Language / package anti-pattern policy
  • GitHub Check: governance / Trusted-base reduction policy
  • GitHub Check: governance / Exemption ratchet
  • GitHub Check: governance / UUID v7 conformance
  • GitHub Check: Detect proof changes
  • GitHub Check: Reject non-v8 UUID literals
  • GitHub Check: governance / Guix packaging policy (Nix retired)
  • GitHub Check: governance / Check Workflow Staleness
  • GitHub Check: Verify CLAIMS.a2ml + conformance
  • GitHub Check: AffineScript Verify
  • GitHub Check: Lockfile self-consistency
  • GitHub Check: scan / Hypatia Neurosymbolic Analysis
  • GitHub Check: uses ⊆ actions.lock
  • GitHub Check: governance / Allowlist Preflight
  • GitHub Check: Check Documentation Format
  • GitHub Check: K9-SVC contractile validation
  • GitHub Check: Report non-canonical JSON (report-only)
  • GitHub Check: Converted JSON stays canonical
  • GitHub Check: SPARK Theatre Gate
  • GitHub Check: semgrep-cloud-platform/scan
🔇 Additional comments: 4
.github/workflows/ci-pipeline.yml: 1

322-322: LGTM!

Also applies to: 333-333

.github/workflows/mirror.yml: 1

17-17: LGTM!

scripts/relock-standards-pin.sh: 1

73-77: LGTM!

Also applies to: 225-225

scripts/tests/relock-standards-pin-test.sh: 1

183-189: LGTM!

📝 Summary

Summary by CodeRabbit

  • Chores

    • Updated automated security scanning, Rust CI, and repository mirroring workflows to use refreshed, verified workflow versions.
  • Bug Fixes

    • Improved standards pin handling so commented examples no longer affect lock updates or consistency checks.
  • Tests

    • Added regression coverage confirming that active workflow references are repinned correctly when commented references use a different version.

Three reusable workflow references now point to commit d55304a01b5260b0511aae0d14ed8b8770b00293. Standards pin relocking now excludes commented uses: examples from pin extraction and consistency checks.

Changes: Reusable workflow pins and relocking

Layer / File(s) Summary
Update reusable workflow references
.github/workflows/ci-pipeline.yml, .github/workflows/mirror.yml
The secret-scanning, Rust CI, and mirror reusable workflow references now use commit d55304a01b5260b0511aae0d14ed8b8770b00293.
Filter active pins during relocking
scripts/relock-standards-pin.sh, scripts/tests/relock-standards-pin-test.sh
The script extracts pins from active uses: lines for lock consistency checks. A regression test verifies that a commented example does not prevent the active caller from being recorded under its new commit.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 38e4d

The workflow pin updates and relocking changes are synchronized and ready to merge.

Security architecture risk: 🔵 Low · up to 38e4d

The updated workflows retain their existing permissions, explicit secret mappings, and invocation contracts. Mirror checkouts stop persisting credentials, and lock validation remains fail-closed. No introduced security defect was identified. The remaining uncertainty concerns the updated third-party toolchain action and behavior in live CI environments.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The sensitive execution scope remains the caller repository's CI environment and configured mirror destinations reachable with its seven explicitly passed credentials. The PR does not add secret inheritance, new destination-selection inputs, or broader permission declarations. Actual credential privileges and enabled destinations are not established by the source.

Trust Boundaries and Controls

  • observed — The relocker and existing lock-sync consumer both recognize anchored active uses declarations. Ignoring commented examples therefore aligns the producer and consumer contract; active callers still participate in stale-pin and exact lock-entry validation.

Resilience and Maintainability Implications

  • observed — Validation failures occur before the final lock write, and remote relock refusal prevents landing. However, the final write uses direct file redirection rather than atomic replacement, so interruption during that write is not covered by the validation-failure guarantee. This limitation is unchanged from the PR base.
Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly identifies the main change: re-pinning the mirror and CI workflows away from an unreachable commit.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (2 skipped: 2 …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description check Passed The pull request description directly explains the workflow pin updates, the relocking script change, the regression test, and the verification results. It matches the changeset and objectives.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (2 skipped: 2 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

DEED–K9 green

🟢 conformant · commit b3862040a6ba · run 39424346730

Category Status Pass Fail Indeterminate N/A Since previous revision
DEED syntax 🟢 conformant 4 0 0 0 ↔ unchanged
K9 contract typecheck 🟢 conformant 1 0 0 0 ↔ unchanged
K9 validator self-test 🟢 conformant 37 0 0 0 ↔ unchanged
K9 positive/negative controls 🟢 conformant 27 0 0 0 ↔ unchanged
K9 live corpus (L0–L2) 🟢 conformant 12 0 0 2 ↔ unchanged
K9 live corpus (L0–L2): 2 finding(s) / scope notes
  • 2-protocols/k9-coordination/examples/minimal.k9 — not_applicable: Routed to another dialect; not validated as a K9 contract.
  • coordination.k9 — not_applicable: Routed to another dialect; not validated as a K9 contract.

Scope: DEED syntax and K9 contracts L0–L2. L3 signature verification and routed coordination dialects are not certified. Green is limited to this scope. Orange is missing evidence; grey is an explicit scope exclusion. Logs and report.json are in the dated conformance-evidence artifact on the linked run.

@hyperpolymath
hyperpolymath marked this pull request as ready for review October 20, 2026 12:32
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T12:51:12.776072Z b386204 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 20, 2026 12:37

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 38e4d91a85

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/relock-standards-pin.sh Outdated
…pin scan

The previous commit anchored the pin scan at `^\s*-?\s*uses:` to stop
counting commented caller examples. That also dropped one-line flow
(KYAML) calls such as `build: { uses: "hyperpolymath/standards/…@<sha>" }`,
which the old unanchored scan found: a relock of such a caller would
refuse with no full target pin. Skip full-line comments instead, and take
the pin wherever a `uses:` key holds it, block or flow style. New test
case; it fails on the anchored scan. (Codex review on #1317.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N6my4F3ohjwFReLW8cYYqC
@sonarqubecloud

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b3862040a6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/relock-standards-pin.sh
@hyperpolymath
hyperpolymath merged commit 0d47b89 into main Oct 20, 2026
56 of 58 checks passed
@hyperpolymath
hyperpolymath deleted the claude/hopeful-cray-40atxw branch October 20, 2026 12:51
hyperpolymath pushed a commit that referenced this pull request Oct 20, 2026
…ent lines

Root-cause fix for two Codex findings on #1317. Each narrowing of the
pin scan (`^\s*uses:`, then `uses:` after `{`, `,` or space) dropped a
YAML form main's unanchored scan found: first one-line flow calls, then
quoted keys (`"uses": …@<sha>`). The only line that needed excluding
was a full-line comment, so standards_pins is now main's match with
those lines removed, and nothing else changed. New test case for a
quoted key; each earlier version fails the case it missed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N6my4F3ohjwFReLW8cYYqC
hyperpolymath added a commit that referenced this pull request Oct 20, 2026
…ent lines (#1319)

## Summary

This follows up #1317, which merged at `b3862040` before this fix was
pushed. It answers Codex's second finding on #1317 (quoted `uses` keys).

#1317 changed `standards_pins` so that commented caller examples no
longer count as pins. Each version it shipped matched pins more narrowly
than main's original scan, and each one dropped a YAML form the original
found:
- `^\s*uses:` dropped one-line flow calls, `build: { uses: "…@<sha>" }`;
- `uses:` after `{`, `,` or a space (what merged) drops quoted keys,
`"uses": …@<sha>`. `apply-workflow-pins-remote.sh` still rewrites the
SHA in such a call, but the relock then refuses with "no workflow pins".

The only line that needed excluding was a full-line comment.
`standards_pins` is now main's original match with those lines removed,
and nothing else changed:

```sh
standards_pins() { grep -hvE '^[[:space:]]*#' "$@" 2>/dev/null | grep -oE "$PIN_RE"; }
```

## Type of change

- [x] 🐛 Bug fix (non-breaking change that fixes an issue)
- [x] 🔧 Build / CI / tooling

## How has this been verified?

`bash scripts/tests/relock-standards-pin-test.sh` → `PASS`, with one new
case: "a quoted uses key is counted as a pin". I ran the suite against
the script at each earlier version. Each fails exactly the case it
missed:

| Script at | Result |
|---|---|
| main before #1317 | FAIL: commented caller example |
| `38e4d91a` | FAIL: flow-style call |
| `b3862040` (merged) | FAIL: quoted `uses` key |
| this PR | PASS |

On this repo, `relock-standards-pin.sh --to d55304a` reports "already
keyed" and `check-lock-sync.sh` reports in sync. `shellcheck -S warning`
on the script is clean.

## Checklist

- [ ] My commits are **signed**. The session's managed signing is
inactive (see CLAUDE.md).
- [x] I ran the project's own checks/tests locally and they pass.
- [x] No new files; no SPDX or licence change.
- [x] Docs: no public claim changes.
- [x] No soundness hole introduced. The scan matches what main's did,
except full-line comments.

## Notes for reviewers

A `run:` body or a trailing comment that quotes a pin still counts, as
it always has. Excluding those would need a YAML parser. This script
greps everywhere else, so I kept it to the one exclusion that was
actually breaking relocks.

Separately, #1317 works on main: Mirror run 1169 on `0d47b892` started
under its real name and resolved `mirror-reusable.yml@d55304a`.

---
_Generated by [Claude
Code](https://claude.ai/code/session_01N6my4F3ohjwFReLW8cYYqC)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants