Skip to content

Ci/workflow contract foundation 20261018 - #1301

Merged
hyperpolymath merged 5 commits into
mainfrom
ci/workflow-contract-foundation-20261018
Oct 19, 2026
Merged

hyperpolymath merged 5 commits into
mainfrom
ci/workflow-contract-foundation-20261018

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Closes #

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature (non-breaking change that adds functionality)
  • 💥 Breaking change (would change existing behaviour)
  • 🕳️ Soundness fix (fixes a checker/proof false-negative)
  • 📖 Documentation
  • 🧹 Refactor / tech debt (behaviour-preserving)
  • ⚡ Performance
  • 🔧 Build / CI / tooling

How has this been verified?

Checklist

  • My commits are signed (git commit -S).
  • I ran the project's own checks/tests locally and they pass.
  • New files carry the correct SPDX-License-Identifier (code/config MPL-2.0,
    prose CC-BY-SA-4.0); I did not relicense existing files.
  • Docs are updated, and no public claim now overstates what the code does.
  • I have not introduced a soundness hole (or I have flagged where I might have).

Notes for reviewers

hyperpolymath and others added 4 commits October 18, 2026 13:46
…Codex #1283 follow-ups

URGENT — main is startup-failing: #1283 narrowed hypatia-scan.yml to
pass HYPATIA_SCAN_PAT explicitly, but the matching workflow_call
declaration in hypatia-scan-reusable.yml did not land in that commit
(several file edits silently failed to apply; the merge then carried
the partial tree). Passing an undeclared secret is a validation
error, so every hypatia-scan run on e16a231 is `startup_failure`.
This adds the declaration (required: false; built-in-token fallback
unchanged).

Also completes the parts of #1283 that did not land, and addresses
all six Codex review findings on that PR:

- secret-scanner-reusable.yml + mirror-reusable.yml: caller EXAMPLES
  no longer show `secrets: inherit` (examples are what generators
  copy); Radicle comment corrected.
- Packaged scorecard templates (3): grant the callee's declared
  calling-job set (actions: read, id-token: write added) — at the
  re-pinned @8ff9ce65 the old grant would startup-fail.
- Packaged mirror templates (2): narrowed to the 7 named secrets
  (verified declared ⊇ referenced at their @210f14e7 pin); their test
  exemptions deleted. The 2 packaged hypatia exemptions stay: their
  pin predates the declaration added here.
- CICD-WORKFLOW-CATALOG.md: governance example now includes the
  callee's declared actions: read.
- tests/test_secret_scanner_no_inherit.sh: asserts (a) caller-example
  comment blocks contain no inherit, (b) a narrowed caller passes
  only secrets its callee declares (the exact guard that would have
  caught the hypatia break pre-merge), (c) the checkout pin is keyed
  in the scanner's OWN actions.lock section, not merely anywhere in
  the file. Mutation-checked: removing the declaration or re-adding
  inherit to the example both fail the test.

Ref: #1108 §6b, #1283

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
…YPATIA_SCAN_PAT

- .github/workflows/actions.lock: replace self-SHA ref: values on the four
  remaining leaf action entries with their upstream release tags:
  * github/codeql-action@b96794f -> ref: 'v4.38.0'
  * goto-bus-stop/setup-zig@abea47f -> ref: 'v2.2.1'
  * Swatinem/rust-cache@6323deb -> ref: 'v2.9.2'
  * webfactory/ssh-agent@e838748 -> ref: 'v0.10.0'
