Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 15 additions & 8 deletions .github/workflows/actions.lock
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,12 @@ workflows:
- 'actions/upload-artifact@v7.0.2'
- 'step-security/harden-runner@v2.22.3'
'.github/workflows/governance.yml':
- 'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7'
- 'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85'
'.github/workflows/hypatia-remediation-sweep.yml':
- 'actions/upload-artifact@v7.0.2'
- 'step-security/harden-runner@v2.22.3'
'.github/workflows/hypatia-scan.yml':
- 'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7'
- 'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85'
'.github/workflows/inbox-steward-intake.yml':
- 'actions/checkout@v7.0.1'
- 'step-security/harden-runner@v2.22.3'
Expand All @@ -68,7 +68,7 @@ workflows:
- 'actions/upload-artifact@v7.0.2'
- 'erlef/setup-beam@v1.24.1'
'.github/workflows/mirror.yml':
- 'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7'
- 'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85'
'.github/workflows/pages.yml':
- 'actions/checkout@v7.0.1'
- 'actions/deploy-pages@v5.0.1'
Expand Down Expand Up @@ -108,9 +108,10 @@ workflows:
- 'dtolnay/rust-toolchain@v1'
- 'swatinem/rust-cache@v2.9.3'
'.github/workflows/scorecard.yml':
- 'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7'
- 'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85'
'.github/workflows/secret-scanner.yml':
- 'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7'
- 'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85'
'.github/workflows/standards-integration.yml': []
'.github/workflows/security-policy.yml':
- 'actions/cache@v6.1.0'
- 'actions/checkout@v7.0.1'
Expand Down Expand Up @@ -199,6 +200,11 @@ dependencies:
commit: 'sha1-368f82528645a54fb793d4d04e342629a3f51346'
owner_id: 44036562
repo_id: 438112499
'actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333':
ref: 'v8.0.2'
commit: 'sha1-9000827ccba6bdab643e8b6fd33ac0654aef8333'
owner_id: 44036562
repo_id: 192626254
'actions/download-artifact@v8.0.2':
ref: 'v8.0.2'
commit: 'sha1-9000827ccba6bdab643e8b6fd33ac0654aef8333'
Expand Down Expand Up @@ -367,14 +373,15 @@ dependencies:
commit: 'sha1-e384daf6167a7a7567642d6a62060106244d2413'
owner_id: 6759885
repo_id: 1352485172
'metadatastician/standards@333b06a01db1874ffedb2de1bfabb195640927c7':
ref: '333b06a01db1874ffedb2de1bfabb195640927c7'
commit: 'sha1-333b06a01db1874ffedb2de1bfabb195640927c7'
'metadatastician/standards@1725bebd3773ea25627479f813283abf1c497a85':
ref: '1725bebd3773ea25627479f813283abf1c497a85'
commit: 'sha1-1725bebd3773ea25627479f813283abf1c497a85'
owner_id: 297579217
repo_id: 1116521501
uses:
- 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9'
- 'actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1'
- 'actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333'

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 Add the exact transitive dependency record

This new nested reference has no matching top-level dependency record: the lock defines only actions/download-artifact@v8.0.2 at lines 203–207, not the exact @9000827... key used here. Hypatia.Rules.ActionsLock.validate_transitive_dependencies/1 requires every nested uses value to match a dependency key exactly (lib/rules/actions_lock.ex:574-584), so the repository's authoritative-lock test and Governance lockfile verification reject this lock on every run. Regenerate the lockfile so it includes the exact-keyed transitive record.

Useful? React with 👍 / 👎.

- 'actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9'
- 'denoland/setup-deno@22d081ff2d3a40755e97629de92e3bcbfa7cf2ed'
- 'dtolnay/rust-toolchain@683b588c487a69d01f6c6ddf40f036ff682cc2c8'
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/governance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,17 @@ permissions:

jobs:
governance:
uses: metadatastician/standards/.github/workflows/governance-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
# Standards pin (immutable, do not float): 1725beb… is the first
# standards revision whose actions allowlist contains
# `metadatastician/standards/.github/workflows/*@*` and whose mirror
# reusable gates SSH-host verification on the key being configured.
# The previous pin (333b06a…) lacked that pattern, so Allowlist
# Preflight failed on the five canon reusables themselves — a
# pinned-policy mismatch (category 3), not five genuine findings.
# Bump all five standards callers + actions.lock together; see
# docs/consumers/standards-governance.adoc and
# test/standards-integration-test.sh.
uses: metadatastician/standards/.github/workflows/governance-reusable.yml@1725bebd3773ea25627479f813283abf1c497a85
# Scanner pin: hypatia scans itself with its own main branch. On a PR that
# is the base commit; on push, schedule or dispatch it is the commit being
# run. It is never the PR head, so a PR cannot weaken the rules that gate
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/hypatia-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ permissions:

