feat: harden work-record and SBOM client contracts
Assistant: codex Assistant-Model: gpt-5.6-sol Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
This commit is contained in:
parent
2577379e36
commit
84952c5212
16 changed files with 605 additions and 30 deletions
|
|
@ -288,6 +288,25 @@ two older workplans still carry production-absent random UUIDs and remain T04
|
|||
work; T02 therefore stays `wait`. Evidence:
|
||||
`docs/evidence/RMGR-WP-0005-rail-kubernetes-registrar-2026-08-22.md`.
|
||||
|
||||
**Standalone-record and duplicate-source hardening (2026-08-22):** owner
|
||||
feedback exposed that the governed top-level `intakes.md`/`decisions.md`
|
||||
filenames were absent from Repo Manager's explicit record-file allowlist.
|
||||
Consequently an intake-only reconciliation could return `noop`; it happened to
|
||||
work only when another missing record caused State Hub's broader pass to run.
|
||||
The scanner now recognizes both lowercase and uppercase governed filenames,
|
||||
and a direct scan of the Custodian source returns exactly `CUST-IN-0014` as
|
||||
missing.
|
||||
|
||||
The registrar and conformance paths now also implement the Custodian kind
|
||||
registry's identity-reconciliation ruling. Repeated canonical id plus the same
|
||||
non-null UUID is one indexed record with all source occurrences retained and a
|
||||
governed cleanup warning; conflicting or incomplete UUID assignments fail
|
||||
closed. The grandfathered `MASON-0001` and `MASON-0001-TNN` forms are loaded
|
||||
from the machine-readable canon mapping instead of being rewritten. Live proof
|
||||
against `ops-mason` indexes `MASON-0001-T01` once, preserves both task-block
|
||||
locations, and emits the cleanup diagnostic. T02 remains `wait` because its
|
||||
original pre-derivation reconciliation inventory is not yet exhausted.
|
||||
|
||||
## Derive identifiers deterministically
|
||||
|
||||
```task
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ type: workplan
|
|||
title: "SBOM Nexus production client and explicit preview semantics"
|
||||
domain: infotech
|
||||
repo: repo-manager
|
||||
status: ready
|
||||
status: active
|
||||
owner: codex
|
||||
topic_slug: infotech
|
||||
quality_dor: DoR-Ok
|
||||
|
|
@ -13,6 +13,7 @@ updated: "2026-08-22"
|
|||
parent_workplan: SBOM-WP-0002
|
||||
related:
|
||||
- CUST-WP-0062
|
||||
- CUST-WP-0064
|
||||
- RMGR-WP-0008
|
||||
state_hub_workstream_id: "a6cd9248-e591-51fc-82b0-a0f3799c3939"
|
||||
---
|
||||
|
|
@ -36,7 +37,7 @@ for callers that require authoritative state.
|
|||
|
||||
```task
|
||||
id: RMGR-WP-0011-T01
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "b3b0f4d9-de14-5429-bc4d-a14d014491b0"
|
||||
```
|
||||
|
|
@ -46,6 +47,15 @@ authoritative service routes. Treat additive fields as compatible, reject an
|
|||
unknown schema, and do not couple Repo Manager to Nexus database tables or
|
||||
migration internals.
|
||||
|
||||
**Result (2026-08-22):** `docs/sbom-nexus-client-contract_v1.md` pins the
|
||||
accepted `sbom-nexus.snapshot.v1` envelope and the Nexus-owned repository,
|
||||
ingest/skip, latest-snapshot, immutable-history, and licence-report routes.
|
||||
Additive response fields remain compatible; unknown schemas and missing
|
||||
required fields produce deterministic contract errors. The source handoff now
|
||||
joins `CUST-WP-0064`: Repo Manager supplies repository identity and revision,
|
||||
while the authoritative scan consumes a controlled revision-pinned source. A
|
||||
workstation filesystem must never be mounted into the cluster.
|
||||
|
||||
## Add the authoritative Nexus service client
|
||||
|
||||
```task
|
||||
|
|
@ -64,7 +74,7 @@ introduced through the platform path, must never enter files, output, or logs.
|
|||
|
||||
```task
|
||||
id: RMGR-WP-0011-T03
|
||||
status: todo
|
||||
status: done
|
||||
priority: high
|
||||
state_hub_task_id: "5cd717de-d696-5676-9abe-f1a701e48e7e"
|
||||
```
|
||||
|
|
@ -75,6 +85,13 @@ non-authoritative, and not persisted. The compatibility aliases must not imply
|
|||
that a preview advanced `last_attempt_at`, `last_success_at`, or snapshot
|
||||
history.
|
||||
|
||||
**Result (2026-08-22):** both compatibility aliases now identify every success
|
||||
and error as `mode: local-preview`, `authoritative: false`, `persisted: false`,
|
||||
and explicitly state that no last-attempt, last-success, or snapshot-history
|
||||
state advances. Saving preview JSON remains optional local evidence and cannot
|
||||
be interpreted as an ingest receipt. CLI help, operator documentation, and
|
||||
contract tests carry the same semantics.
|
||||
|
||||
## Prove cutover and remove ambiguity
|
||||
|
||||
```task
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue