fix(compose): repair minio-init one-shot before F3 migration #310

Closed
opened 2026-05-17 01:56:28 +02:00 by codex · 1 comment
Collaborator

Context

During the 2026-05-17 F3 light/sidecar batch, operator requested minio-init together with coredns, honcho-api, honcho-deriver, and karakeep.

The other four were migrated/smoked successfully. minio-init was not safe to run as a normal F3 no-op smoke.

Evidence

  • modules/minio-init/module.yaml fails strict-v2 validation: missing intent.user_facing_outcome, intent.acceptance_criteria, and runtime image audit fields.
  • Live container: home-platform-minio-init-1 status=exited exit=1.
  • docker logs home-platform-minio-init-1 prints mc help output.
  • docker inspect home-platform-minio-init-1 shows entrypoint=["/bin/sh","-c"] and cmd=["mc","alias","set",...], which means the shell executes only mc instead of the full init script.
  • Canonical compose/core/compose.yaml currently renders the same broken shape in docker compose config minio-init.

Why this blocks F3 no-op smoke

platformctl-auto-apply.yml F3 is intentionally no-op-only: it refuses apply when the plan is not in-sync. Since the live init container is exited and the compose command shape is wrong, this needs a real fix/re-run path, not a no-op health smoke.

Suggested next path

  1. Fix compose/core/compose.yaml so minio-init passes the whole command string as a single sh -c script.
  2. Fill strict-v2 fields for modules/minio-init/module.yaml.
  3. Decide the health contract for a one-shot init service: likely verify MinIO container health plus expected buckets, not home-platform-minio-init-1 running forever.
  4. Run with explicit operator approval because this is a real one-shot apply, not a no-op F3 smoke.

References

  • PR #309 enabled the successful sidecar-bound Karakeep F3 path.
  • Issue #142 main RS2000 migration thread.
## Context During the 2026-05-17 F3 light/sidecar batch, operator requested `minio-init` together with `coredns`, `honcho-api`, `honcho-deriver`, and `karakeep`. The other four were migrated/smoked successfully. `minio-init` was not safe to run as a normal F3 no-op smoke. ## Evidence - `modules/minio-init/module.yaml` fails strict-v2 validation: missing `intent.user_facing_outcome`, `intent.acceptance_criteria`, and runtime image audit fields. - Live container: `home-platform-minio-init-1 status=exited exit=1`. - `docker logs home-platform-minio-init-1` prints `mc` help output. - `docker inspect home-platform-minio-init-1` shows `entrypoint=["/bin/sh","-c"]` and `cmd=["mc","alias","set",...]`, which means the shell executes only `mc` instead of the full init script. - Canonical `compose/core/compose.yaml` currently renders the same broken shape in `docker compose config minio-init`. ## Why this blocks F3 no-op smoke `platformctl-auto-apply.yml` F3 is intentionally no-op-only: it refuses apply when the plan is not in-sync. Since the live init container is exited and the compose command shape is wrong, this needs a real fix/re-run path, not a no-op health smoke. ## Suggested next path 1. Fix `compose/core/compose.yaml` so `minio-init` passes the whole command string as a single `sh -c` script. 2. Fill strict-v2 fields for `modules/minio-init/module.yaml`. 3. Decide the health contract for a one-shot init service: likely verify MinIO container health plus expected buckets, not `home-platform-minio-init-1` running forever. 4. Run with explicit operator approval because this is a real one-shot apply, not a no-op F3 smoke. ## References - PR #309 enabled the successful sidecar-bound Karakeep F3 path. - Issue #142 main RS2000 migration thread.
Author
Collaborator

Codex Wave 1 M01 closeout — resolved by minio-init one-shot fix

Role: executor
Action: closing as resolved

Evidence checked read-only on RS2000:

  • release root: /opt/pdurlej-platform/current -> releases/c6928decfb42e12756ca4cd638fa66c704ba9498
  • home-platform-minio-init-1: exited exit=0
  • home-platform-minio-1: running health=healthy
  • minio-init logs show successful bucket bootstrap for artifacts, archives, and backups-staging
  • modules/minio-init/module.yaml now has strict-v2 intent/runtime fields and expected_state: exited-success
  • modules/minio-init/runbook.md documents the one-shot health contract and operator-gated rerun procedure
  • compose/core/compose.yaml now passes the full script through sh -c (entrypoint: ["/bin/sh"], command: [-c, | ...])

No production mutation was performed by this comment; checks were read-only.

## Codex Wave 1 M01 closeout — resolved by minio-init one-shot fix **Role:** executor **Action:** closing as resolved Evidence checked read-only on RS2000: - release root: `/opt/pdurlej-platform/current -> releases/c6928decfb42e12756ca4cd638fa66c704ba9498` - `home-platform-minio-init-1`: `exited exit=0` - `home-platform-minio-1`: `running health=healthy` - minio-init logs show successful bucket bootstrap for `artifacts`, `archives`, and `backups-staging` - `modules/minio-init/module.yaml` now has strict-v2 intent/runtime fields and `expected_state: exited-success` - `modules/minio-init/runbook.md` documents the one-shot health contract and operator-gated rerun procedure - `compose/core/compose.yaml` now passes the full script through `sh -c` (`entrypoint: ["/bin/sh"]`, `command: [-c, | ...]`) No production mutation was performed by this comment; checks were read-only.
codex closed this issue 2026-05-24 08:24:18 +02:00
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#310
No description provided.