diff --git a/.github/workflows/action-pins.yml b/.github/workflows/action-pins.yml index e5f9f93b7..b54bb06f2 100644 --- a/.github/workflows/action-pins.yml +++ b/.github/workflows/action-pins.yml @@ -26,7 +26,10 @@ name: Workflow gates # # The pins are not maintained by hand — .github/dependabot.yml opens a monthly grouped # PR that rewrites both the SHA and the trailing version comment. The comment is -# therefore required too: it is what makes a pinned line reviewable. +# therefore required too: it is what makes a pinned line reviewable. It names the exact +# release tag (# v7.0.1), never the floating major (# v7): a major tag moves with every +# upstream release, after which the comment no longer names the pinned commit and +# zizmor's ref-version-mismatch flags every line that carries it. on: push: @@ -45,7 +48,7 @@ jobs: name: Verify action pins runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -59,13 +62,15 @@ jobs: # nothing to pin. case "$ref" in ./*|\$/*) continue ;; esac - if [[ "$ref" =~ ^[^@]+@[0-9a-f]{40}[[:space:]]+#[[:space:]]*[^[:space:]] ]]; then + if [[ "$ref" =~ ^[^@]+@[0-9a-f]{40}[[:space:]]+#[[:space:]]*v?[0-9]+\.[0-9]+\.[0-9]+([[:space:]]|$) ]]; then printf 'ok %s:%s %s\n' "$file" "$line" "$ref" continue fi if [[ "$ref" =~ ^[^@]+@[0-9a-f]{40}[[:space:]]*$ ]]; then - echo "::error file=$file,line=$line::Pinned but the version comment is missing: '$ref'. Write 'owner/action@ # vN' so the line stays reviewable." + echo "::error file=$file,line=$line::Pinned but the version comment is missing: '$ref'. Write 'owner/action@ # vX.Y.Z' so the line stays reviewable." + elif [[ "$ref" =~ ^[^@]+@[0-9a-f]{40}[[:space:]]+# ]]; then + echo "::error file=$file,line=$line::The version comment must name the exact release tag the SHA resolves to ('# vX.Y.Z'), not a floating major: '$ref'. Find it with: gh api repos///git/matching-refs/tags/vN" else echo "::error file=$file,line=$line::Action '$ref' is not pinned to a commit SHA. Tags are mutable -- resolve it with: gh api repos///git/ref/tags/" fi @@ -89,7 +94,7 @@ jobs: security-events: write # SARIF upload: findings land in the Code scanning tab next to CodeQL actions: read steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/bootstrap-script-gates.yml b/.github/workflows/bootstrap-script-gates.yml index f39ef9d4e..6a9c9b073 100644 --- a/.github/workflows/bootstrap-script-gates.yml +++ b/.github/workflows/bootstrap-script-gates.yml @@ -18,7 +18,7 @@ jobs: name: Bootstrap guard tests (PS 5.1) runs-on: windows-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false diff --git a/.github/workflows/build-agent.yml b/.github/workflows/build-agent.yml index e3565ba20..4c34859ad 100644 --- a/.github/workflows/build-agent.yml +++ b/.github/workflows/build-agent.yml @@ -72,7 +72,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -124,7 +124,7 @@ jobs: # SDK 10 = single build toolchain (parity with local build.ps1 / global.json). - name: Setup .NET - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 + uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 with: dotnet-version: '10.0.x' @@ -464,7 +464,7 @@ jobs: # Skipped on runs that publish nothing -- no log entry for bytes nobody receives. - name: Attest build provenance if: inputs.upload_blob || inputs.create_release - uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4 + uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 with: subject-path: | ${{ steps.artifact.outputs.versioned_zip_release }} @@ -472,13 +472,13 @@ jobs: staging/agent/AutopilotMonitor.SummaryDialog.exe - name: Upload build artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: AutopilotMonitor-Agent-v${{ steps.version.outputs.version }} path: ${{ steps.artifact.outputs.versioned_zip_release }} - name: Upload version metadata - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: version-metadata path: ${{ env.MANIFEST_NAME }} diff --git a/.github/workflows/build-msi.yml b/.github/workflows/build-msi.yml index d1f4d0bfd..91bd406f1 100644 --- a/.github/workflows/build-msi.yml +++ b/.github/workflows/build-msi.yml @@ -40,7 +40,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -240,12 +240,12 @@ jobs: # gh attestation verify AutopilotMonitor-Bootstrap.msi --repo okieselbach/AutopilotMonitor - name: Attest build provenance (MSI) if: inputs.upload_blob - uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4 + uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 with: subject-path: ${{ env.STABLE_MSI }} - name: Upload build artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: AutopilotMonitor-Bootstrap-v${{ steps.version.outputs.version }} path: ${{ env.STABLE_MSI }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 977f2f487..9bce2f8a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -98,11 +98,11 @@ jobs: # windows-latest is required: the agent test projects target net48. runs-on: windows-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 + - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 with: dotnet-version: '10.0.x' @@ -134,11 +134,11 @@ jobs: run: working-directory: src/Web/autopilot-monitor-web steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' cache: npm @@ -170,11 +170,11 @@ jobs: run: working-directory: src/McpServer/autopilot-monitor-mcp steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' cache: npm @@ -192,7 +192,7 @@ jobs: # (run 31252869254). Persist the model across runs instead; HF_CACHE_DIR # is honored by vector-search-provider.ts. - name: Cache embedding model - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6 + uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ${{ github.workspace }}/.hf-cache key: hf-model-Xenova-all-MiniLM-L6-v2 @@ -206,11 +206,11 @@ jobs: name: Generated guardrails match rules/guardrails.json runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' @@ -229,11 +229,11 @@ jobs: name: Generated wire types match shared-manifests.json runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f230853c2..2fec9106c 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -104,11 +104,11 @@ jobs: build-mode: none steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false - - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 + - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 if: matrix.language == 'csharp' with: dotnet-version: '10.0.x' diff --git a/.github/workflows/combine-rules.yml b/.github/workflows/combine-rules.yml index 054999ec8..dfdb28ffd 100644 --- a/.github/workflows/combine-rules.yml +++ b/.github/workflows/combine-rules.yml @@ -24,9 +24,9 @@ jobs: permissions: contents: write steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' diff --git a/.github/workflows/deploy-backend.yml b/.github/workflows/deploy-backend.yml index 30ddc994c..6ebce11da 100644 --- a/.github/workflows/deploy-backend.yml +++ b/.github/workflows/deploy-backend.yml @@ -19,7 +19,7 @@ jobs: name: Build and Deploy Backend steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -31,7 +31,7 @@ jobs: subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} - name: Setup .NET 10 - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 + uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 with: dotnet-version: '10.0.x' @@ -67,7 +67,7 @@ jobs: run: dotnet publish ${{ env.CSPROJ_PATH }} --configuration Release --output ./publish --no-build -p:SourceRevisionId=${{ github.sha }} -p:BuildNumber=${{ steps.version.outputs.build_number }} -p:BuildTimestampUtc=${{ steps.version.outputs.build_utc }} - name: Deploy to Azure Functions - uses: Azure/functions-action@c5060b3b8bb1ebbcb531abd00c822ecbaa8ea656 # v1 + uses: Azure/functions-action@c5060b3b8bb1ebbcb531abd00c822ecbaa8ea656 # v1.5.7 with: app-name: ${{ env.FUNCTION_APP }} package: ./publish diff --git a/.github/workflows/deploy-mcp.yml b/.github/workflows/deploy-mcp.yml index 7bb298ed3..a3927face 100644 --- a/.github/workflows/deploy-mcp.yml +++ b/.github/workflows/deploy-mcp.yml @@ -26,7 +26,7 @@ jobs: name: Build and Deploy MCP Server steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -38,7 +38,7 @@ jobs: # re-run actually rolls a new revision). /health reports the SHA captured # below so that staleness is checkable. - name: Check out documentation bundle - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false repository: autopilotmonitor/autopilotmonitor-docs diff --git a/.github/workflows/deploy-web.yml b/.github/workflows/deploy-web.yml index 6da0ae25b..3b1e9c29a 100644 --- a/.github/workflows/deploy-web.yml +++ b/.github/workflows/deploy-web.yml @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest name: Build and Deploy Job steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false lfs: false @@ -57,7 +57,7 @@ jobs: # workflow runs again (push under src/Web/** or a manual dispatch); versions/web.json # records which docs commit is live. - name: Check out documentation bundle - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false repository: autopilotmonitor/autopilotmonitor-docs @@ -68,7 +68,7 @@ jobs: id: docs run: echo "sha=$(git -C whats-new-docs rev-parse HEAD)" >> "$GITHUB_OUTPUT" - - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: '22' cache: npm @@ -140,12 +140,12 @@ jobs: # commit, workflow file) in a public transparency log. # Verify: gh attestation verify portal-.tar.gz --repo okieselbach/AutopilotMonitor - name: Attest build provenance (portal export) - uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4 + uses: actions/attest-build-provenance@4d101475d8b20a2381f78447822ac1eab6504dd8 # v4.2.2 with: subject-path: ${{ steps.package.outputs.archive }} - name: Upload build artifact - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: portal-${{ github.sha }} path: ${{ steps.package.outputs.archive }} diff --git a/.github/workflows/publish-scripts.yml b/.github/workflows/publish-scripts.yml index 46751f45d..982e58931 100644 --- a/.github/workflows/publish-scripts.yml +++ b/.github/workflows/publish-scripts.yml @@ -60,7 +60,7 @@ jobs: contents: read id-token: write # OIDC federated login for the storage writes (secret-less) steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: persist-credentials: false @@ -135,7 +135,7 @@ jobs: # when someone wants to look at the file. - name: Upload signed scripts if: always() - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: signed-scripts path: ${{ runner.temp }}/signed-scripts diff --git a/internal b/internal index f0a39d58f..01d422f72 160000 --- a/internal +++ b/internal @@ -1 +1 @@ -Subproject commit f0a39d58f763b149006f62dcabd723f0f7bf55ce +Subproject commit 01d422f720b16307d6b3ea35323e0d7260009752