Skip to content

Commit 6a09e96

Browse files
fix(ci): unbreak workflow YAML and add a complete actions.lock (#11)
Remediates **GitHub Workflow Dependency Locking** (public preview, no changelog entry), which rejects runs at `startup_failure` — zero jobs, no logs, nothing in REST or GraphQL. Full analysis: `metadatastician/standards#657`. **Proven on `hyperpolymath/anamnesis`: 6 of 6 workflows dead → 0 `startup_failure`, 13 running.** ### Five steps, in order — each blocks the next **1. Unbreak the workflow YAML.** Any `permissions:` carrying a scalar with an indented mapping under it: ```yaml permissions: read-all actions: read # <- mapping under a scalar. Unparseable. ``` This reaches past the one file: **`gh actions-lock` refuses to run when *any* workflow in the repo fails to parse**, so the repo can never acquire a lockfile and can never self-heal. **2. Repin `standards` reusables** off commits with no `actions.lock`. The rejection requires the **callee** to be covered *at the pinned SHA* — unsatisfiable at a pre-lockfile commit. **3. Generate** the lockfile with `gh actions-lock`. **4. Hand-add the reusable-caller entries the tool omits**, as `'<path>': []`. ⚠️ Measured across 218 repos: `P(startup_failure | has lockfile) = 91.7%` vs `15.8%` without — because every workflow a lockfile **omits** is rejected. **A partial lock is worse than none.** Running `gh actions-lock` and stopping there is how this outage spread. **5. Restore `SPDX-License-Identifier` to line 1**, which the tool displaces with its own banner and which the workflow-security linter greps via `head -1`. ### Verified before this PR was opened `0` unparseable workflows · lockfile covers **every** workflow, no omissions · SPDX on line 1 in **every** file. The script refuses to push if any of the three fails. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 663d5f4 commit 6a09e96

3 files changed

Lines changed: 18 additions & 1 deletion

File tree

‎.github/workflows/actions.lock‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# This file is machine-generated by `gh actions-lock`.
2+
# Do not edit by hand; run `gh actions-lock` to update.
3+
# Docs: https://gh.io/actions-lockfile
4+
version: 'v0.0.2'
5+
workflows:
6+
'.github/workflows/secret-scanner.yml': []
7+
'.github/workflows/push-email-notify.yml':
8+
- 'dawidd6/action-send-mail@v3.12.0'
9+
dependencies:
10+
'dawidd6/action-send-mail@v3.12.0':
11+
ref: 'v3.12.0'
12+
commit: 'sha1-6e502825a508b867ab2954ad6343b68787624c01'
13+
owner_id: 9713907
14+
repo_id: 222439721

‎.github/workflows/push-email-notify.yml‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# SPDX-License-Identifier: MPL-2.0
2+
# This workflow is managed by gh actions-lock.
23
# Dormant push-email notification. ARMED by setting the repo variable
34
# PUSH_EMAIL_ENABLED=true (the single on/off switch). Addresses are pre-filled;
45
# sending needs the org SMTP secrets (SMTP_HOST/PORT/USER/PASS). Inherited by
@@ -15,7 +16,7 @@ jobs:
1516
runs-on: ubuntu-latest
1617
steps:
1718
- name: Send push notification email
18-
uses: dawidd6/action-send-mail@6e502825a508b867ab2954ad6343b68787624c01 # pinned
19+
uses: dawidd6/action-send-mail@v3.12.0
1920
with:
2021
server_address: ${{ secrets.SMTP_HOST }}
2122
server_port: ${{ secrets.SMTP_PORT }}

‎.github/workflows/secret-scanner.yml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# SPDX-License-Identifier: MPL-2.0
2+
# This workflow is managed by gh actions-lock.
23
# Calls the estate's shared secret scanner (gitleaks + rust-secrets +
34
# shell-secrets). Added because this repository had NO leak scanning at all.
45
#
@@ -13,6 +14,7 @@ concurrency:
1314
group: ${{ github.workflow }}-${{ github.ref }}
1415
cancel-in-progress: true
1516
permissions:
17+
actions: read
1618
contents: read
1719
jobs:
1820
secret-scan:

0 commit comments

Comments
 (0)