Commit graph

170 commits

Author SHA1 Message Date
bdb981be2b fix(registrar): bind workplan files to their records in the same pass
backing_filename is what lets the read model tell a file-backed workplan from
a hub-only orphan. It is written by PUT /workplans/index/bindings, which
fix-consistency calls for workplans that already carry a UUID — but the
registrar mints the UUID afterwards, so a freshly registered workplan stayed
unbound until someone happened to run fix-consistency a second time.

Nobody did: 278 of 800 workplans on central recorded no backing file,
including four active and four ready. ADR-010 predicted this as the
"broken links" class.

The registrar now syncs bindings after minting, and on the noop path too —
otherwise a record whose earlier bind failed stays unbound forever, because
every later run returns early.

Binding never fails the registration: the identifiers are already minted and
committed, and a bind can be retried.

Status is sent only when already canonical. The binding schema validates
against the enum without normalising, so one legacy value 422s the whole
batch; omitting beats guessing a mapping that could drift from canon.

Refs CUST-WP-0068-T07

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-25 15:39:11 +02:00
667bac3080 style(registrar): fix continuation indent in _check_primary call
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-25 10:33:41 +02:00
10bdb683cb fix(registrar): make --confirm-primary assert authority, not liveness
_check_primary accepted any instance reporting status=ok and db=connected.
A local cache and the central hub both satisfied that for seven weeks while
every registration went to the cache — a liveness check wearing an authority
check's name.

It now requires the hub to declare instance_role=primary. An instance that
declares nothing is refused with a message naming what to set; proceeding
anyway requires an explicit --allow-unverified-primary rather than a silent
default.

Four tests cover the logic directly; the existing suite stubbed _check_primary
and never exercised it.

Refs CUST-WP-0067-T03

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-25 10:32:51 +02:00
68943631d8 docs(agents): repoint remote State Hub URL to the in-cluster address
The remote row pointed at 127.0.0.1:18000, a reverse tunnel back to the
workstation. On railiance01 the State Hub runs in the cluster on that same
machine, so the request left the box and came back to reach a local service.

Refs CUST-WP-0067-T07

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-25 00:21:56 +02:00
1be6d85397 feat(onboard): add rmgr repo-onboard, the missing managed_repos write path
hub-record-authority.yaml assigns managed_repos to repo-manager as
file-derived, but repo-manager exposed no command for it. The only working
path lived in the State Hub repo and defaulted to 127.0.0.1:8000, which is how
seven weeks of onboarding landed in a local cache instead of central.

Order follows ADR-010 decision 5: make the source file correct and reachable
first, then project it. Refuses to onboard when the classification file is
missing or invalid, has uncommitted changes, has no upstream, or has unpushed
commits — a hub record whose backing file is only local cannot be re-derived
by anyone else.

--api-base has no default on purpose. A silent localhost default is the
original defect, not a convenience.

A failed classification PATCH degrades to a warning rather than failing the
run: the authoritative record existing is what stops a repository from being
recoverable only through a discardable cache, and classification is a
projection of a committed file that can be re-derived later.

