chore(minio-init): prepare W8.1 pilot upgrade packet #502

Closed
opened 2026-05-26 08:52:26 +02:00 by codex · 1 comment
Collaborator

Spec sources (whitelist)

  • modules/minio-init/module.yaml
  • modules/minio-init/runbook.md
  • state/cycle/W8-module-upgrade-prep.md §Pilot Default / Required Evidence Per Upgrade PR / Stop Conditions
  • decisions/0022-module-source-and-release-boundaries.md §Update workflow
  • #501 W8.0 readiness output, after it lands

Extracted context

From modules/minio-init/module.yaml:

spec.source.kind: upstream-image
spec.source.repo: minio/mc
spec.source.ref: RELEASE.2025-08-13T08-35-41Z-cpuv1
spec.source.update_policy.mode: propose-pr
spec.artifact.kind: oci-image
spec.artifact.image: minio/mc
spec.runtime.host: rs2000
spec.runtime.expected_state: exited-success
spec.runtime.statefulness: sidecar-bound
spec.release.migration_policy: manual-confirm
spec.release.rollback_capability: manual
spec.release.backup_ref_modules: [minio]

From state/cycle/W8-module-upgrade-prep.md:

First W8.1 candidate: minio-init.
Reason: one-shot helper semantics are documented; not the Forgejo workbench;
lower operator-facing blast radius than Traefik/Forgejo/Infisical/Postgres;
success can prove the update PR + digest + smoke pattern.
Every W8 upgrade PR must include old tag/digest and new tag/digest,
upstream release notes or changelog pointer, risk class, backup-before requirement,
exact smoke command, rollback image/tag/digest, and whether production apply is requested.

From decisions/0022-module-source-and-release-boundaries.md:

A platform update job or agent detects a new upstream version.
The update job opens a platform PR with version/digest delta and release notes.
Risk policy decides whether this is manual, proposed, or auto-mergeable.
Stateful, public-edge, auth, and security-sensitive modules stay manually gated until explicit policy says otherwise.

Do NOT read (unless escape hatch fires)

  • Forgejo upgrade plan — core/workbench upgrades are W8.final, not this pilot.
  • Production host logs or runtime files — this issue prepares a PR packet only.
  • Broad module inventory beyond #501 output — do not re-run W8.0 here.

Allowed touched paths

  • modules/minio-init/module.yaml (modify, if an exact new tag/digest candidate is verified)
  • modules/minio-init/runbook.md (modify only for smoke/rollback wording tied to the pilot)
  • state/cycle/W8-minio-init-pilot.md (create)
  • state/cycle/W8-module-upgrade-prep.md (modify only to link accepted pilot output)

Why this exists (product-first)

W8 needs one low-blast-radius pilot that proves the platform can review artifact/digest upgrades without jumping straight to Forgejo or stateful core services. minio-init is a one-shot helper with documented side effects, so it is the best first mechanical test if W8.0 confirms the metadata is sufficient.

Why this matters now

The platform has source/artifact metadata for only a small subset of modules. A narrow minio-init pilot gives agents a repeatable upgrade packet format before any broad or core module upgrade wave.

What "done" looks like

  • #501 is complete or the PR explicitly cites why its output is not needed.
  • Current upstream minio/mc candidate tag and digest are verified from a primary registry/source at pickup time.
  • The PR records old tag/digest and candidate tag/digest.
  • The PR links upstream release notes/changelog or explicitly records that no release notes were found.
  • Risk class is stated as sidecar-bound and backup-before requirement is explicitly yes/no with rationale.
  • Exact smoke command and expected result are documented.
  • Rollback image/tag/digest is documented.
  • The PR does not apply, recreate, restart, or mutate production.
  • If the candidate requires production mutation to verify, the PR stops and asks for operator approval instead.

Scope

In scope:

  • Prepare a platform PR packet for the first W8.1 candidate.
  • Update desired source/artifact metadata only if the exact upstream candidate is verified.
  • Improve runbook smoke/rollback instructions if needed.

Out of scope:

  • Running platformctl apply.
  • Recreating minio-init or minio.
  • Creating backups.
  • Any upgrade to MinIO itself.
  • Any Forgejo/core/workbench upgrade.

Suggested approach

  1. Wait for or consume #501 W8.0 readiness output.
  2. Verify upstream minio/mc tags/digests using a primary source and record the exact command/source in the PR.
  3. Produce the smallest PR possible: metadata delta plus state/cycle/W8-minio-init-pilot.md evidence packet.
  4. Mark production apply as out of scope unless the operator explicitly comments approval.

Escape hatch

If upstream tag/digest verification is ambiguous, if digest differs by platform without a clear manifest-list answer, or if release notes cannot be tied to the candidate, do not update module.yaml. Instead create only the evidence artifact and mark the issue blocked.

Unknowns / owner questions

  • None before #501. Runtime execution requires a separate operator approval comment.

Risk class

  • risk/runtime — platform may not run, recover, validate, behave reproducibly
  • risk/process — workflow/review/orchestration may produce bad outcomes

Class of service

  • class/security-sensitive

Trace

  • Original source: #389, #501, Oracle review platform-pr488-wave-status, and operator approval on 2026-05-26.
  • Migrated by: codex, 2026-05-26.
  • Related issues / PRs: #389, #501, #500.
