blumeops/docs/how-to
Erich Blume 04e036c603 Fold enforce-tag-immutability into harden-zot-registry (#235)
## Summary

- Removed `status: active` from `enforce-tag-immutability` card — its requirements are folded into the parent `harden-zot-registry` goal's `accessControl` configuration
- Updated `harden-zot-registry` with three-tier access control spec (anonymous read, artifact-workloads read+create, admins full)
- Added `artifact-workloads` group creation step to `register-zot-oidc-client`
- Added service account context to `wire-ci-registry-auth`

## Rationale

Tag immutability requires authentication to be meaningful. Without auth, everyone is anonymous and gets the same policy. Rather than client-side push checks, the registry enforces immutability server-side: CI gets `["read", "create"]` (no update/delete), so pushing an existing tag is rejected by zot itself.

## Test plan

- [ ] `mise run docs-check-links` passes
- [ ] `mise run docs-mikado` shows enforce-tag-immutability as resolved

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/235
2026-02-21 08:05:16 -08:00
..
authentik Adopt commit-based container tags (#232) 2026-02-20 22:56:20 -08:00
configuration Review: update-documentation doc (#220) 2026-02-19 17:40:05 -08:00
deployment Adopt commit-based container tags (#232) 2026-02-20 22:56:20 -08:00
knowledgebase Replace Homepage Helm chart with kustomize manifests and custom Dockerfile (#221) 2026-02-19 18:29:19 -08:00
operations Review gandi-operations doc and reorganize how-to guides (#200) 2026-02-17 07:29:33 -08:00
plans Create C2 Mikado cards for harden-zot-registry (#229) 2026-02-20 17:56:25 -08:00
zot Fold enforce-tag-immutability into harden-zot-registry (#235) 2026-02-21 08:05:16 -08:00
agent-change-process.md Adopt commit-based container tags (#232) 2026-02-20 22:56:20 -08:00
how-to.md Add install-dagger-on-nix-runner Mikado card (#233) 2026-02-20 23:03:12 -08:00