operator: reconcile dependency changes safely#139
Conversation
f58e28d to
1e3d893
Compare
OP-04 final split-reader proof
PR remains draft and mergeable. Remaining gate: authoritative Woodpecker proof for this exact mirrored SHA; no Woodpecker result is claimed here and no manual run was triggered. |
b056ec5 to
26d48a1
Compare
wolfiesch
left a comment
There was a problem hiding this comment.
Blocking isolation issue: session_controller.go authorizes the workspace PVC through the informer-backed client, then creates the Pod using only the claim name. A stale cached owned PVC can therefore authorize a Pod after the authoritative PVC has been replaced by a foreign object under the same deterministic name. I reproduced this with split cached/API-reader state; reconciliation succeeded and created a Pod referencing the foreign claim. Please re-read and validate the authoritative PVC immediately before Pod creation, including UID, owner, storage class, RWX and Bound state. The workspace readiness path should also avoid publishing authorization-critical state from stale PVC data.
26d48a1 to
502e012
Compare
185356b to
b98470d
Compare
OP line item
OP-04 — controller/reconciliation contract. Temporarily stacked on draft #136; this branch is based exactly on OP-02 commit
cb63bbddddf6f33a01420962c37752d0bbf23222and does not copy or shim OP-02.Observable contract
getpermissions remain least privilege; ready sessions retain bounded periodic convergence rather than broad Secret list/watch.Migration and rollback
No CRD, storage, or data migration. Rollback is the prior controller image/commit; deterministic owned resources and existing finalizers remain compatible. A rollback may delay dependency convergence to the existing periodic paths but does not require schema rollback.
Red/green proof
e8a94ba103c72aa8d75d45d9934296ac954b08c4(implementation intentionally absent; exact CI links pending).Non-goals
No OP-02 CRD lifecycle changes; no gateway, OpenAPI, client, runtime-provider, durable-ledger, image publication, deployment, broad ConfigMap/Secret watch permissions, or T4ClusterHost finalizer.
Wall time: 0.89 seconds
OP-04 final reconciliation proof
578f48a408e1b64fc96a5ff663a2a725db99bb2f; verified on Roy GitHub andz-peterson/t4-codeGitLab mirror.49622d89bf965e10dc7487d093157e1932124cd7, run 29873799320, cluster 88779780287: normal Pod/Service conflicts reset validated dependency conditions.bc4a2c3run 29875214845 cluster88784196462;59e7d01run 29875380531 cluster88784777240;a900edfrun 29876239117 cluster88787331715;76de2efrun 29877245162 cluster88790391562.578f48a408e1b64fc96a5ff663a2a725db99bb2f(confidence 0.99; no findings).