## Spec sources (whitelist) - `modules/minio-init/module.yaml` - `modules/minio-init/runbook.md` - `state/cycle/W8-module-upgrade-prep.md` §Pilot Default / Required Evidence Per Upgrade PR / Stop Conditions - `decisions/0022-module-source-and-release-boundaries.md` §Update workflow - #501 W8.0 readiness output, after it lands ## Extracted context > From `modules/minio-init/module.yaml`: > ``` > spec.source.kind: upstream-image > spec.source.repo: minio/mc > spec.source.ref: RELEASE.2025-08-13T08-35-41Z-cpuv1 > spec.source.update_policy.mode: propose-pr > spec.artifact.kind: oci-image > spec.artifact.image: minio/mc > spec.runtime.host: rs2000 > spec.runtime.expected_state: exited-success > spec.runtime.statefulness: sidecar-bound > spec.release.migration_policy: manual-confirm > spec.release.rollback_capability: manual > spec.release.backup_ref_modules: [minio] > ``` > From `state/cycle/W8-module-upgrade-prep.md`: > ``` > First W8.1 candidate: minio-init. > Reason: one-shot helper semantics are documented; not the Forgejo workbench; > lower operator-facing blast radius than Traefik/Forgejo/Infisical/Postgres; > success can prove the update PR + digest + smoke pattern. > Every W8 upgrade PR must include old tag/digest and new tag/digest, > upstream release notes or changelog pointer, risk class, backup-before requirement, > exact smoke command, rollback image/tag/digest, and whether production apply is requested. > ``` > From `decisions/0022-module-source-and-release-boundaries.md`: > ``` > A platform update job or agent detects a new upstream version. > The update job opens a platform PR with version/digest delta and release notes. > Risk policy decides whether this is manual, proposed, or auto-mergeable. > Stateful, public-edge, auth, and security-sensitive modules stay manually gated until explicit policy says otherwise. > ``` ## Do NOT read (unless escape hatch fires) - Forgejo upgrade plan — core/workbench upgrades are W8.final, not this pilot. - Production host logs or runtime files — this issue prepares a PR packet only. - Broad module inventory beyond #501 output — do not re-run W8.0 here. ## Allowed touched paths - `modules/minio-init/module.yaml` (modify, if an exact new tag/digest candidate is verified) - `modules/minio-init/runbook.md` (modify only for smoke/rollback wording tied to the pilot) - `state/cycle/W8-minio-init-pilot.md` (create) - `state/cycle/W8-module-upgrade-prep.md` (modify only to link accepted pilot output) ## Why this exists (product-first) W8 needs one low-blast-radius pilot that proves the platform can review artifact/digest upgrades without jumping straight to Forgejo or stateful core services. `minio-init` is a one-shot helper with documented side effects, so it is the best first mechanical test if W8.0 confirms the metadata is sufficient. ## Why this matters now The platform has source/artifact metadata for only a small subset of modules. A narrow `minio-init` pilot gives agents a repeatable upgrade packet format before any broad or core module upgrade wave. ## What "done" looks like - [ ] #501 is complete or the PR explicitly cites why its output is not needed. - [ ] Current upstream `minio/mc` candidate tag and digest are verified from a primary registry/source at pickup time. - [ ] The PR records old tag/digest and candidate tag/digest. - [ ] The PR links upstream release notes/changelog or explicitly records that no release notes were found. - [ ] Risk class is stated as `sidecar-bound` and backup-before requirement is explicitly yes/no with rationale. - [ ] Exact smoke command and expected result are documented. - [ ] Rollback image/tag/digest is documented. - [ ] The PR does **not** apply, recreate, restart, or mutate production. - [ ] If the candidate requires production mutation to verify, the PR stops and asks for operator approval instead. ## Scope **In scope:** - Prepare a platform PR packet for the first W8.1 candidate. - Update desired source/artifact metadata only if the exact upstream candidate is verified. - Improve runbook smoke/rollback instructions if needed. **Out of scope:** - Running `platformctl apply`. - Recreating `minio-init` or `minio`. - Creating backups. - Any upgrade to MinIO itself. - Any Forgejo/core/workbench upgrade. ## Suggested approach 1. Wait for or consume #501 W8.0 readiness output. 2. Verify upstream `minio/mc` tags/digests using a primary source and record the exact command/source in the PR. 3. Produce the smallest PR possible: metadata delta plus `state/cycle/W8-minio-init-pilot.md` evidence packet. 4. Mark production apply as out of scope unless the operator explicitly comments approval. ## Escape hatch If upstream tag/digest verification is ambiguous, if digest differs by platform without a clear manifest-list answer, or if release notes cannot be tied to the candidate, do not update `module.yaml`. Instead create only the evidence artifact and mark the issue blocked. ## Unknowns / owner questions - None before #501. Runtime execution requires a separate operator approval comment. ## Risk class - [x] `risk/runtime` — platform may not run, recover, validate, behave reproducibly - [x] `risk/process` — workflow/review/orchestration may produce bad outcomes ## Class of service - [ ] `class/security-sensitive` ## Trace - Original source: #389, #501, Oracle review `platform-pr488-wave-status`, and operator approval on 2026-05-26. - Migrated by: codex, 2026-05-26. - Related issues / PRs: #389, #501, #500.
Author
Collaborator

Picking up as codex; sequencing: #501 first, then #502 only after readiness evidence. Runtime mutation stays out of scope.

Picking up as codex; sequencing: #501 first, then #502 only after readiness evidence. Runtime mutation stays out of scope.
Sign in to join this conversation.
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform#502
No description provided.