diff --git a/.github/workflows/bridge-gate.yml b/.github/workflows/bridge-gate.yml index 3d67240b..5e5687c2 100644 --- a/.github/workflows/bridge-gate.yml +++ b/.github/workflows/bridge-gate.yml @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 25 steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: B3 gate -- nix bumps (no network) env: diff --git a/.github/workflows/build-gossamer-gui.yml b/.github/workflows/build-gossamer-gui.yml index a0a39cf9..3cbffe2e 100644 --- a/.github/workflows/build-gossamer-gui.yml +++ b/.github/workflows/build-gossamer-gui.yml @@ -53,7 +53,7 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check required sources run: | @@ -110,10 +110,10 @@ jobs: contents: read steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Node.js - uses: actions/setup-node@v7.0.0 + uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' @@ -134,16 +134,16 @@ jobs: contents: read steps: - name: Checkout Hypatia - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Rust (stable) with wasm32 target - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable targets: wasm32-unknown-unknown - name: Install just - uses: taiki-e/install-action@v2.85.3 + uses: taiki-e/install-action@18b1216eba7f8039b0f8d131d5473787f0edce68 # v2.85.3 with: # Pin an explicit modern just: the Justfile uses `import?` # (optional import, just >= 1.19.0). Unversioned `tool: just` @@ -155,7 +155,7 @@ jobs: - name: Cache Ephapax build id: cache-ephapax - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | /tmp/ephapax @@ -303,7 +303,7 @@ jobs: - name: Upload wasm artifact if: steps.compile.outcome == 'success' && steps.validate.outcome == 'success' && hashFiles('src/ui/public/assets/wasm/hypatia_gui.wasm') != '' - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: hypatia-gui-wasm path: src/ui/public/assets/wasm/hypatia_gui.wasm diff --git a/.github/workflows/ci-health-sweep.yml b/.github/workflows/ci-health-sweep.yml index 0e5b2e95..f0c2d555 100644 --- a/.github/workflows/ci-health-sweep.yml +++ b/.github/workflows/ci-health-sweep.yml @@ -44,7 +44,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run CI-health sweep env: # PAT needs classic `repo` + `workflow` scope (repo admin for the diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e763dcff..0203b508 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,16 +34,16 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: clippy, rustfmt - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" cache-on-failure: true @@ -60,10 +60,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: rustfmt @@ -78,15 +78,15 @@ jobs: needs: [rust-check] steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" cache-on-failure: true @@ -104,21 +104,21 @@ jobs: needs: [rust-test] steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: llvm-tools-preview - name: Install cargo-llvm-cov - uses: taiki-e/install-action@v2.85.3 + uses: taiki-e/install-action@18b1216eba7f8039b0f8d131d5473787f0edce68 # v2.85.3 with: tool: cargo-llvm-cov - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" cache-on-failure: true @@ -127,7 +127,7 @@ jobs: run: cargo llvm-cov --workspace --lcov --output-path lcov.info - name: Upload coverage to Codecov - uses: codecov/codecov-action@v7.0.0 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: files: lcov.info flags: rust @@ -150,7 +150,7 @@ jobs: present: ${{ steps.check.outputs.present }} steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check for registry/hypatia.cabal id: check run: | @@ -175,10 +175,10 @@ jobs: working-directory: registry steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Haskell - uses: haskell-actions/setup@v2.11.0 + uses: haskell-actions/setup@cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553 # v2.11.0 id: setup with: ghc-version: '9.6' @@ -228,15 +228,15 @@ jobs: if: needs.detect-haskell.outputs.present == 'true' steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup HLint - uses: haskell-actions/hlint-setup@v2.4.10 + uses: haskell-actions/hlint-setup@fe9cd1cd1af94a23900c06738e73f6ddb092966a # v2.4.10 with: version: '3.8' - name: Run HLint - uses: haskell-actions/hlint-run@v2.4.10 + uses: haskell-actions/hlint-run@eaca4cfbf4a69f4eb875df38b6bc3e1657020378 # v2.4.10 with: path: registry/ fail-on: warning @@ -256,7 +256,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Parse k9iser.toml + verify declared paths exist run: | @@ -277,7 +277,7 @@ jobs: - name: Upload k9 artefacts if: hashFiles('generated/k9iser/**') != '' - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: k9iser-artefacts path: generated/k9iser/ diff --git a/.github/workflows/clusterfuzzlite.yml b/.github/workflows/clusterfuzzlite.yml index e96eb825..5cad4bcb 100644 --- a/.github/workflows/clusterfuzzlite.yml +++ b/.github/workflows/clusterfuzzlite.yml @@ -31,7 +31,7 @@ jobs: # fuzz tree lands. if: hashFiles('fuzz/Cargo.toml') != '' || hashFiles('.clusterfuzzlite/build.sh') != '' steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - uses: google/clusterfuzzlite/actions/build_fuzzers@v1 @@ -49,7 +49,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: google/clusterfuzzlite/actions/build_fuzzers@v1 with: language: rust diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f4846623..ae6b43e2 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -42,7 +42,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Initialize CodeQL uses: github/codeql-action/init@v4.37.3 diff --git a/.github/workflows/dependabot-automerge.yml b/.github/workflows/dependabot-automerge.yml index 4069b16e..f222adca 100644 --- a/.github/workflows/dependabot-automerge.yml +++ b/.github/workflows/dependabot-automerge.yml @@ -64,7 +64,7 @@ jobs: steps: - name: Fetch Dependabot metadata id: meta - uses: dependabot/fetch-metadata@v3.1.0 + uses: dependabot/fetch-metadata@25dd0e34f4fe68f24cc83900b1fe3fe149efef98 # v3.1.0 with: github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/dogfood-gate.yml b/.github/workflows/dogfood-gate.yml index 71992f09..1abddb1d 100644 --- a/.github/workflows/dogfood-gate.yml +++ b/.github/workflows/dogfood-gate.yml @@ -31,7 +31,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check for A2ML files id: detect @@ -92,7 +92,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check for K9 files id: detect @@ -141,7 +141,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Scan for invisible characters id: lint @@ -205,7 +205,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check for Groove manifest id: groove @@ -266,7 +266,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Generate dogfooding scorecard run: | diff --git a/.github/workflows/estate-rescan.yml b/.github/workflows/estate-rescan.yml index 683eeec6..62ed6d3d 100644 --- a/.github/workflows/estate-rescan.yml +++ b/.github/workflows/estate-rescan.yml @@ -105,7 +105,7 @@ jobs: - name: Cache built panic-attack id: pa_cache - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/panic-attack-bin # Exact-SHA key, no restore-keys: a partial hit would scan with diff --git a/.github/workflows/governance.yml b/.github/workflows/governance.yml index 9311164e..222c627e 100644 --- a/.github/workflows/governance.yml +++ b/.github/workflows/governance.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: MPL-2.0 # SPDX-License-Identifier: PMPL-1.0-or-later # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/hypatia-remediation-sweep.yml b/.github/workflows/hypatia-remediation-sweep.yml index c630dcea..728f1c88 100644 --- a/.github/workflows/hypatia-remediation-sweep.yml +++ b/.github/workflows/hypatia-remediation-sweep.yml @@ -225,7 +225,7 @@ jobs: - name: Upload sweep artifact if: always() - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: hypatia-remediation-sweep-${{ github.run_id }} path: /tmp/targets.jsonl diff --git a/.github/workflows/hypatia-scan.yml b/.github/workflows/hypatia-scan.yml index 22dab2ba..2ff8f057 100644 --- a/.github/workflows/hypatia-scan.yml +++ b/.github/workflows/hypatia-scan.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: MPL-2.0 # SPDX-License-Identifier: PMPL-1.0-or-later # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. diff --git a/.github/workflows/inbox-steward-intake.yml b/.github/workflows/inbox-steward-intake.yml index 4795d361..ab91ba26 100644 --- a/.github/workflows/inbox-steward-intake.yml +++ b/.github/workflows/inbox-steward-intake.yml @@ -53,7 +53,7 @@ jobs: steps: - name: Checkout hypatia - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 token: ${{ secrets.FARM_PAT }} @@ -125,7 +125,7 @@ jobs: steps: - name: Checkout hypatia - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 token: ${{ secrets.FARM_PAT }} @@ -225,7 +225,7 @@ jobs: steps: - name: Checkout hypatia - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 token: ${{ secrets.FARM_PAT }} @@ -300,7 +300,7 @@ jobs: steps: - name: Checkout hypatia - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Send dispatch to .git-private-farm env: diff --git a/.github/workflows/language-blockers.yml b/.github/workflows/language-blockers.yml index 161af348..c4ed9e43 100644 --- a/.github/workflows/language-blockers.yml +++ b/.github/workflows/language-blockers.yml @@ -22,7 +22,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Block npm/bun run: | if [ -f "package-lock.json" ] || [ -f "bun.lockb" ] || [ -f ".npmrc" ]; then @@ -37,7 +37,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Block new TypeScript/JavaScript run: | NEW_TS=$(git diff --name-only --diff-filter=A HEAD~1 2>/dev/null | grep -E '\.(ts|tsx)$' | grep -v '\.gen\.' || true) diff --git a/.github/workflows/merge-orchestrate.yml b/.github/workflows/merge-orchestrate.yml index b20748fb..2588e29b 100644 --- a/.github/workflows/merge-orchestrate.yml +++ b/.github/workflows/merge-orchestrate.yml @@ -37,16 +37,16 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Erlang/Elixir - uses: erlef/setup-beam@v1.24.1 + uses: erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124 # v1.24.1 with: otp-version: '27.0' elixir-version: '1.17' - name: Restore Mix cache - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | deps @@ -61,7 +61,7 @@ jobs: run: mix hypatia.merge_orchestrate --store "$MERGE_ORCH_STORE" - name: Upload decision manifest - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: merge-decisions path: ${{ env.MERGE_ORCH_STORE }}/merge-decisions.jsonl diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index f80f5cbf..dd8d409e 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -21,9 +21,9 @@ jobs: image: ghcr.io/stefan-hoeck/idris2-pack@sha256:f0758996a931fb35d9ecb1de273c4d59dabe2a09b433afc7e357f65a08b7e1ff steps: - name: Checkout Site - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Checkout Ddraig SSG - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: hyperpolymath/ddraig-ssg path: .ddraig-ssg @@ -40,7 +40,7 @@ jobs: fi ./.ddraig-ssg/build/exec/ddraig build src _site https://hyperpolymath.github.io/${GITHUB_REPOSITORY#*/} - name: Upload artifact - uses: actions/upload-pages-artifact@v5.0.0 + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: path: '_site' deploy: @@ -53,4 +53,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v5.0.0 + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 diff --git a/.github/workflows/push-email-notify.yml b/.github/workflows/push-email-notify.yml index c3557f68..cfbd6f28 100644 --- a/.github/workflows/push-email-notify.yml +++ b/.github/workflows/push-email-notify.yml @@ -18,7 +18,7 @@ jobs: timeout-minutes: 5 steps: - name: Send push notification email - uses: dawidd6/action-send-mail@v3.12.0 + uses: dawidd6/action-send-mail@2cea9617b09d79a095af21254fbcb7ae95903dde # v3.12.0 with: server_address: ${{ secrets.SMTP_HOST }} server_port: ${{ secrets.SMTP_PORT }} diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 584545db..bb4438e1 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -23,10 +23,10 @@ jobs: timeout-minutes: 60 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Ruby - uses: ruby/setup-ruby@v1.321.0 + uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' bundler-cache: true @@ -112,7 +112,7 @@ jobs: # Install Rust via SHA-pinned action rather than using a direct # shell-piped installer — satisfies the download_then_run policy. - name: Setup Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: rust-docs @@ -197,7 +197,7 @@ jobs: EOF - name: Upload documentation artifact - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: documentation path: _site @@ -205,7 +205,7 @@ jobs: - name: Upload Pages artifact if: github.event_name != 'pull_request' - uses: actions/upload-pages-artifact@v5.0.0 + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 with: path: _site @@ -219,10 +219,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Ruby - uses: ruby/setup-ruby@v1.321.0 + uses: ruby/setup-ruby@95ef2b042f9d7a56d8268cba8559e2842e2ad01b # v1.321.0 with: ruby-version: '3.2' @@ -285,7 +285,7 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v5.0.0 + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 # ============================================================================ # Documentation Status @@ -321,7 +321,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check file permissions run: | @@ -337,7 +337,7 @@ jobs: find . -type f -size +1M -not -path "./.git/*" | head -10 - name: EditorConfig check - uses: editorconfig-checker/action-editorconfig-checker@v2.2.0 + uses: editorconfig-checker/action-editorconfig-checker@840e866d93b8e032123c23bac69dece044d4d84c # v2.2.0 docs: runs-on: ubuntu-latest @@ -345,7 +345,7 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check documentation run: | MISSING="" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7004384..a1f821dc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: is_prerelease: ${{ steps.version.outputs.is_prerelease }} steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Extract version id: version @@ -96,16 +96,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable targets: ${{ matrix.target }} - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" key: ${{ matrix.target }} @@ -156,7 +156,7 @@ jobs: Compress-Archive -Path dist/* -DestinationPath hypatia-${{ needs.prepare.outputs.version }}-${{ matrix.target }}.zip - name: Upload artifact - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: hypatia-${{ matrix.target }} path: hypatia-${{ needs.prepare.outputs.version }}-${{ matrix.target }}.${{ matrix.archive }} @@ -191,20 +191,20 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Download Rust artifacts - uses: actions/download-artifact@v8.0.1 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: pattern: hypatia-x86_64-* path: artifacts - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4.2.0 + uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 - name: Log in to Container Registry if: ${{ !inputs.dry_run }} - uses: docker/login-action@v4.5.2 + uses: docker/login-action@371161bbe7024a29a25c5e19bfcbc0804fe9ad2c # v4.5.2 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -212,7 +212,7 @@ jobs: - name: Extract Docker metadata id: meta - uses: docker/metadata-action@v6.2.0 + uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ matrix.component.name }} tags: | @@ -223,7 +223,7 @@ jobs: - name: Build and push Docker image id: push - uses: docker/build-push-action@v7.3.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: ${{ matrix.component.context }} file: ${{ matrix.component.dockerfile }} @@ -237,7 +237,7 @@ jobs: - name: Attest container provenance if: ${{ !inputs.dry_run }} - uses: actions/attest-build-provenance@v4.1.1 + uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ matrix.component.name }} subject-digest: ${{ steps.push.outputs.digest }} @@ -259,10 +259,10 @@ jobs: attestations: write steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Download all artifacts - uses: actions/download-artifact@v8.0.1 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: path: artifacts @@ -312,7 +312,7 @@ jobs: cat checksums.txt - name: Create GitHub Release - uses: softprops/action-gh-release@v3.0.2 + uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2 with: name: Hypatia v${{ needs.prepare.outputs.version }} body_path: release-notes.md @@ -322,7 +322,7 @@ jobs: fail_on_unmatched_files: false - name: Attest build provenance - uses: actions/attest-build-provenance@v4.1.1 + uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1 with: subject-path: 'release-assets/*' @@ -345,16 +345,16 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up QEMU - uses: docker/setup-qemu-action@v4.2.0 + uses: docker/setup-qemu-action@96fe6ef7f33517b61c61be40b68a1882f3264fb8 # v4.2.0 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4.2.0 + uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 - name: Log in to GitHub Container Registry - uses: docker/login-action@v4.5.2 + uses: docker/login-action@371161bbe7024a29a25c5e19bfcbc0804fe9ad2c # v4.5.2 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} @@ -362,7 +362,7 @@ jobs: - name: Extract metadata id: meta - uses: docker/metadata-action@v6.2.0 + uses: docker/metadata-action@dc802804100637a589fabce1cb79ff13a1411302 # v6.2.0 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ matrix.component.name }} tags: | @@ -372,7 +372,7 @@ jobs: - name: Build and push id: push - uses: docker/build-push-action@v7.3.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: ${{ matrix.component.dockerfile }} @@ -386,7 +386,7 @@ jobs: VERSION=${{ github.sha }} - name: Attest container provenance - uses: actions/attest-build-provenance@v4.1.1 + uses: actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373 # v4.1.1 with: subject-name: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}-${{ matrix.component.name }} subject-digest: ${{ steps.push.outputs.digest }} diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 7d3b2aab..b6931b35 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -27,11 +27,11 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@stable + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - run: cargo check --workspace test: @@ -39,11 +39,11 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@stable + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - run: cargo test --workspace fmt: @@ -51,8 +51,8 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@stable + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: components: rustfmt - run: cargo fmt --all -- --check @@ -62,11 +62,11 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v7.0.1 - - uses: dtolnay/rust-toolchain@stable + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: components: clippy - - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - run: cargo clippy --workspace -- -D warnings rustci_check: @@ -75,16 +75,16 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: clippy, rustfmt - name: Cache cargo registry and build - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - name: Cargo check run: cargo check --all-targets 2>&1 @@ -103,15 +103,15 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Cache cargo registry and build - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - name: Run tests run: cargo test --all-targets diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d8408d00..46d33038 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: MPL-2.0 # SPDX-License-Identifier: PMPL-1.0-or-later # This workflow is managed by gh actions-lock. # This workflow is managed by gh actions-lock. @@ -16,7 +17,7 @@ permissions: jobs: scorecard: - uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@d7c22711e830e1f383846472f6e9b99debdb201e + uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329 permissions: actions: read contents: read diff --git a/.github/workflows/secret-scanner.yml b/.github/workflows/secret-scanner.yml index 60e7f591..b74a9d9a 100644 --- a/.github/workflows/secret-scanner.yml +++ b/.github/workflows/secret-scanner.yml @@ -21,5 +21,5 @@ jobs: contents: read pull-requests: write actions: read - uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@db12a6ad3ef9076d5f7bdcf98d7d15cf8547555a + uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@7fdc2705df74b4e352d2a1cde3e87a5923fdf329 secrets: inherit diff --git a/.github/workflows/security-policy.yml b/.github/workflows/security-policy.yml index 9499546a..e172a989 100644 --- a/.github/workflows/security-policy.yml +++ b/.github/workflows/security-policy.yml @@ -32,10 +32,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable @@ -55,7 +55,7 @@ jobs: fi - name: Upload audit results - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: rust-audit-results path: rust-audit.json @@ -67,10 +67,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install cargo-deny - uses: taiki-e/install-action@v2.85.3 + uses: taiki-e/install-action@18b1216eba7f8039b0f8d131d5473787f0edce68 # v2.85.3 with: tool: cargo-deny @@ -87,12 +87,12 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - name: TruffleHog Secret Scan - uses: trufflesecurity/trufflehog@v3.96.0 + uses: trufflesecurity/trufflehog@6f3c981e7b77f235fd2702dd74af25fc4b72bf11 # v3.96.0 with: path: ./ base: ${{ github.event.repository.default_branch }} @@ -100,7 +100,7 @@ jobs: extra_args: --only-verified - name: Gitleaks Secret Scan - uses: gitleaks/gitleaks-action@v3.0.0 + uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -117,10 +117,10 @@ jobs: security-events: write steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run Semgrep - uses: returntocorp/semgrep-action@v1 + uses: returntocorp/semgrep-action@713efdd345f3035192eaa63f56867b88e63e4e5d # v1 with: config: >- p/rust @@ -148,7 +148,7 @@ jobs: language: ['actions'] steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Initialize CodeQL uses: github/codeql-action/init@v4.37.3 @@ -171,10 +171,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable @@ -187,7 +187,7 @@ jobs: cargo cyclonedx --format xml --output-cdx rust-sbom.cdx.xml - name: Upload SBOM artifacts - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: rust-sbom path: | @@ -206,14 +206,14 @@ jobs: if: github.event_name != 'pull_request' steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Build test image run: | docker build -t hypatia:scan -f deploy/Containerfile . - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@v0.36.0 + uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0 with: image-ref: 'hypatia:scan' format: 'sarif' @@ -281,15 +281,15 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Cache cargo registry - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.cargo/registry @@ -317,7 +317,7 @@ jobs: fi - name: Upload audit results - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: rust-audit-report path: rust-audit-report.json @@ -329,10 +329,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install cargo-deny - uses: taiki-e/install-action@v2.85.3 + uses: taiki-e/install-action@18b1216eba7f8039b0f8d131d5473787f0edce68 # v2.85.3 with: tool: cargo-deny @@ -386,7 +386,7 @@ jobs: run: cargo deny check 2>&1 | tee cargo-deny-report.txt || true - name: Upload deny results - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: cargo-deny-report path: cargo-deny-report.txt @@ -411,7 +411,7 @@ jobs: - deploy/Containerfile steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Extract image name from Containerfile path id: image @@ -428,7 +428,7 @@ jobs: docker build -t ${{ steps.image.outputs.name }}:scan -f ${{ matrix.dockerfile }} . - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@v0.36.0 + uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0 with: image-ref: '${{ steps.image.outputs.name }}:scan' format: 'sarif' @@ -437,7 +437,7 @@ jobs: ignore-unfixed: true - name: Run Trivy (table output) - uses: aquasecurity/trivy-action@v0.36.0 + uses: aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0 with: image-ref: '${{ steps.image.outputs.name }}:scan' format: 'table' @@ -461,7 +461,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 @@ -512,7 +512,7 @@ jobs: fi - name: Run Gitleaks - uses: gitleaks/gitleaks-action@v3.0.0 + uses: gitleaks/gitleaks-action@e0c47f4f8be36e29cdc102c57e68cb5cbf0e8d1e # v3.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }} @@ -523,12 +523,12 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - name: TruffleHog Secret Scan - uses: trufflesecurity/trufflehog@v3.96.0 + uses: trufflesecurity/trufflehog@6f3c981e7b77f235fd2702dd74af25fc4b72bf11 # v3.96.0 with: path: ./ base: ${{ github.event.repository.default_branch }} @@ -552,7 +552,7 @@ jobs: language: ['actions'] steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Initialize CodeQL uses: github/codeql-action/init@v4.37.3 @@ -574,10 +574,10 @@ jobs: security-events: write steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Run Semgrep - uses: returntocorp/semgrep-action@v1 + uses: returntocorp/semgrep-action@713efdd345f3035192eaa63f56867b88e63e4e5d # v1 with: config: >- p/rust @@ -603,7 +603,7 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Check SPDX headers in source files run: | @@ -661,7 +661,7 @@ jobs: fi - name: Upload license report - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: license-compliance-report path: license-report.md @@ -677,10 +677,10 @@ jobs: timeout-minutes: 30 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable @@ -694,7 +694,7 @@ jobs: - name: Upload SBOM artifacts - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: sbom path: | diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index b1e90bb9..b348fba1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,16 +31,16 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Setup Erlang/Elixir - uses: erlef/setup-beam@v1.24.1 + uses: erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124 # v1.24.1 with: otp-version: '27.0' elixir-version: '1.17' - name: Restore Mix cache - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | deps @@ -72,15 +72,15 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 - name: Build Rust CLI run: cargo build --release @@ -105,7 +105,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Verify all documented rules have modules run: | @@ -152,13 +152,13 @@ jobs: timeout-minutes: 60 steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4.2.0 + uses: docker/setup-buildx-action@bb05f3f5519dd87d3ba754cc423b652a5edd6d2c # v4.2.0 - name: Build hypatia image - uses: docker/build-push-action@v7.3.0 + uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 with: context: . file: deploy/Containerfile @@ -173,7 +173,7 @@ jobs: docker save hypatia:test | gzip > images.tar.gz - name: Upload images - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: docker-images path: images.tar.gz @@ -243,10 +243,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Download images - uses: actions/download-artifact@v8.0.1 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: docker-images @@ -255,12 +255,12 @@ jobs: gunzip -c images.tar.gz | docker load - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" cache-on-failure: true @@ -324,7 +324,7 @@ jobs: # died with exit 127 (command not found) and took `Integration Tests` red # with it. Same pins as the E2E job, so the two agree on the toolchain. - name: Setup Erlang/Elixir - uses: erlef/setup-beam@v1.24.1 + uses: erlef/setup-beam@54075bcc5e249e4758d363f27d099f55d843f124 # v1.24.1 with: otp-version: '27.0' elixir-version: '1.17' @@ -389,10 +389,10 @@ jobs: needs: [integration-tests] steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Download images - uses: actions/download-artifact@v8.0.1 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: name: docker-images @@ -437,7 +437,7 @@ jobs: - name: Upload logs on failure if: failure() - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: e2e-failure-logs path: deploy/compose-logs.txt @@ -511,21 +511,21 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable components: llvm-tools-preview - name: Install cargo-llvm-cov - uses: taiki-e/install-action@v2.85.3 + uses: taiki-e/install-action@18b1216eba7f8039b0f8d131d5473787f0edce68 # v2.85.3 with: tool: cargo-llvm-cov - name: Setup Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" @@ -556,7 +556,7 @@ jobs: DRAGONFLY_URL: redis://localhost:6379 - name: Upload coverage to Codecov - uses: codecov/codecov-action@v7.0.0 + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: files: integration-lcov.info flags: integration @@ -615,10 +615,10 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable @@ -716,15 +716,15 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable + uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable with: toolchain: stable - name: Rust cache - uses: Swatinem/rust-cache@v2.9.1 + uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1 with: workspaces: ". -> target" cache-on-failure: true @@ -770,7 +770,7 @@ jobs: - name: Upload baseline candidate (regenerate mode) if: ${{ github.event.inputs.mode == 'regenerate-baseline' }} - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: baselines-candidate path: .machine_readable/benchmarks/baselines.json @@ -778,7 +778,7 @@ jobs: - name: Upload raw bench output if: always() - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: bench-output path: bench-output.txt diff --git a/.github/workflows/verify-proofs.yml b/.github/workflows/verify-proofs.yml index d0f36b03..804034c3 100644 --- a/.github/workflows/verify-proofs.yml +++ b/.github/workflows/verify-proofs.yml @@ -59,7 +59,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Install Chez Scheme run: | @@ -69,7 +69,7 @@ jobs: - name: Cache Idris 2 install id: cache-idris - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | /usr/local/bin/idris2 @@ -156,11 +156,11 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Cache Lean toolchain and build id: cache-lean - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: | ~/.elan @@ -210,17 +210,17 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7.0.1 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - name: Set up Eclipse Temurin 21 JRE - uses: actions/setup-java@v5.6.0 + uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5.6.0 with: distribution: temurin java-version: '21' - name: Cache tla2tools.jar id: cache-tla - uses: actions/cache@v6.1.0 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.local/share/tla2tools.jar key: tla2tools-v1.8.0 @@ -252,7 +252,7 @@ jobs: - name: Upload TLC log on failure if: failure() - uses: actions/upload-artifact@v7.0.1 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: tlc-log path: verification/proofs/tlaplus/tlc.log diff --git a/.machine_readable/self-validating/hypatia-metadata.k9.ncl b/.machine_readable/self-validating/hypatia-metadata.k9.ncl index 53a1c1f8..7d0876bc 100644 --- a/.machine_readable/self-validating/hypatia-metadata.k9.ncl +++ b/.machine_readable/self-validating/hypatia-metadata.k9.ncl @@ -7,7 +7,9 @@ K9! { pedigree = { - name = "hypatia-metadata", + name = "hypatia-metadata.k9.ncl", + security = { leash = 'Yard }, + leash = 'Kennel, schema_version = "1.0.0", component_type = "ci-tool-metadata", @@ -19,7 +21,7 @@ K9! allow_subprocess = false, }, metadata = { - name = "hypatia-metadata", + version = "0.1.0", description = "Hypatia: neurosymbolic CI/CD intelligence platform — project invariants", author = "Jonathan D.A. Jewell ", diff --git a/deploy-security-scan.k9.ncl b/deploy-security-scan.k9.ncl index 3ac1373a..0ba50324 100644 --- a/deploy-security-scan.k9.ncl +++ b/deploy-security-scan.k9.ncl @@ -8,7 +8,9 @@ K9! leash = 'Hunt pedigree = { - name = "deploy-security-scan", + name = "deploy-security-scan.k9.ncl", + security = { leash = 'Yard }, + leash = 'Hunt, signature_required = false, schema_version = "1.0.0", @@ -88,7 +90,7 @@ config = { # Generate the Hypatia workflow YAML hypatia_workflow = { spdx_header = "# SPDX-License-Identifier: MPL-2.0", - name = "Hypatia Security Scan", + permissions = "permissions: read-all", on_triggers = @@ -102,22 +104,22 @@ hypatia_workflow = { security_scan = { runs_on = "ubuntu-latest", steps = [ - { name = "Checkout code", uses = "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" }, + { uses = "actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11" }, { - name = "Download Hypatia rulesets", + run = "curl -sSL %{config.hypatia_endpoints.ruleset_registry}/download/%{std.string.join "," config.scan_config.enabled_rulesets} -o rulesets.tar.gz && tar xzf rulesets.tar.gz", }, { - name = "Run Hypatia scan", + run = "hypatia scan --depth %{std.string.from config.scan_config.scan_depth} --rulesets ./rulesets/ --report scan-report.json", }, { - name = "Upload findings", + uses = "github/codeql-action/upload-sarif@a4784f2dad6682d68cce8299ef20b1ca931bbdfb", with_ = { sarif_file = "scan-report.sarif" }, }, { - name = "Send learning data", + if_ = config.learning.enable_learning, run = "hypatia learn --privacy %{std.string.from config.learning.privacy_mode} --endpoint %{config.hypatia_endpoints.learning_api}", }, diff --git a/fleet-config.k9.ncl b/fleet-config.k9.ncl index f4edb977..c048a24b 100644 --- a/fleet-config.k9.ncl +++ b/fleet-config.k9.ncl @@ -8,7 +8,9 @@ K9! leash = 'Hunt pedigree = { - name = "fleet-config", + name = "fleet-config.k9.ncl", + security = { leash = 'Yard }, + leash = 'Hunt, signature_required = false, schema_version = "1.0.0",