blumeops/docs
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
..
changelog.d Adopt commit-based container tags (#232) 2026-02-20 22:56:20 -08:00
explanation Integrate Forgejo with Authentik OIDC (#228) 2026-02-20 17:39:50 -08:00
how-to Fold enforce-tag-immutability into harden-zot-registry (#235) 2026-02-21 08:05:16 -08:00
reference Add dagger to nix-container-builder runner (#234) 2026-02-20 23:09:01 -08:00
tutorials Adopt commit-based container tags (#232) 2026-02-20 22:56:20 -08:00
index.md Fix frontmatter field name for Quartz date display (#158) 2026-02-11 16:45:12 -08:00
quartz.config.ts Move zk cards to docs/zk/ for documentation restructuring (#84) 2026-02-03 09:13:50 -08:00
quartz.layout.ts Move zk cards to docs/zk/ for documentation restructuring (#84) 2026-02-03 09:13:50 -08:00