Skip to content

chore: add .bestpractices.json + lint workflow#17

Merged
aksOps merged 1 commit intomainfrom
chore/bestpractices-json
May 1, 2026
Merged

chore: add .bestpractices.json + lint workflow#17
aksOps merged 1 commit intomainfrom
chore/bestpractices-json

Conversation

@aksOps
Copy link
Copy Markdown
Contributor

@aksOps aksOps commented May 1, 2026

Summary

The OpenSSF Best Practices BadgeApp at bestpractices.dev reads a repo's `.bestpractices.json` on demand to populate proposed answers when the maintainer clicks "Save (and continue) 🤖" on the project's edit page (per docs/bestpractices-json.md upstream).

This PR lands the project's source-of-truth answers for the 67 passing-tier criteria, plus a lint workflow.

`.bestpractices.json` — flat `_status` / `_justification` pairs.

  • 58 Met — license, docs, tests, CI, static analysis, crypto, delivery, vulnerabilities-clean, etc.
  • 3 Unmet — `contribution`, `contribution_requirements`, `vulnerability_report_process` (CONTRIBUTING.md + SECURITY.md not yet authored — kept honest rather than aspirational, with each justification noting the follow-up).
  • 6 N/A — `crypto_pfs` (TLS is the operator's reverse proxy), the four `dynamic_analysis_*` (Go is memory-safe; integration tests cover the realistic surface), `release_notes_vulns` (no published vulns yet).
  • 0 ?.

`.github/workflows/bestpractices.yml` — lints the file on every push or PR that touches it. Validates:

  1. JSON parses
  2. `_status` values ∈ {Met, Unmet, N/A, ?}
  3. Every `_status` has a matching `_justification` string
  4. All 67 passing-tier criteria from the upstream criteria.yml are present
  5. No unknown / typo'd criterion keys

The lint runs in plain Python 3 (no extra deps).

Follow-up to register the project

  1. Sign in at https://www.bestpractices.dev/en/projects/new with GitHub
  2. Submit; BadgeApp assigns a numeric PROJECT_ID
  3. Open the project's edit page → click "Save (and continue) 🤖" — the BadgeApp pulls `.bestpractices.json` from the repo and pre-fills every answer
  4. Update the README badge per the comment block in README.md (substitute PROJECT_ID)

Test plan

  • CI green
  • Lint workflow runs and passes on this PR
  • After merge, register the project at bestpractices.dev and confirm answers ingest cleanly

🤖 Generated with Claude Code

The OpenSSF Best Practices BadgeApp (bestpractices.dev) reads a repo's
.bestpractices.json on demand to populate proposed answers for each
criterion when the maintainer clicks "Save (and continue) 🤖" on the
project's edit page (per docs/bestpractices-json.md upstream).

This commit lands the project's source-of-truth answers for the 67
passing-tier criteria — flat <criterion>_status / <criterion>_justification
pairs with status one of Met / Unmet / N/A / ? — based on the current
state of ctm: MIT license, GitHub Issues + private security advisories,
GitHub Releases with checksums, SonarCloud + CodeQL on every push,
85.2% coverage, argon2id auth (V27), and so on.

Result: 58 Met / 3 Unmet / 6 N/A / 0 ?. The 3 Unmet are the
documentation gaps (CONTRIBUTING.md, SECURITY.md, formal vuln-report
process); they're tracked as follow-ups so the answers stay honest
rather than aspirational.

.github/workflows/bestpractices.yml lints the file on every push that
touches it: validates JSON parses, status values are in the allowed
set, every _status has a paired _justification, every passing-tier
criterion is present, and there are no unknown / typo'd criterion
keys (against the upstream criteria list mirrored in the workflow).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 1, 2026

@aksOps aksOps merged commit 93d6c7f into main May 1, 2026
12 checks passed
@aksOps aksOps deleted the chore/bestpractices-json branch May 1, 2026 10:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant