Skip to content

fix(ci): SPDX check must scan past the actions-lock banner; repoint standards links - #107

Merged
hyperpolymath merged 1 commit into
mainfrom
arena/41411683-casket-ssg
Oct 31, 2026
Merged

hyperpolymath merged 1 commit into
mainfrom
arena/41411683-casket-ssg

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Two independent fixes, both verified.


1. lint-workflows was red on main with exit code 18 — a false failure

gh actions-lock prepends its banner as line 1, pushing the SPDX tag to line 2:

1  # This workflow is managed by gh actions-lock.
2  # SPDX-License-Identifier: MPL-2.0
3  # This workflow is managed by gh actions-lock.

The SPDX step read only head -1, counted one error per file, and ended with
exit $errors — so 18 workflows became exit 18, matching the CI annotation exactly:

ERROR: .github/workflows/casket-ci.yml missing SPDX header
... (18 total)
SPDX errors=18

All 18 files do carry the header. A red check on a compliant tree, caused by
two estate tools disagreeing about line 1. Fixed by scanning the first five lines.

Verified in both directions:

Case Result
Current tree (SPDX on line 2) 18 errors -> 0
Negative control, no SPDX in first 5 lines still fails, errors=1
SPDX on line 1 still passes
Real CI on this PR's head lint-workflows SUCCESS

This failure predates and is independent of #106; the Dependabot branch inherits
it from main. This PR unblocks #106.

2. hyperpolymath/standards links pointed at a path that no longer exists

The repository moved to the metadatastician organisation:

gh api repos/hyperpolymath/standards --jq .full_name  -> metadatastician/standards
gh api orgs/hyperpolymath                             -> 404
gh api users/hyperpolymath                            -> type=User
gh api orgs/metadatastician                           -> type=Organization

The old URLs work only because GitHub redirects them. Every destination was
checked at the new owner before rewriting, so these move to a place that
exists rather than to a fresh 404:

Target Verified
docs/SIGNING-POLICY.adoc file, 5657b
.github/workflows/changelog-reusable.yml file, 12170b
templates/cliff.toml file, 3234b
issues/206 "feat(changelog): add git-cliff config + reusable workflow"

Deliberately not changed

The five uses: hyperpolymath/standards/... reusable-workflow refs. They are
functional CI, both pinned SHAs (da2c748a, 84355587) verified still reachable,
and they are managed by gh actions-lock. Re-pointing them is a CI change that
belongs in its own review, not folded into a docs fix.

