Skip to content

Commit f0c167f

Browse files
hyperpolymathclaude
andcommitted
fix(ci): startup_failure class — callee-permission grants, stale pins, filled placeholders
Central five-front diagnosis (wf_58d387b3): no broken SHA anywhere. Fixes: - Cause B (callee ⊆ caller): standards' secret-scanner-reusable (gitleaks: pull-requests:write + actions:read) and scorecard-reusable (security-events: write + id-token:write) declare job scopes the thin callers didn't grant — GitHub requires callee ⊆ caller, so both startup-failed at plan time with zero jobs (persisting after #31's repin, which could never fix a permission mismatch). Callers now grant the union. - Stale pin: rust-ci d135b05 predates the standards rust-toolchain fix (9fe0d8f) — re-pinned to a44c93a5 (2026-07-01 HEAD); secret-scanner and scorecard re-pinned alongside for one coherent baseline. - openssf-compliance content: .github/SECURITY.md carried 12 unfilled {{…}} template tokens — replaced with the estate's filled policy (ported from cicd-squabbler's, honest no-published-PGP wording, GH advisories preferred); ECOSYSTEM.a2ml purpose filled from the repo's own EXPLAINME identity. Out of scope: Pages enable (repo setting, listed for owner), the standards-side source fix for cause B (owner-gated), dependabot trim (landed in #33). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 7d45d46 commit f0c167f

5 files changed

Lines changed: 32 additions & 49 deletions

File tree

.github/SECURITY.md

Lines changed: 14 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,8 @@
1-
# Security Policy
2-
3-
<!--
4-
============================================================================
5-
TEMPLATE INSTRUCTIONS (delete this block before publishing)
6-
============================================================================
7-
Replace all values with your information:
8-
Patch Bridge - Your project name
9-
hyperpolymath - GitHub username or org (e.g., hyperpolymath)
10-
patch-bridge - Repository name
11-
{{SECURITY_EMAIL}} - Security contact email
12-
{{PGP_FINGERPRINT}} - Your PGP key fingerprint (40 chars, no spaces)
13-
{{PGP_KEY_URL}} - URL to your public PGP key
14-
{{WEBSITE}} - Your website/domain
15-
2026 - Current year for copyright
16-
17-
Optional: Remove sections that don't apply (e.g., PGP if you don't use it)
18-
============================================================================
1+
<!--
2+
SPDX-License-Identifier: CC-BY-SA-4.0
3+
Copyright (c) Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
194
-->
5+
# Security Policy
206

217
We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions.
228

@@ -52,26 +38,11 @@ This method ensures:
5238
- Coordinated disclosure tooling
5339
- Automatic credit when the advisory is published
5440

55-
### Alternative: Encrypted Email
56-
57-
If you cannot use GitHub Security Advisories, you may email us directly:
41+
### Alternative: Email
5842

59-
| | |
60-
|---|---|
61-
| **Email** | {{SECURITY_EMAIL}} |
62-
| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) |
63-
| **Fingerprint** | `{{PGP_FINGERPRINT}}` |
64-
65-
```bash
66-
# Import our PGP key
67-
curl -sSL {{PGP_KEY_URL}} | gpg --import
68-
69-
# Verify fingerprint
70-
gpg --fingerprint {{SECURITY_EMAIL}}
71-
72-
# Encrypt your report
73-
gpg --armor --encrypt --recipient {{SECURITY_EMAIL}} report.txt
74-
```
43+
If you cannot use GitHub Security Advisories, you may email the maintainer
44+
directly at j.d.a.jewell@open.ac.uk. There is no published PGP key at
45+
present; for an encrypted channel, prefer GitHub Security Advisories (above).
7546

7647
> **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media.
7748
@@ -323,7 +294,7 @@ To stay informed about security updates:
323294

324295
- **Watch this repository**: Click "Watch" → "Custom" → Select "Security alerts"
325296
- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/hyperpolymath/patch-bridge/security/advisories)
326-
- **Release notes**: Security fixes noted in [CHANGELOG](CHANGELOG.md)
297+
- **Release notes**: Security fixes noted in [CHANGELOG](../CHANGELOG.md)
327298

328299
### Update Policy
329300

