Skip to content

Commit bbacb86

Browse files
aksOpsclaudePaperclip-Paperclip
authored
docs(claude-md): document OpenSSF Best Practices + Scorecard baseline (RAN-52 AC #7) (#95)
Adds a "Supply-chain observability (OpenSSF)" section to CLAUDE.md covering the Best Practices project (12650), the Scorecard workflow + target, and an operator-level summary of the path-B OSS-CLI security stack. Aligns with the RAN-46 path-B board ruling that landed in PR #91 (no Sonar/CodeQL/OWASP DC). `shared/runbooks/engineering-standards.md` §1 + §5 remains the SSoT for the security stack details; this section cross-references it. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Paperclip <noreply@paperclip.ing>
1 parent 4117d03 commit bbacb86

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

CLAUDE.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,27 @@ bean for code paths that haven't been ported yet.
429429
- **SonarCloud project key**: `RandomCodeSpace_codeiq`, org: `randomcodespace`
430430
- **CI workflow**: Single `ci-java.yml` runs build + SonarCloud analysis. No cross-platform builds needed (JVM).
431431

432+
## Supply-chain observability (OpenSSF)
433+
434+
Two OpenSSF signals are published. **`shared/runbooks/engineering-standards.md` §1 + §5 is the SSoT for the security stack** — this section is the operator-level summary.
435+
436+
### Best Practices badge
437+
438+
- Project: https://www.bestpractices.dev/projects/12650 — registered 2026-04-25 by the board.
439+
- Manifest: `.bestpractices.json` at repo root (project_id, evidence map, audit dates).
440+
- **Hard gate per the board: badge level `passing`.** The final `in_progress``passing` flip happens in the bestpractices.dev admin UI (board-owned). Repo-side criteria (CHANGELOG, SECURITY.md, signed commits, OSS-CLI security stack, Scorecard wiring, dependency updates) are evidenced via the manifest above.
441+
442+
### Scorecard baseline + target
443+
444+
- Workflow: [`.github/workflows/scorecard.yml`](.github/workflows/scorecard.yml) — push to `main`, weekly cron (Mondays 06:00 UTC), `workflow_dispatch`. SARIF lands on the Security tab; results also publish to https://api.securityscorecards.dev/projects/github.com/RandomCodeSpace/codeiq.
445+
- **Baseline (RAN-52 close, 2026-04-26):** read live from the Scorecard project page above; no static checked-in score (it would rot).
446+
- **Target:****8.0 / 10** stretch, with these checks at max: `Pinned-Dependencies`, `Token-Permissions`, `Branch-Protection`, `Code-Review`, `Maintained`, `License`, `SAST`, `Vulnerabilities`. Scorecard is observational; the `passing` Best Practices badge is the only hard gate per the board.
447+
- **Known floor reductions:** `Webhooks` (no public webhook surface — N/A); `Signed-Releases` (release-java workflow signs the GA commit; we are not yet signing every release artifact via Sigstore — tracked under follow-up).
448+
449+
### OSS-CLI security stack (path B board ruling — RAN-46 AC §3)
450+
451+
[`.github/workflows/security.yml`](.github/workflows/security.yml) runs six gate-blocking jobs: **OSV-Scanner** (SCA on the npm lockfile), **Trivy** (filesystem + Maven + OS scan), **Semgrep** (SAST: `p/security-audit` + `p/owasp-top-ten` + `p/java`), **Gitleaks** (secret scan, full git history), **jscpd** (duplication < 3% on production code), and **`anchore/sbom-action`** (SPDX + CycloneDX SBOM, artifact-only). Push + PR + weekly cron. Per the path-B board ruling, **do not re-introduce SonarCloud, CodeQL, or any NVD-direct tool (e.g. OWASP Dependency-Check)** without an explicit board reversal — see engineering-standards.md §5.1.
452+
432453
## Deploy
433454

434455
codeiq's deploy surface is **Maven Central + GitHub Releases** (per RAN-46 AC #10 ruling, option a). The single Java JAR (with the React UI bundled inside) is published via two `workflow_dispatch`-only workflows: `.github/workflows/beta-java.yml` (manual beta cut → Sonatype Central beta + GitHub pre-release) and `.github/workflows/release-java.yml` (manual GA cut with a `version` input → the workflow builds a GPG-signed release commit on a detached HEAD, deploys from that exact tree, then creates and pushes a GPG-signed annotated `vX.Y.Z` tag pointing at the release commit + a GitHub Release). There is no static-CDN frontend, no hosted backend, no VPS — codeiq runs on the developer's machine. See [`shared/runbooks/release.md`](shared/runbooks/release.md) and [`shared/runbooks/engineering-standards.md`](shared/runbooks/engineering-standards.md) §7.1.

0 commit comments

Comments
 (0)