Links whose targets are missing at the new owner too, so changing the owner
would not fix them:

  • component-readiness-grades — Justfile:208, .machine_readable/contractiles/Justfile:208
  • all five under self-validating/ — .machine_readable/self-validating/README.adoc
  • a2ml, k9-svc — PHASE2-ROADMAP.adoc
  • docs/audits/* — docs/tech-debt-2026-05-26.adoc

These are dead links, not stale-owner links. They need a decision about where
that content went. Flagging rather than silently "fixing" them.


Cosmetic, for whoever owns gh actions-lock

It writes its banner twice — lines 1 and 3, with the SPDX tag between them.
That duplication is what put the identifier on line 2 and broke the linter.

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 22 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 611c2cab-9ef0-496a-b15d-ff45badabc98
Commits

Reviewing files that changed from the base of the PR and between 6402300 and 519891a.

Files selected for processing: 3
  • .github/CONTRIBUTING.md
  • .github/workflows/workflow-linter.yml
  • CHANGELOG.adoc

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: c13d43a5-26d1-496e-892d-dc893bc97e90
Commits

Reviewing files that changed from the base of the PR and between dc91595 and 6402300.

Files selected for processing: 2
  • .github/CONTRIBUTING.md
  • CHANGELOG.adoc

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: 2
  • GitHub Check: Check License Compliance
  • GitHub Check: semgrep-cloud-platform/scan
Additional comments: 2
.github/CONTRIBUTING.md: 1

127-127: LGTM!

CHANGELOG.adoc: 1

6-9: LGTM!

Also applies to: 49-49

📝 Summary

Summary by CodeRabbit

  • Bug Fixes
    • Workflow files with an SPDX header in the first five lines are now recognised by the header check, reducing missed headers when the declaration is not on the first line.
  • Documentation
    • Updated links in the contributing guidance and changelog to point to the current standards repository, including the referenced workflow and configuration history.

The workflow linter now searches the first five lines of each workflow file for an SPDX identifier. The contribution guide and changelog now link to metadatastician/standards.

Changes: Workflow linting

Layer / File(s) Summary
SPDX header scan
.github/workflows/workflow-linter.yml
The check searches the first five lines of each workflow file for an SPDX identifier. It retains the existing reporting and exit-code handling.

Standards links

Layer / File(s) Summary
Update standards links
.github/CONTRIBUTING.md, CHANGELOG.adoc
The signing policy, workflow, template, and cliff.toml links now point to metadatastician/standards.

Priority: Normal

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

Change: Bug fix

Merge Risk: Minimal · previous review 64023

No actionable merge-blocking risk remains in the reviewed changes.

Pre-merge checks: Passed 5
Check name Status Explanation
Title check Passed The title clearly identifies both main changes: updating the SPDX check to scan beyond the actions-lock banner and repointing standards links.
Description check Passed The description directly explains the SPDX check fix, the standards-link updates, verification results, and deliberate exclusions.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
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.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (2 skipped: 2 unsupported.)

  • 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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 30, 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-30T16:21:56.592423Z 7705953 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.

@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: dc91595110

ℹ️ 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".

# on line 2. Checking only line 1 flagged all 18 workflows as
# missing a header they in fact carry, and `exit $errors` turned
# that into exit code 18 -- a red check on a clean tree.
if ! head -5 "$f" | grep -q "SPDX-License-Identifier"; then

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Match an actual SPDX header comment

When a workflow lacks a header but contains the substring within its first five lines—for example, name: SPDX-License-Identifier Audit or # SPDX-License-Identifier intentionally omitted—this widened check now accepts it as compliant. Anchor the match to the repository's header syntax (such as ^# SPDX-License-Identifier:) so scanning past the actions-lock banner does not let ordinary YAML or explanatory prose bypass the license gate.

Useful? React with 👍 / 👎.

@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 30, 2026 15:29
@hyperpolymath hyperpolymath changed the title fix(ci): SPDX header check must scan past the actions-lock banner fix(ci): SPDX check must scan past the actions-lock banner; repoint standards links Oct 30, 2026
auto-merge was automatically disabled October 30, 2026 16:00

Pull request was closed

@hyperpolymath
hyperpolymath force-pushed the arena/41411683-casket-ssg branch from 6402300 to 3dcade8 Compare October 30, 2026 16:00
…tandards links

1. lint-workflows was red on main with exit code 18 -- a false failure.

gh actions-lock prepends its banner as line 1, pushing the SPDX tag to line 2,
while the check read only `head -1`. The step counts one error per file and ends
with `exit $errors`, so 18 workflows became exit 18. All 18 files do carry the
header. Scan the first five lines instead.

Verified in both directions: current tree 18 errors -> 0; a negative control with
no SPDX in the first five lines still fails; SPDX on line 1 still passes.

This failure predates and is independent of #106, which inherits it from main.

2. hyperpolymath/standards no longer exists at that path -- the repository moved
to the metadatastician organisation. The old URLs work only via GitHub redirect.

Every destination was checked at the new owner before rewriting, so these move to
a place that exists rather than to a fresh 404:

  docs/SIGNING-POLICY.adoc                  file  5657b
  .github/workflows/changelog-reusable.yml  file 12170b
  templates/cliff.toml                      file  3234b
  issues/206                                feat(changelog): add git-cliff config

Deliberately unchanged: the five `uses: hyperpolymath/standards/...` reusable
refs (functional CI, both pinned SHAs still resolve, managed by gh actions-lock);
and links whose targets are missing at the new owner too, so changing the owner
would not fix them (component-readiness-grades, self-validating/*, a2ml, k9-svc,
docs/audits/*). Those are dead links, not stale-owner links.
@hyperpolymath hyperpolymath reopened this Oct 30, 2026
@hyperpolymath
hyperpolymath force-pushed the arena/41411683-casket-ssg branch from 7705953 to 519891a Compare October 30, 2026 16:22
@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 30, 2026 17:18
@hyperpolymath
hyperpolymath merged commit 6a1ecc1 into main Oct 31, 2026
10 checks passed
@hyperpolymath
hyperpolymath deleted the arena/41411683-casket-ssg branch October 31, 2026 22:42
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.

1 participant