Skip to content

ci: stop publishing foreign service images so GHCR packages attribute correctly - #50

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/inspiring-albattani-e87qeg
Jun 21, 2026
Merged

ci: stop publishing foreign service images so GHCR packages attribute correctly#50
hyperpolymath merged 1 commit into
mainfrom
claude/inspiring-albattani-e87qeg

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Why

The GHCR container packages selur, vordr, checky-monkey, palimpsest-license, svalinn, and cicd-hyper-a all show up under this repo's packages page even though they belong to other projects. That isn't a coincidence:

.github/workflows/trust-pipeline-images.yml built all 9 services from services/<name>/Containerfile and pushed them to ghcr.io/hyperpolymath/<name>. docker/metadata-action automatically injects the org.opencontainers.image.source OCI label derived from the repo running the workflow (odds-and-sods-package-manager), and GitHub uses that label to link each package to a repository. So every image OPSM built got silently attributed to OPSM.

Several of those services have their own upstream repos (and the vendored copies here are Rust reimplementations that don't even match the real artifacts — e.g. the real checky-monkey is Haskell + IPFS).

What

Build only the OPSM-native services here (no upstream repo of their own):

  • claim-forge
  • oikos
  • cerro-torre

Removed from the matrix (each published by its own repo so the GHCR link is correct):

Service Correct home
selur, vordr hyperpolymath/stapeln
checky-monkey hyperpolymath/checky-monkey
palimpsest-license hyperpolymath/palimpsest-license
svalinn hyperpolymath/svalinn
cicd-hyper-a retired name (project is hyperpolymath/hypatia) — not published

This is self-contained: trust-pipeline-e2e.yml pulls these images (it doesn't depend on the build job), so trimming the matrix doesn't break e2e.

Not in this PR (follow-ups)

  • Existing GHCR links must be fixed manually — the API can't relink/delete packages. For each mis-attributed package: Package → Settings → Connect repository (or delete and let the home repo republish). Delete cicd-hyper-a outright.
  • Home repos need their own build workflows + Containerfiles. svalinn currently has no Containerfile (its stapeln.toml points to one that doesn't exist), so it can't self-build an image yet.
  • Fully retiring the cicd-hyper-a name (it's still referenced in trust-pipeline-e2e.yml, selur-compose.yml, stapeln.toml, and the Elixir live-E2E test) is a separate change.
  • Optionally remove the vendored services/{selur,vordr,checky-monkey,palimpsest-license,svalinn} source trees now that they aren't built here.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J88oVkzkSn8DyHx3zxKeXS


Generated by Claude Code

…rrectly

The trust-pipeline-images workflow built all 9 services and pushed them to
ghcr.io/hyperpolymath/<service>. docker/metadata-action auto-injects the
org.opencontainers.image.source OCI label from the repo running the build, so
GitHub linked every package to odds-and-sods-package-manager — even for
services that have their own upstream repo.

Build only OPSM-native services here (claim-forge, oikos, cerro-torre). Images
for projects with their own repo are published by those repos instead, so the
GHCR package -> repository link points at the real source:
  selur, vordr       -> hyperpolymath/stapeln
  checky-monkey      -> hyperpolymath/checky-monkey
  palimpsest-license -> hyperpolymath/palimpsest-license
  svalinn            -> hyperpolymath/svalinn
cicd-hyper-a is a retired name (project is hyperpolymath/hypatia) and is no
longer published.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J88oVkzkSn8DyHx3zxKeXS
@hyperpolymath
hyperpolymath marked this pull request as ready for review June 21, 2026 23:42
@hyperpolymath
hyperpolymath merged commit a260520 into main Jun 21, 2026
10 of 12 checks passed
@hyperpolymath
hyperpolymath deleted the claude/inspiring-albattani-e87qeg branch June 21, 2026 23:43
hyperpolymath added a commit that referenced this pull request Jun 26, 2026
## Why

Follow-up to #50. Two more services were still built and pushed (now
also with build-provenance attestations from #55) under odds-and-sods,
mis-attributing their GHCR packages:

- **`oikos`** → belongs to **`hyperpolymath/oikosbot`**; the package
should be relinked there.
- **`claim-forge`** → part of a private system; it must not be published
as a public OPSM package (its source `services/claim-forge/` is also
public in this repo — see "open items").

`docker/metadata-action` injects `org.opencontainers.image.source` from
the repo running the build, so anything built here links to
odds-and-sods regardless of where it really belongs.

## What

Removes `oikos` and `claim-forge` from the `trust-pipeline-images` build
matrix. **`cerro-torre`** is now the only service still built here —
flagged in-file pending confirmation it has no upstream/private home of
its own.

This is self-contained: `trust-pipeline-e2e.yml` *pulls* these images
(it doesn't depend on the build job), so trimming the matrix doesn't
break e2e.

## Manual GHCR steps (API can't do these)

- `oikos`: Package → settings → unlink (🗑) → relink to `oikosbot`.
- `claim-forge`: delete the public package (and decide on the public
source — see below).

## Open items / follow-ups

- **claim-forge privacy** — `services/claim-forge/` is a real 229-line
public Rust service in this public repo. If it's meant to be private,
the *source* needs removing too, not just the package.
- **cerro-torre** — confirm whether it's OPSM-native (keep building) or
someone else's/private (remove).
- **Deletion coupling** — `oikos`/`claim-forge`/`cicd-hyper-a` are still
referenced by `trust-pipeline-e2e.yml`, `selur-compose.yml` and OPSM
core. Deleting the `claim-forge`/`cicd-hyper-a` packages needs a
separate pass to strip those references first, or e2e CI will fail to
pull them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_01J88oVkzkSn8DyHx3zxKeXS

---
_Generated by [Claude
Code](https://claude.ai/code/session_01J88oVkzkSn8DyHx3zxKeXS)_

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants