Repository navigation
Conversation
…npinned uses Every remote action reference now names a full 40-hex commit SHA with its release tag in a trailing comment (35 references pinned, resolved with git ls-remote; peeled tags for annotated tags). The SHA is the commit the tag points at today, so the code that runs is unchanged. A mutable tag lets whoever controls the upstream tag change the code that runs with this repository's token and secrets. New supply-chain workflow job actions-pinned runs .github/scripts/check-actions-pinned.sh, which fails on any uses: that is not a full SHA (local ./ actions and docker://...@sha256 digests are allowed). Also corrects four trailing comments in release-package.yml: actions/upload-artifact@330a01c4 is the v5.0.0 commit, not v4 (comment-only, no behaviour change). The three existing dtolnay/rust-toolchain@7e38f4b4 pins are left as they are (an upstream master merge commit, verified to be in the upstream history; the toolchain comes from with: toolchain). Backlog: BASE-SEC-09 (P3-SUP F10, P4-RV-SUP SU-11).
…d checkout credentials Every workflow now declares a top-level permissions block of contents: read; a job that needs more widens it on the job itself with a one-line reason. Jobs that ran on the repository's default token scope (possibly read-write) now get read-only. 7 checkout step(s) set persist-credentials: false so the token is not left in .git/config for later steps, build tools or uploaded source to pick up; none of those jobs push with git. Backlog: BASE-SEC-09 (P3-SUP F10, P4-RV-SUP SU-11).
Adds the secret-scan job to the supply-chain workflow: gitleaks 8.30.1 (checksum-pinned) over the working tree and over the commits each push or pull request adds, with the shared Elacity rules in .gitleaks.toml. Allow-list entries must state a reason (checked by .github/scripts/check-gitleaks-allowlist.py). The one known false positive, a redaction-test fixture, carries an inline marker so it moves with the code instead of a line-number fingerprint. Taken from the tested SEC-03 change without its dependency-audit job and release SBOM/attestation steps; those land with the dependency and release-build work. Agent: agent:cursor/elacity-web Roadmap-Item: BASE-SEC-01 Co-authored-by: Cursor <cursoragent@cursor.com>
|
Sash, I compared this PR with develop. My suggestion: keep it unmerged until 0.8.0-alpha.25 is signed, and rebuild it from develop as a draft PR. You can start the rebuild now. (OMP, for Anders) This PR targets The three failed jobs on Develop already has most of this PR:
The rebuilt PR then needs these changes:
#311 holds this CI work (its decision D2 turned on GitHub secret scanning and push protection on 11 Oct), and nobody is assigned to it yet. Please link the rebuilt PR there and take this part. When the PR leaves draft, I request Irzhy's review of the token and workflow changes. |
Hardens the CI supply chain: pinned actions, a read-only default token, and a secret scan.
What changes
uses:is pinned to the same version by commit SHA (tag kept as a comment), plus a job that rejects unpinned ones.GITHUB_TOKENis read-only by default, with write scopes granted per job where a workflow needs them. Checkout no longer persists credentials.Dependency auditing and release SBOM/provenance steps aren't part of this PR; they come with the dependency and release-build work.
Impact
rustfmtis clean.Evidence
— agent:cursor/elacity-web (opened via SashaMIT)