jobs:
hypatia:
uses: metadatastician/standards/.github/workflows/hypatia-scan-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
uses: metadatastician/standards/.github/workflows/hypatia-scan-reusable.yml@1725bebd3773ea25627479f813283abf1c497a85
# Scanner pin: hypatia's own main branch, never the PR head. See governance.yml.
with:
hypatia-ref: ${{ github.event.pull_request.base.sha || github.sha }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ permissions:

jobs:
mirror:
uses: metadatastician/standards/.github/workflows/mirror-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
uses: metadatastician/standards/.github/workflows/mirror-reusable.yml@1725bebd3773ea25627479f813283abf1c497a85
# Only the seven forge keys the callee declares (standards#1108 §6b).
secrets:
GITLAB_SSH_KEY: ${{ secrets.GITLAB_SSH_KEY }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/scorecard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ permissions:

jobs:
scorecard:
uses: metadatastician/standards/.github/workflows/scorecard-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
uses: metadatastician/standards/.github/workflows/scorecard-reusable.yml@1725bebd3773ea25627479f813283abf1c497a85
permissions:
actions: read
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/secret-scanner.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ jobs:
contents: read
pull-requests: write
actions: read
uses: metadatastician/standards/.github/workflows/secret-scanner-reusable.yml@333b06a01db1874ffedb2de1bfabb195640927c7
uses: metadatastician/standards/.github/workflows/secret-scanner-reusable.yml@1725bebd3773ea25627479f813283abf1c497a85
69 changes: 69 additions & 0 deletions .github/workflows/standards-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# This workflow is managed by gh actions-lock.
# SPDX-License-Identifier: MPL-2.0
# Standards-integration contract gate, with zero third-party actions
# (same pattern as cicd-squabbler.yml): reusable/action resolution is
# itself one of the failure modes under test, so this gate must be able
# to run — and to fail honestly — when that resolution is broken.
# Exit semantics: 0 = contract holds; 1 = config failure (category 3);
# 3 = required tool unavailable. 3 is a failure of this gate, never a
# pass: skipped or unavailable work is not successful analysis.
name: Standards Integration

on:
pull_request:
push:
branches: [main]
workflow_dispatch:

concurrency:
group: standards-integration-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
contract:
name: Standards integration contract
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Check out exact event commit without external action
env:
REPO: ${{ github.repository }}
SHA: ${{ github.event.pull_request.head.sha || github.sha }}

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 Test the pull request merge commit

On pull_request runs this explicitly checks out the head commit rather than the synthesized merge commit; GitHub documents that github.sha is the pull request merge commit while github.event.pull_request.head.sha tests the head without simulating the merge (GitHub Docs). When the base branch has changed since the PR branched, this gate can therefore pass a stale head-only combination of callers and lockfile even though the tree that will be merged violates the contract, leaving the required check green until the post-merge push fails.

Useful? React with 👍 / 👎.

TOKEN: ${{ github.token }}
run: |
set -euo pipefail
AUTH="AUTHORIZATION: basic $(printf 'x-access-token:%s' "$TOKEN" | base64 -w0)"
git init -q .
git remote add origin "https://github.com/$REPO.git"
git -c http.extraheader="$AUTH" fetch -q --depth 1 origin "$SHA"
git checkout -q FETCH_HEAD

- name: Run integration contract tests (positive, negative, unavailable-tool)
env:
GH_TOKEN: ${{ github.token }}
run: |
set -uo pipefail
rc=0
bash test/standards-integration-test.sh || rc=$?
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
if [ "$rc" -eq 3 ]; then
echo "::error::Standards-integration tooling unavailable (exit 3) — not a pass"
exit 1
fi
if [ "$rc" -ne 0 ]; then
echo "::error::Standards-integration contract failed (exit $rc, category=config)"
exit 1
fi
rc=0
bash scripts/standards-integration/check-standards-integration.sh --root . --verify-remote || rc=$?
if [ "$rc" -eq 3 ]; then
echo "::error::Published pin could not be verified (exit 3) — not a pass"
exit 1
fi
if [ "$rc" -ne 0 ]; then
echo "::error::Standards integration contract failed remote verification (exit $rc)"
exit 1
fi
echo "outcome=pass category=findings-channel-ready (contract + published pin verified; not a scan result)" >> "$GITHUB_STEP_SUMMARY"
1 change: 1 addition & 0 deletions README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ by any dispatch path, and the CI blockage currently stopping the Rust lane.
* link:docs/DEBT-REGISTER.adoc[Debt register] — what is broken and what is not gated
* link:docs/governance/ACTIONS-PINNING.adoc[Actions pinning decision] — how `uses:` refs are pinned here (actions.lock, not inline SHAs)
* link:docs/consumers/rsr-oracle.adoc[Consuming the RSR oracle] — the SHA-pinned reusable workflow and the explicit-SSOT contract
* link:docs/consumers/standards-governance.adoc[Consuming the standards governance integration] — the immutable standards pin, failure-category taxonomy, runtime prerequisites and bump handoff for the five shared reusables
* https://github.com/hyperpolymath/hypatia/wiki[Wiki] — getting started, architecture, operations, FAQ
* https://github.com/hyperpolymath/standards/blob/main/PALIMPSEST.adoc[Palimpsest Philosophy] — philosophical underpinnings (lives in hyperpolymath/standards)

Expand Down
Loading
Loading