Refs CUST-WP-0067-T04

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 2583210@bnt-lap001
Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
2026-08-24 23:33:22 +02:00
885575802c fix(identity): enforce qualified ad-hoc identifiers
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 14:45:26 +02:00
2f74cbd3dd chore(canon): sync work-record identifier grammar
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 14:11:15 +02:00
762fa919db docs(registrar): record Custodian proof
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 12:29:50 +02:00
7b9fdaa734 fix(registrar): bound slow consistency runs
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 11:58:43 +02:00
7a15f1da21 fix(registrar): scope identity preflight
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b22-9638-76d2-bbff-b7ea1770b118
2026-08-23 11:49:59 +02:00
4398167580 fix(identifiers): reject unproven assignments
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:54:24 +02:00
055c6971ab feat(identifiers): verify batch projections
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:50:34 +02:00
e6cc18bf18 feat(sbom): project immutable Forgejo source refs
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:34:01 +02:00
b068e9da42 feat(sbom): add authoritative Nexus client
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:26:45 +02:00
custodian-sync
135b1647d7 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:26:32 +02:00
84952c5212 feat: harden work-record and SBOM client contracts
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:19:36 +02:00
custodian-sync
2577379e36 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:18:37 +02:00
b7d9bef1e1 chore(consistency): index batch approval resolution
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:06:40 +02:00
63c00f9c9d docs(identifiers): record railiance-cluster cutover
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 23:04:30 +02:00
repo-manager
c3e22baf5a repo.work.resolve_decision RMGR-DEC-2026-003
correlation_id: 050f9ce4-a6eb-4783-bb7f-e3864a788366
reason: Resolve exact batch approval
source: repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 22:34:15 +02:00
bf1dff9936 docs(workplan): record SBOM client readiness gate
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 22:28:10 +02:00
f0200c0434 chore(registrar): assign State Hub identifiers
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 22:26:49 +02:00
062a45fc58 docs(workplans): prepare identifier batch and SBOM client follow-up
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 22:25:11 +02:00
custodian-sync
bc0ee85ffa chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a028f0-a42f-7582-89a8-ebaad7343834
2026-08-22 20:23:40 +02:00
ad0ba6f2ba refactor: delegate SBOM scans to Nexus
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a028f0-a42f-7582-89a8-ebaad7343834
2026-08-22 20:22:45 +02:00
custodian-sync
6d57d1c1b2 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:50:18 +02:00
cc22a6c3c9 chore(consistency): index resolved markitect batch
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:49:43 +02:00
custodian-sync
5b4b6805f9 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:49:22 +02:00
0362ed8d12 docs(identifiers): record markitect cutover
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:48:41 +02:00
repo-manager
09dcd010fa repo.work.resolve_decision RMGR-DEC-2026-002
correlation_id: 16dd3006-db47-4499-95f7-008e86ff59ac
reason: Resolve exact batch approval
source: repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:27:29 +02:00
custodian-sync
a8ecc3a74d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:25:25 +02:00
aabb8bf2b2 fix(decision): align markitect approval identity
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:24:49 +02:00
5de5905793 chore(registrar): register markitect batch decision
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:22:57 +02:00
1250fa87f7 docs(identifiers): prepare markitect cutover batch
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:21:56 +02:00
custodian-sync
b6ea4d655d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:15:28 +02:00
bf7b2f2fed chore(consistency): index approved identifier batch
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:14:43 +02:00
custodian-sync
fefb48791d chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:14:24 +02:00
e7f3eece34 docs(identifiers): record whynot cutover
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:13:50 +02:00
repo-manager
bb915a64fe repo.work.resolve_decision RMGR-DEC-2026-001
correlation_id: 51692cbd-e362-46ec-86ca-6a02d5931834
reason: Resolve exact batch approval
source: repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 16:03:57 +02:00
repo-manager
5a5091ca01 chore(registrar): assign State Hub identifiers
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:58:45 +02:00
custodian-sync
0ab9110793 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:58:43 +02:00
5e14d09bdf feat(identifiers): prepare verified cutover batches
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:57:56 +02:00
custodian-sync
bdf3af19e2 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:56:55 +02:00
a7145b5bf5 chore(consistency): refresh custodian brief
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:17:16 +02:00
890f3b05b5 feat(handoffs): publish owner task interfaces
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:15:48 +02:00
custodian-sync
a3952113d5 chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:15:24 +02:00
repo-manager
86a00f3d3c chore(registrar): assign State Hub identifiers
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:05:25 +02:00
custodian-sync
4e7e30c1ac chore(consistency): sync task status from DB [auto]
Updated by fix-consistency on 2026-08-22:
  - update .custodian-brief.md for repo-manager

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:05:22 +02:00
72bcb62ff9 docs(workloads): record adoption handoffs
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:04:43 +02:00
b36b68bc57 feat(workloads): define authoritative reference contract
Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a023c0-a0a3-7c03-b395-5a0d2757214d
2026-08-22 14:03:07 +02:00