Files
archy/scripts
archipelagoandClaude Opus 5 96acd388d7 fix(catalog): generate against the fleet's trust floor, not the repo's host
sign-catalog.sh refused to sign a freshly regenerated catalog:

  REFUSING: the catalog names registry hosts the deployed fleet does not
  trust.  source.archipelago-foundation.org — 78 image refs

It was right, and the check earned its place. apps/*/manifest.yml moved to
the public domain in 8e814ca0, but releases/registry-trust-floor.json still
lists only docker.io, ghcr.io, localhost and the OVH host — the migration is
ship-binary -> confirm-fleet -> promote-floor -> regenerate, and only the
first move happened. A full regen therefore produced a catalog naming a host
no deployed binary trusts, which would have failed every install in the field
with "not from a trusted registry". Verifying that an image PULLS from the
domain (it does, including from a fleet node) does not verify that shipped
binaries ACCEPT it — different checks.

Two fixes, no manifest churn:
- image-versions.sh honours a caller-supplied ARCHY_REGISTRY instead of
  overwriting it, so generation can target a host inside the floor.
- the generator retargets OUR registry host inside embedded manifests to
  whatever it is generating against, leaving docker.io/ghcr.io refs alone.
  REGISTRY moves above the embed block, which now depends on it.

The repo keeps naming the public domain; only the generated artifact is
pinned to what the fleet can actually use. When the floor is promoted,
generating against the domain becomes a no-op here.

Verified: check-catalog-registry-trust.py passes, 11 docker.io/ghcr.io refs
untouched, and the diff against the signed catalog is exactly one app —
bitcoin-knots, :latest/20260508 -> :29.3.knots20260210 across all four fields.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 04:52:18 -04:00
..
2026-05-06 09:23:57 -04:00