Repository navigation
fix(ci): defer actions.lock verification to governance in the workflow linter - #113
Conversation
) #110 bumped four `uses:` refs and left actions.lock pinning the old ones: - github/codeql-action v4.38.2 -> v4.38.3 - hyperpolymath/smtp-notify-action v0.3.0 -> v0.5.0 - actions/upload-artifact v7.0.1 -> v7.0.2 - actions/download-artifact v8.0.1 -> v8.0.2 Since then "Governance / Actions lockfile verify" has been red on main. GitHub also refuses to start codeql.yml and static-analysis-gate.yml (startup_failure on every run), so the required "analyze (actions, none)" check never reports, and CodeQL has not scanned main since 11 Oct. Only actions.lock changes. It is the output of the estate repair order: gh actions-lock v0.2.0, relock-sha-keys, complete-job-refs, close-lock and prune-stale, run by `regen_lock` from standards scripts/regen-dependabot-locks.sh at ae36881b. GitHub Actions ran it on main e81d057, because Claude Code sessions cannot reach GitHub GraphQL. The lockfile schema moves v0.0.2 -> v0.0.3. Dependabot's lock support reads both versions. Verified: - in CI, check-actions-lock-gate.sh at this repo's governance pin (standards 8f2ee508): pass; - here, the decoded bytes match the CI job's SHA-256 (6a06b778...); - the same gate passes locally; - `gh actions-lock --verify-local` reports only the 7 known reusable-workflow false positives, which the gate accepts as coverage. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…w linter The copied "Verify immutable action lockfile" step pinned its own gh-actions-lock v0.1.6 binary. v0.1.6 cannot read lockfile v0.0.3, which every current `gh actions-lock` writes, so the step failed whenever a current tool refreshed the lock (proof-burrower#111/#112). It also kept a second version pin that drifts from the estate's. Governance already verifies the lock through standards scripts/update-actions-lock.sh. That is one tested implementation, with one pin, and it accepts reusable-workflow coverage. The step is removed and a comment points at the gate. No `uses:` changes, so actions.lock is untouched. Owner decision 2026-10-14: drop the lock step from copied linters; the estate moves to gh-actions-lock v0.2.0 in hyperpolymath/standards#1250. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
📜 Recent review details
📝 Summary
Merge Risk: ⚪ Minimal · up to
|
…on-th4e9w-lock Ports #113 (drop the copied pinned lock step) so lint-workflows stops failing on this PR's lockfile v0.0.3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
…on-th4e9w Ports #113 (drop the copied pinned lock step) so lint-workflows stops failing on this PR's lockfile v0.0.3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
|
The first run here failed governance / Actions lockfile verify, and CodeQL The fix is #112, and I've ported it here. This branch now fast-forwards to #112's head (79d3836). #112 already carried this PR's linter change, ported earlier, so the two PRs now have the same content. Merging either one makes the other a no-op. Generated by Claude Code |
…YAML / I-JSON+JCS / UUID v8 (#111) ## Summary Adds a root `CLAUDE.md` that records the owner's norms of 2026-10-14 for agent sessions in this repository. It goes at the root because `.claude/` is gitignored here. echidna and echidnabot carry the same text. ## Changes - `CLAUDE.md` (new): - decisions are asked with the selector tool; - work lands as stacked PRs; - findings are fixed at source. The exemption ratchet admits ledger growth only with a `Ratchet-exception:` line naming that ledger. - The format standards point at their normative source in `hyperpolymath/standards` rather than restating it: - `3-practice/YAML-POLICY.adoc` §3.4: KYAML, `.kyaml` (D280, D307, D293); - the workflow gate in standards#1025; - `3-practice/JSON-POLICY.adoc`: I-JSON as JCS plus a final LF (D306); - ADR-008: UUID v8. It is scoped as the owner accepted from review: v7 records and v8 JCS content ids until the `crates/burrower-core/src/ids.rs` migration lands. The `actions.lock` regeneration this PR used to carry (ported from #112) is now on `main` via #113, together with the workflow-linter change. Since the merge of `main` (ae9a0a9), this PR changes `CLAUDE.md` only. ## RSR Quality Checklist ### Required - [x] Tests pass (docs only) - [x] Code is formatted (n/a) - [x] Linter is clean (n/a) - [x] No banned language patterns - [x] No `unsafe` blocks without `// SAFETY:` comments - [x] No banned functions - [x] SPDX license headers present on all new/modified source files - [x] No secrets, credentials, or `.env` files included ### As Applicable - [x] Documentation updated for user-facing changes - [ ] Others: n/a The repo's migration to these formats follows in its own stacked PRs. That includes the `ids.rs` move to profiles T and C, with the shared `proof-goal` domain from standards#1246, and the ledger `goal_id` migration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3 --------- Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Summary
"Workflow Security Linter / lint-workflows" has failed on every
mainpush since 2026-10-05, and now on #111/#112. It failed for two reasons, both caused by the copied "Verify immutable action lockfile" step:Version skew. The step pins its own gh-actions-lock v0.1.6, which cannot read lockfile v0.0.3:
Every current
gh actions-lockwrites v0.0.3, including the regeneration in fix(ci): regenerate actions.lock after the Dependabot actions bump (#110) #112.Duplicate verifier. It ran a second lock check beside governance's, with its own version pin. That pin drifts from the estate's, and the raw tool doesn't apply the reusable-workflow coverage rule that governance's verifier applies.
Governance's Actions lockfile verify (standards
scripts/update-actions-lock.sh) is the single tested implementation. This PR removes the duplicate step and leaves a comment pointing at the gate.Owner decision 2026-10-14 (selector): drop the lock step from copied linters, and move the estate to gh-actions-lock v0.2.0 (hyperpolymath/standards#1250). Pilot repos first: proof-burrower, echidna, echidnabot. The rest of the estate follows in the wave.
Changes
.github/workflows/workflow-linter.yml: the pinned-binary lock step is replaced by a comment. The SPDX, permissions and duplicate-workflow checks are unchanged.uses:changes, soactions.lockis untouched.RSR Quality Checklist
Required
unsafeblocks without// SAFETY:comments (n/a)..envfiles included.As Applicable
.machine_readable/descriptiles/STATE.a2mlupdated (n/a; A2ML is retired)Testing
--rescan --no-fixon docs(claude): record owner norms — selector questions, stacked PRs, KYAML / I-JSON+JCS / UUID v8 #111's lock exits 2 with the message above.actions-lock-verifyjob passed on docs(claude): record owner norms — selector questions, stacked PRs, KYAML / I-JSON+JCS / UUID v8 #111/fix(ci): regenerate actions.lock after the Dependabot actions bump (#110) #112.mainlock is stale (chore(deps): bump the actions group with 4 updates #110). It stays red under governance's gate until fix(ci): regenerate actions.lock after the Dependabot actions bump (#110) #112 lands, which is the intended behaviour.🤖 Generated with Claude Code
https://claude.ai/code/session_019a95kk88TZ1iegsBK3kox3
Generated by Claude Code