Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a028f0-a42f-7582-89a8-ebaad7343834
1.6 KiB
SBOM-WP-0002-T02 repository projection rehearsal — 2026-08-22
Result
The projection-only synchronization path is implemented and rehearsed against an isolated SBOM Nexus database. It does not scan repositories, invoke an ingest route, or create snapshots.
Source and selection
The current Repo Manager compatibility projection was read from State Hub's
GET /repos/ boundary using explicit host id bnt-lap001:
| Measure | Result |
|---|---|
| Source repositories | 120 |
| Active | 116 |
| Inactive | 4 |
| Selected checkout path | 120 |
The dry-run used an intentionally unreachable target URL and still completed, proving that dry-run does not contact or mutate the Nexus target.
Apply rehearsal
An ephemeral SQLite-backed Nexus on 127.0.0.1:18010 received the projection:
- 120 upserts;
- 120 exact active/path matches on read-back;
- zero missing, mismatched, or extra target repositories;
- zero SBOM ingest calls and zero snapshots.
The bounded catch-up query with limit=3 returned exactly three of 116 active,
never-attempted repositories, ordered deterministically by slug:
activity-core, adaptive-pricing, and agent-harness. The response reported
selected_count=3, never_count=116, stale_count=116, and
total_count=116.
Production apply remains gated on the dark PostgreSQL runtime in
SBOM-WP-0002-T01.
Verification
uv run ruff check src tests scripts: passuv run pytest -q: 15 passed, 1 conditional PostgreSQL skip- projection dry-run: 120 would-upsert, target not contacted
- projection apply/read-back: 120/120 matched
- bounded catch-up: 3/3 selected in deterministic order