@@ -348,7 +319,7 @@ To stay informed about security updates:
348319

349320
## Security Best Practices
350321

351-
When using Patch Bridge, we recommend:
322+
When using patch-bridge, we recommend:
352323

353324
### General
354325

@@ -370,9 +341,8 @@ When using Patch Bridge, we recommend:
370341

371342
## Additional Resources
372343

373-
- [Our PGP Public Key]({{PGP_KEY_URL}})
374344
- [Security Advisories](https://github.com/hyperpolymath/patch-bridge/security/advisories)
375-
- [Changelog](CHANGELOG.md)
345+
- [Changelog](../CHANGELOG.md)
376346
- [Contributing Guidelines](CONTRIBUTING.md)
377347
- [CVE Database](https://cve.mitre.org/)
378348
- [CVSS Calculator](https://www.first.org/cvss/calculator/3.1)
@@ -383,9 +353,9 @@ When using Patch Bridge, we recommend:
383353

384354
| Purpose | Contact |
385355
|---------|---------|
386-
| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/patch-bridge/security/advisories/new) or {{SECURITY_EMAIL}} |
356+
| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/patch-bridge/security/advisories/new) or j.d.a.jewell@open.ac.uk |
387357
| **General questions** | [GitHub Discussions](https://github.com/hyperpolymath/patch-bridge/discussions) |
388-
| **Other enquiries** | See [README](README.md) for contact information |
358+
| **Other enquiries** | See [README](../README.adoc) for contact information |
389359

390360
---
391361

@@ -399,7 +369,7 @@ This security policy may be updated from time to time. Significant changes will
399369

400370
---
401371

402-
*Thank you for helping keep Patch Bridge and its users safe.* 🛡️
372+
*Thank you for helping keep patch-bridge and its users safe.* 🛡️
403373

404374
---
405375

.github/workflows/rust-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ permissions:
1414

1515
jobs:
1616
rust-ci:
17-
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
17+
uses: hyperpolymath/standards/.github/workflows/rust-ci-reusable.yml@a44c93a5cd3d293ee3e8b488444dcdc19c4e5d49

.github/workflows/scorecard.yml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,16 @@ on:
88
push:
99
branches: [main]
1010

11-
permissions: read-all
11+
# The reusable's scorecard job declares security-events:write + id-token:write;
12+
# a called workflow's job permissions must be a SUBSET of the caller's grant
13+
# (callee ⊆ caller) — `read-all` grants no writes, so the run startup-failed at
14+
# plan time with zero jobs.
15+
permissions:
16+
contents: read
17+
security-events: write
18+
id-token: write
1219

1320
jobs:
1421
analysis:
15-
uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@d7c22711e830e1f383846472f6e9b99debdb201e
22+
uses: hyperpolymath/standards/.github/workflows/scorecard-reusable.yml@a44c93a5cd3d293ee3e8b488444dcdc19c4e5d49
1623
secrets: inherit

.github/workflows/secret-scanner.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,16 @@ concurrency:
1010
group: ${{ github.workflow }}-${{ github.ref }}
1111
cancel-in-progress: true
1212

13+
# The reusable's gitleaks job declares pull-requests:write + actions:read; a
14+
# called workflow's job permissions must be a SUBSET of the caller's grant
15+
# (callee ⊆ caller), so the caller grants the union or the run startup-fails
16+
# at plan time with zero jobs.
1317
permissions:
1418
contents: read
19+
pull-requests: write
20+
actions: read
1521

1622
jobs:
1723
scan:
18-
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@d135b05bfc647d0c0fbfedc7e80f37ea50f49236
24+
uses: hyperpolymath/standards/.github/workflows/secret-scanner-reusable.yml@a44c93a5cd3d293ee3e8b488444dcdc19c4e5d49
1925
secrets: inherit

.machine_readable/ECOSYSTEM.a2ml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
(version "1.0.0")
55
(name "patch-bridge")
66
(type "library")
7-
(purpose "{{REPO_DESCRIPTION}}")
7+
(purpose "Reachability-aware CVE triage engine: Cargo.lock -> OSV batch query -> import-scan reachability -> Mitigable/Unmitigable/Informational classification")
88
(related-projects))

0 commit comments

Comments
 (0)