SSCSBv0.3.0
A+

p4gs/sscs-bootstrapper

auth ✓ verified+local 8

https://github.com/p4gs/sscs-bootstrapper · scanned 2026-09-03 at c8a23493ec0c on main · sscsb 0.3.1 · methodology v1 · scan run

100% of the answered checks passed · 90.9% of the checks were answered at all

Defences found, by attack group

This lists defences the scan found, not weaknesses it found. A missing defence is not a break-in, and a full set of checks is not safety: nine groups and 54 checks do not cover everything. What the nine groups are →

These checks do not stop an attack. They let an outsider tell what a project already does, and where to report a problem. They are not in the list above: best-practices-badge, compliance-map, osps-baseline, publish-targets, secure-repo, security-insights.

Authenticated scan — signature verified

Produced in the repository's own CI and keyless-signed there. Before listing it, the directory verified the Sigstore bundle against the certificate identity https://github.com/p4gs/sscs-bootstrapper/.github/workflows/sscsb-scan.yml@refs/heads/main bound to commit c8a23493ec0c on 2026-09-03. The repository, workflow path, and default branch are burned into that certificate by GitHub's OIDC issuer, not asserted by the record.

Re-verify it yourself: scan-record.json · signature bundle

Local scan — signature verified

A maintainer ran sscsb on their own machine and signed the record with their git signing key. The directory verified that detached SSH signature with ssh-keygen -Y verify against .sscsb/policy/allowed_signers fetched from this repository at commit 3cb129084db2 — committed content the submitter does not supply. Verifying principal 10093271+p4gs@users.noreply.github.com (SHA256:prXatGO56nl8Or4JdDSzIIcj8hZE1jBxnFaXZOnAPDQ) on 2026-09-11.

What that proves, exactly: a holder of a key this repository commits as an approved signer asserts this result at that commit. Nothing more — it is weaker than an authenticated scan, which proves the repository's own CI produced the record.

It contributed 8 controls: commit-signing, ai-trailers, ai-dep-gate, ai-receipts, package-trust, bumblebee, grype, socket-firewall. Every other class comes from the repository-observable record; a local scan never overturns one and never widens the scope it is measured against.

Re-verify it yourself: scan-record.local.json · detached signature

ssh-keygen -Y verify -f allowed_signers \
  -I "10093271+p4gs@users.noreply.github.com" -n sscsb-scan-record \
  -s scan-record.local.json.sig < scan-record.local.json

What the evidence merge found

The local record describes commit 3cb129084db2, while the repository scan on this listing describes c8a23493ec0c. Its local-environment rows may predate the code above them.

Two scores are on this page and only one of them is ours. The grade and coverage shown here — A+, 100%, coverage 90.9% — are the DIRECTORY's, computed from every evidence source it holds under the published methodology. The signed local record linked below carries its own score block (A+, 100%, coverage 89.5%): that is the SUBMITTER's self-report, computed on their machine over the controls that machine had in scope. It is republished byte-identically because the signature covers those exact bytes, not because the directory endorses the number.

All controls

Raw sscsb verdicts and every reclassification are shown — transparency about what was and wasn't verifiable is the product. Phases: 1 = Commit integrity, 2 = Dependencies, 3 = Build receipts, 4 = Code & build hardening, 5 = Ongoing posture, 6 = Distribution & publishing.

PhaseControlVerdictDetail
1 secrets Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • trufflehog not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 3.95.9. Install: brew install trufflehog (Linuxbrew) or see Release binaries: https://github.com/trufflesecurity/trufflehog/releases (https://github.com/trufflesecurity/trufflehog)
  • gitleaks not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 8.30.1. Install: brew install gitleaks (Linuxbrew) or see Release binaries: https://github.com/gitleaks/gitleaks/releases (https://github.com/gitleaks/gitleaks)
1 commit-signing Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • 1 approved signer(s), 1 human
  • git config gpg.format = ssh
  • git config user.signingkey = /Users/p4gs/.ssh/github_signing_key.pub
  • signing key does not look hardware-backed (no `-sk`) — spec recommends YubiKey ed25519-sk; software keys weaken the human-accountability model
  • git config commit.gpgSign = true
