|
| 1 | +# Corrected rollback pair — runtime record (2026-08-23) |
| 2 | + |
| 3 | +**Record ID:** `CORRECTED_ROLLBACK_PAIR_RUNTIME_20260823_01`. |
| 4 | +**Result:** **PASS** — the metadata-only probe revision and the corrected |
| 5 | +rollback to revision 3 both executed with every protected invariant held. |
| 6 | +**Authorization:** owner delegation of 2026-08-23 ("сделай все сам"); |
| 7 | +context `kind-agentflow-reverify-ed03fc47`, release `agentflow`, namespace |
| 8 | +`agentflow`; rollback target 3; revisions 1/2/4 forbidden. |
| 9 | + |
| 10 | +## Preflight (all PASS, read-only) |
| 11 | + |
| 12 | +- Packet `corrected-rollback-pair-20260803-01` file and dependency hashes |
| 13 | + intact; tracked chart inputs match frozen source commit `78742d0` |
| 14 | + (the live-repo copies have drifted since — renders must come from the |
| 15 | + frozen commit, which is what happened). |
| 16 | +- Renders reproduced bit-for-bit on BOTH hosts with helm |
| 17 | + `v3.16.3+gcfd0749` (Windows native; on the iMac a staged binary with |
| 18 | + the official checksum `495d75b4…`, system helm 3.15.4 untouched): |
| 19 | + baseline `c281ce6cab5478a8222877dc4361d702aded67db47b96b5a645b03bd9fd2e9e7`, |
| 20 | + probe `c09170d03f838454c6be8ea2502c252bf7270ed56f55e5d4dbb2c62c1bf34044`. |
| 21 | +- Live helm revision was exactly 3; the stored rev-3 manifest is |
| 22 | + structurally identical to the frozen baseline (byte hash differs only |
| 23 | + by helm storage formatting; structural three-object comparison equal). |
| 24 | +- Zero-failure hold exceeded: job `80e6e2be68fde261e281b847f1a0ae44` |
| 25 | + RUNNING since 13:58:51Z (the post-recovery fresh submit), 854/854 |
| 26 | + checkpoints, 0 failed at preflight. |
| 27 | +- Identity freeze: CR UID `031f8387-3436-4408-bc99-7fbcd58ccfbc`, |
| 28 | + generation 23; SA `agentflow-soak-rv` UID |
| 29 | + `4bb01109-8257-4670-9a24-c7e081df32f5`; image |
| 30 | + `agentflow-flink-local:78742d0-minpause0-groupoffsets-20260803-01`. |
| 31 | +- iMac DNS was down (AdGuard, known pattern) — all artifacts moved via |
| 32 | + `ssh 'cat > file' < local` with hash comparison at both ends; staging |
| 33 | + root `~/agentflow-rollback-pair-20260823-01/`. |
| 34 | + |
| 35 | +## Attempt ledger |
| 36 | + |
| 37 | +### Attempt 1 — probe revision 4: FAILED SAFE (webhook timeout) |
| 38 | + |
| 39 | +Server-side dry-run PASS (manifest ≡ probe, normalized). The real apply |
| 40 | +at 17:39:08 MSK failed: flink-operator mutating webhook |
| 41 | +`mutationwebhook.flink.apache.org` timed out (10 s) under VM load — the |
| 42 | +same webhook had served the dry-run 54 s earlier. The FlinkDeployment was |
| 43 | +NOT patched (gen 23, no probe key), revision 3 stayed deployed, and helm |
| 44 | +recorded revision 4 as `failed` (left in history as evidence). Per the |
| 45 | +packet's no-raw-retry rule the attempt ended there. |
| 46 | + |
| 47 | +### Successor packet |
| 48 | + |
| 49 | +`.codex-grok-tasks/corrected-rollback-pair-20260823-02/` — identical |
| 50 | +renders, dependencies, and probe annotation value; `source_revision: 5`; |
| 51 | +`forbidden_target_revisions: [1, 2, 4]`; supersession reason recorded in |
| 52 | +the contract. Mirrored to the staging root with matching hashes. |
| 53 | + |
| 54 | +### Attempt 2 — probe revision 5 → rollback revision 6: PASS |
| 55 | + |
| 56 | +Dry-run re-verified (manifest ≡ probe) and the apply followed in the same |
| 57 | +session window: revision **5** deployed 18:12:26 MSK. Verified at rev 5: |
| 58 | +CR UID and generation unchanged (gen 23 — metadata-only, no spec |
| 59 | +reconcile), SA UID unchanged, probe annotation |
| 60 | +`agentflow.dev/rollback-probe: corrected-rev4-to-rev3-20260803-01` |
| 61 | +present, all namespace pods 1/1, job RUNNING with the SAME start-time |
| 62 | +`1787493531399` (zero job restarts), checkpoints 1970 completed / 0 |
| 63 | +failed and growing. |
| 64 | + |
| 65 | +`helm rollback agentflow 3` then recorded revision **6** |
| 66 | +("Rollback to 3", deployed 18:13:36 MSK). Verified at rev 6: probe |
| 67 | +annotation gone, CR UID `031f8387…` and generation 23 unchanged, all pods |
| 68 | +1/1, job RUNNING with the same start-time and 0 failures, checkpoints |
| 69 | +1990/0 and growing, and the stored rev-6 manifest **byte-identical** to |
| 70 | +the stored rev-3 manifest (`9d555a8351aec0ec5bd2562b91076bf135b12588f6ea4fbce4ad46b33fafdf63` |
| 71 | +both). |
| 72 | + |
| 73 | +## Consumed and retained |
| 74 | + |
| 75 | +- Consumed: probe revision numbers 4 (failed) and 5 (superseded), packet |
| 76 | + `corrected-rollback-pair-20260803-01` (superseded) and |
| 77 | + `corrected-rollback-pair-20260823-02` (executed), rollback revision 6. |
| 78 | + Helm history now ends `... 4 failed / 5 superseded / 6 deployed |
| 79 | + Rollback to 3`; never target 1/2/4/5. |
| 80 | +- Retained evidence: staging root `~/agentflow-rollback-pair-20260823-01/` |
| 81 | + on the iMac (dry-run outputs, rendered baseline/probe, staged helm) and |
| 82 | + the failed-rev-4 history row. The API `/data` capture |
| 83 | + `~/agentflow-api-data-capture-20260823-01/` is unrelated to this gate |
| 84 | + and stays per its own note. |
| 85 | + |
| 86 | +## Claim boundary |
| 87 | + |
| 88 | +This closes the corrected-rollback mechanics gate: a real Helm revision |
| 89 | +pair on the live stand with UID/generation/JID/spec/checkpoint/offset |
| 90 | +invariance and a byte-identical restored manifest. It does NOT close the |
| 91 | +full-soak gate (F-02 stays `BLOCKED_HOST_CAPACITY` per |
| 92 | +`ci-soak-f02-capacity-decision-20260823-01.md`), does not elevate |
| 93 | +`production.status` (stays `candidate`), and ran no traffic. The |
| 94 | +rollback-after-soak variant on a capable host would need a fresh packet |
| 95 | +under the same discipline. |
0 commit comments