A sbom management service
Find a file
tegwick 503bebcb0b workplans: close database lease rotation
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 01:11:03 +02:00
.claude/rules feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
.forgejo/workflows feat: package dark deployment runtime 2026-08-22 13:59:24 +02:00
docs feat: add controlled source ingestion and replay 2026-08-22 23:57:37 +02:00
migrations fix: commit migration role assumption 2026-08-23 00:16:54 +02:00
registry feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
scripts feat: add repository projection synchronization 2026-08-22 16:52:47 +02:00
src/sbom_nexus fix: commit migration role assumption 2026-08-23 00:16:54 +02:00
tests fix: commit migration role assumption 2026-08-23 00:16:54 +02:00
workplans workplans: close database lease rotation 2026-08-23 01:11:03 +02:00
.custodian-brief.md chore(consistency): sync task status from DB [auto] 2026-08-23 01:08:40 +02:00
.dockerignore feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
.gitignore feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
.repo-classification.yaml feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
AGENTS.md feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
alembic.ini feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
CLAUDE.md feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
Containerfile feat: package dark deployment runtime 2026-08-22 13:59:24 +02:00
INTENT.md feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
LICENSE feat: establish sbom nexus extraction slice 2026-08-22 12:50:08 +02:00
Makefile feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
ProductRequirementsDocument.md feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
pyproject.toml feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
README.md fix: adopt rotated database leases 2026-08-23 00:11:11 +02:00
SCOPE.md feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
uv.lock feat: prepare postgres sbom cutover 2026-08-22 13:14:24 +02:00
WORK-RECORDS.md workplans: close database lease rotation 2026-08-23 01:11:03 +02:00

sbom-nexus

SBOM Nexus is the dedicated software-bill-of-materials service for the Coulomb fleet. It captures dependency evidence from repositories, keeps immutable snapshots, evaluates licence risk and freshness, and provides a bounded catch-up queue for automation.

The product direction is defined in INTENT.md. The first delivery contract is in ProductRequirementsDocument.md.

Development

uv sync --dev
uv run pytest
uv run ruff check src tests
uv run sbom-nexus serve --reload

The default API listens on http://127.0.0.1:8010. Local development uses SQLite through SBOM_NEXUS_DATABASE_PATH; production uses SBOM_NEXUS_DATABASE_URL_FILE=/var/run/secrets/.../url and make migrate. The direct SBOM_NEXUS_DATABASE_URL variable remains available for disposable development environments; mounted secret files are preferred for production. The runtime rereads the mounted file for every new database connection and recycles pooled connections every 300 seconds by default, configurable with SBOM_NEXUS_DATABASE_POOL_RECYCLE_SECONDS.

Initial API surface

  • GET /state/health
  • GET /state/live
  • PUT /repositories/{repo_slug}
  • GET /sbom/catch-up?limit=3
  • POST /sbom/{repo_slug}/ingest
  • State Hub-compatible /sbom/ snapshot, entry, repository, and licence routes

Authoritative automation may ingest a controlled forgejo-archive-v1 source_ref pinned to a full commit SHA. Nexus constructs the Forgejo URL, streams and safely extracts the archive within configured limits, records the archive and manifest provenance, and removes the transient directory. It does not accept arbitrary source URLs. Idempotency-Key is durably enforced on repository ingest and skip operations; a matching retry replays the original snapshot outcome and conflicting key reuse returns HTTP 409.

See docs/state-hub-sbom-extraction-review.md for the extraction inventory and cutover dispositions.