1 agent-signing out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
1 signing-model Unverified raw: degraded
requires the local development environment; not observable in a repository scan
evidence
  • human-local: incomplete — run `sscsb signing setup human-local`
  • agent-claude-code: incomplete — run `sscsb signing setup agent-claude-code`
  • cloud-claude: repo-side attribution is probeable and is not in place — an attestation cannot stand in for it
  • cloud-claude: github_app_installed: not attested — `sscsb signing setup cloud-claude --confirm`
  • github-web: vigilant_mode: not attested — `sscsb signing setup github-web --confirm`
  • github-web: phishing_resistant_mfa: not attested — `sscsb signing setup github-web --confirm`
  • codespaces: gpg_verification: not attested — `sscsb signing setup codespaces --confirm`
1 branch-protection Pass
evidence
  • main: required pull requests ✓
  • main: force-push blocking ✓
  • main: required signed commits ✓
  • main: required status checks ✓
  • main: deletion protection ✓
  • main: Scorecard — stale-review dismissal ✓
  • main: Scorecard gap — ≥1 required approving review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
  • main: Scorecard gap — code-owner review off (needs a 2nd reviewer; a solo maintainer cannot self-approve — opt in with `sscsb harden branch-protection --require-reviews` once you have one)
1 actions-audit Pass
evidence
  • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
1 gittuf out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
1 ai-trailers Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • enforced by the commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
1 ai-dep-gate Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • enforced by the commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
1 pr-template Pass
evidence
  • AI-provenance PR template installed (code/tests/deps/docs questions)
1 ai-receipts Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • receipts: `sscsb receipt create [commit]` → .sscsb/out/receipts/, `sscsb receipt verify <file>` recomputes the patch digest, re-reads the commit's AI trailers, and verifies any cosign bundle beside the receipt
  • cosign signing of receipts: enabled and cosign available
2 sbom Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • syft not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.46.0. Install: brew install syft (Linuxbrew) or see Release binaries: https://github.com/anchore/syft/releases (https://github.com/anchore/syft)
2 vuln-scan Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • trivy not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 0.72.0. Install: brew install trivy (Linuxbrew) or see Release binaries: https://github.com/aquasecurity/trivy/releases (https://github.com/aquasecurity/trivy)
  • osv-scanner not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.4.0. Install: brew install osv-scanner (Linuxbrew) or see Release binaries: https://github.com/google/osv-scanner/releases (https://github.com/google/osv-scanner)
  • scanner config: .trivyignore is present with 2 entr(ies): DS-0002, DS-0026 — suppressions it causes are listed individually as `suppressed:` rows
2 scorecard Unverified raw: degraded
no lane produced a verdict for this control — an unperformed check is never a verdict
evidence
  • .github/workflows/scorecard.yml installed
  • live Scorecard results could not be read (none published yet — the workflow runs on push to the default branch — or the code-scanning API refused) — posture unverified
2 renovate Pass
evidence
  • renovate.json5 installed (7 key(s))
2 package-trust Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • new-package approval gate enforced in commit-msg hook
  • pre-commit + commit-msg + pre-push shims installed, executable, and unmodified (core.hooksPath=.sscsb/hooks)
  • approved baseline present (18 package(s))
  • registry existence validation ON for `sscsb deps check` and approvals (anti-slopsquat)
  • typosquat proximity heuristic ON for `sscsb deps check`, approvals, and the commit gate
2 bumblebee Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • bumblebee 0.1.2: 17048 artifact(s) inventoried, no known-compromised packages found (profile baseline, catalog /opt/homebrew/opt/bumblebee/share/bumblebee/threat_intel)
  • endpoint classes covered: MCP server configs, editor extensions, browser extensions, agent skills
  • note: 4 informational diagnostic(s) from the scan
2 grype Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • grype 0.118.0 available — `sscsb scan --grype` runs SBOM-first scanning
2 socket-firewall Pass raw: pass
resolved by a signed local scan: this control lives in the development environment, so a workstation record signed by a key this repository commits in .sscsb/policy/allowed_signers is the only evidence that can exist for it
evidence
  • Socket Firewall CLI (sfw) found at /Users/p4gs/.npm-global/bin/sfw
  • socket-firewall blocks known-malicious packages at install time (optional layer)
3 sigstore-signing Pass
evidence
  • .github/workflows/release-sign.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: keyless-signs with `cosign sign-blob --bundle` via `sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6` under `id-token: write`; fires on `push` (tags filter not evaluated)
3 slsa-provenance Pass
evidence
  • .github/workflows/release-slsa.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `provenance`: generates SLSA L3 provenance via `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` under `actions: read` + `id-token: write` + `contents: write`; fires on `push` (tags filter not evaluated)
3 github-attestations Pass
evidence
  • .github/workflows/release-attest.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: attests build provenance to GitHub's attestation store with `actions/attest-build-provenance@0f67c3f4856b2e3261c31976d6725780e5e4c373` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
3 sbom-attestation Pass
evidence
  • .github/workflows/release-attest-sbom.yml not installed — verified by consolidated evidence in .github/workflows/release.yml instead
  • .github/workflows/release.yml job `release`: attests the SBOM (`sbom-path`) to the artifact digest with `actions/attest@a1948c3f048ba23858d222213b7c278aabede763` under `attestations: write` + `id-token: write`; fires on `push` (tags filter not evaluated)
3 model-signing out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
3 provenance-verify Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • slsa-verifier not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 2.7.1. Install: brew install slsa-verifier (Linuxbrew) or see Release binaries: https://github.com/slsa-framework/slsa-verifier/releases (https://github.com/slsa-framework/slsa-verifier)
  • cosign: 3.0.6
  • gate: `sscsb provenance verify --artifact <f> --provenance <f>.intoto.jsonl --source-uri github.com/<owner>/<repo> --builder-id <trusted builder> [--source-tag vX.Y.Z]`
  • trusted builder pinned in config: https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@refs/tags/v2.1.0
  • deploy-gate workflow present (verification before publish)
3 release-immutability Pass
evidence
  • .github/workflows/release.yml installed (5 job(s))
3 octo-sts Pass
evidence
  • .github/workflows/octo-sts-example.yml installed (1 job(s))
  • .github/chainguard/sscsb-automation.sts.yaml installed (3 key(s))
3 harden-runner Pass
evidence
  • cflite-pr.yml: harden-runner present in job `Fuzzing`
  • ci.yml: harden-runner present in job `lint`
  • ci.yml: harden-runner present in job `test`
  • ci.yml: harden-runner present in job `coverage`
  • codeql.yml: harden-runner present in job `analyze`
  • deploy-gate.yml: harden-runner present in job `verify`
  • octo-sts-example.yml: harden-runner present in job `federated-call`
  • release.yml: harden-runner present in job `build`
3 witness out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
4 sast Pass raw: degraded
runner-tool availability is the scanner's environment, not the repository's; all registered artifacts pre-exist
evidence
  • engine: opengrep (rules: /home/runner/work/sscs-bootstrapper/sscs-bootstrapper/.sscsb/rules)
  • local ruleset present (1 file(s))
  • opengrep not found on PATH — this control cannot run its underlying tool. Pinned known-good version: 1.25.0. Install: No Homebrew formula; install a pinned release binary: https://github.com/opengrep/opengrep/releases (https://github.com/opengrep/opengrep)
4 sighthound out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
4 codeql Pass
evidence
  • .github/workflows/codeql.yml installed (1 job(s))
4 fuzzing Pass
evidence
  • .github/workflows/cflite-pr.yml installed (1 job(s))
  • .clusterfuzzlite/Dockerfile installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • .clusterfuzzlite/build.sh installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
  • .trivyignore installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
4 workflow-audit-extended Pass
evidence
  • [info] .github/workflows/release.yml: `slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0` is tag-pinned by design: slsa-github-generator must be referenced by @vX.Y.Z for slsa-verifier to verify the trusted builder
4 secure-repo out of scope Info
informational control — excluded from scoring
4 wait-for-secrets out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 dependency-track out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 guac out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 openvex Unverified raw: info
requires the local development environment; not observable in a repository scan
evidence
  • no OpenVEX documents in .sscsb/out — N/A for this repo until one is generated
  • generate: `sscsb vex create --vuln CVE-… --product pkg:… --status not_affected --justification …`
  • ingest: `sscsb scan --vex <file>` suppresses not_affected/fixed findings visibly
5 oras out of scope Info raw: disabled
optional control not enabled by this repository
evidence
  • disabled in .sscsb/config.toml
5 security-insights Pass
evidence
  • structurally valid — run `si validate` for full schema conformance
5 best-practices-badge Pass
evidence
  • .sscsb/best-practices-badge.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
5 osps-baseline Pass
evidence
  • .sscsb/osps-baseline.md installed (present and non-empty; no machine-checkable structure — its substance is a human judgement sscsb does not assert)
5 compliance-map out of scope Info raw: pass
informational control — excluded from scoring