- .github/workflows/hypatia-scan-reusable.yml: declare optional workflow_call
  secret HYPATIA_SCAN_PAT (required: false) to match hypatia-scan.yml (#1283)
  and prevent startup_failure (0 jobs).
- scripts/relock-sha-keys.sh: prefer symbolic (tag/branch) ref: over self-SHA
  ref: when deduplicating merged SHA-keyed records in Step 4, and avoid
  gawk-only {40} interval syntax.
- scripts/close-lock.sh: resolve upstream release tags when synthesizing leaf
  action records for 40-hex SHA pins instead of emitting self-SHA ref: values.
- scripts/lock-selfcheck.sh, .githooks/validate-actions-lock.sh,
  tests/test_secret_scanner_no_inherit.sh: reject self-SHA ref: values on leaf
  action entries and verify HYPATIA_SCAN_PAT declaration.

Co-authored-by: arena-agent <297053741+arena-agent@users.noreply.github.com>
… tags

Combine both workflow repairs without losing the scoped secret checks. Paginate tag lookup and reject missing, malformed or failed tag responses instead of emitting invalid self-SHA leaf records. Cover failures and pagination in the offline fixture suite.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 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-19T17:12:45.281883Z 67892fb 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.

@coderabbitai

coderabbitai Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

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 47 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
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 42b6bb5d-8c4d-4464-a205-a3e64a1f154e
📥 Commits

Reviewing files that changed from the base of the PR and between 1fed802 and 427eb35.

⛔ Files ignored due to path filters: 1
  • .github/workflows/actions.lock is excluded by !**/*.lock
📒 Files selected for processing: 18
  • .githooks/validate-actions-lock.sh
  • .github/workflows/hypatia-scan-reusable.yml
  • .github/workflows/mirror-reusable.yml
  • .github/workflows/secret-scanner-reusable.yml
  • 1-formats/a2ml/meta/.github/workflows/mirror.yml
  • 1-formats/a2ml/meta/.github/workflows/scorecard-enforcer.yml
  • 1-formats/a2ml/meta/.github/workflows/scorecard.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/mirror.yml
  • 2-protocols/0-ai-gatekeeper/.github/workflows/scorecard.yml
  • CICD-WORKFLOW-CATALOG.md
  • scripts/close-lock.sh
  • scripts/lock-selfcheck.sh
  • scripts/relock-sha-keys.sh
  • scripts/tests/close-lock-test.sh
  • scripts/tests/lock-selfcheck-test.sh
  • scripts/tests/relock-sha-keys-test.sh
  • scripts/tests/validate-actions-lock-test.sh
  • tests/test_secret_scanner_no_inherit.sh
  • 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 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: 427eb35c40

ℹ️ 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 on lines +150 to +152
if (is_sym && !chosen_sym[p1_k]) {
chosen[p1_k] = p1_i
chosen_sym[p1_k] = 1

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Preserve nested dependencies when selecting a symbolic record

When one repository/commit supplies both a reusable workflow and an action, the SHA-keyed record can contain the reusable workflow's required transitive uses: list while the re-keyed tag record is a leaf. Unconditionally choosing the symbolic record here drops the entire SHA-keyed body, including those nested dependencies, so relock-sha-keys.sh produces an incomplete lock that causes callers of the reusable workflow to fail runner lock validation. Keep or merge the nested uses: entries while replacing only the self-SHA ref:.

Useful? React with 👍 / 👎.

Comment thread scripts/close-lock.sh Outdated
tag_ref=""
if "$GH_BIN" api "repos/$owner/$name/tags?per_page=100" --paginate \
--jq '.[] | select(.commit.sha == "'"$sha"'") | .name' > "$SC/tags" 2>/dev/null; then
tag_ref=$(awk '/^[A-Za-z0-9._\/-]+$/ && !(length($0) == 40 && $0 ~ /^[0-9a-f]+$/) { if (!first) first = $0; if (!preferred && $0 ~ /^v?[0-9]+\.[0-9]+\.[0-9]+/) preferred = $0 } END { if (preferred) print preferred; else if (first) print first }' "$SC/tags")

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 Accept valid + and @ characters in tag names

When the only tag pointing at the pinned commit contains SemVer build metadata such as v1.2.3+linux, or another valid name such as release@2026, this whitelist discards the tag returned by GitHub. tag_ref then remains empty, so close-lock.sh skips the dependency and exits 3 even though a usable symbolic tag was resolved, preventing the lock from being closed for actions using these valid tag names.

Useful? React with 👍 / 👎.

Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 19, 2026 17:11
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

DEED–K9 green

🟢 conformant · commit 67892fbde5a5 · run 39291934827

Category Status Pass Fail Indeterminate N/A Since previous revision
DEED syntax 🟢 conformant 4 0 0 0 — no comparable baseline
K9 contract typecheck 🟢 conformant 1 0 0 0 — no comparable baseline
K9 validator self-test 🟢 conformant 34 0 0 0 — no comparable baseline
K9 positive/negative controls 🟢 conformant 27 0 0 0 — no comparable baseline
K9 live corpus (L0–L2) 🟢 conformant 12 0 0 2 — no comparable baseline
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 merged commit cd477f2 into main Oct 19, 2026
66 of 68 checks passed
@hyperpolymath
hyperpolymath deleted the ci/workflow-contract-foundation-20261018 branch October 19, 2026 17:14
@coderabbitai

coderabbitai Bot commented Oct 19, 2026

Copy link
Copy Markdown
Contributor

Add Carrot credits or activate Agent usage billing to use Autofix

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