Skip to content

Tight-race expireAfter Soak — シナリオ P

この検証の対象

leadTimeexpireAfter と本気で競争する状態を 12 時間持続させた実 EKS ソーク。実証: (1) graceful surge が常に先着(expired は 0 のまま)、(2) graceful が組めなくなった瞬間に forceful fallback が決定的に発火。

プールは固定 expireAfter: 2h12m — 導出 leadTime 1h12m のすぐ上 — で、サブデイリーウィンドウ(30 分周期 × 48 本/日)の下で実行。§3.2 の保証をライブで実証した。前提の validated 切り替えは §7.2、先行検証は シナリオ O、メトリクス定義は ランブック を参照。

実施: 2026-07-14T14:20:29Z(T0)→ +12h、EKS Auto Mode、K8s 1.36、us-west-2。 正本記録: test/e2e/eks-automode/VALIDATION.md(§ "Run: 2026-07-15 — Scenario P")。

判定: CLEAN PASS(12 PASS; 基準 13 は N/A — 未行使)。

71/71068.3 分56 秒
graceful 回転(12h 内 60 = 5.0/h)expired・failure・fallback・short_lead・restartdeadline margin 最小値エピローグ: 解凍 → fallback

導出スケジュール

過去の PoC は日次ウィンドウで巨大な expireAfter(E=336h)を使い、レースは常に大差勝ちだった。本検証は E を 2h12m に置き、12 時間の本気レースを持続。surge.forcefulFallback装備したまま(静穏性を同時実証)。

t_rot(上界)5m + 5m + 2m = 12m
t_rot_est(予測)5m + 5m = 10m
leadTime2·30m + 12m = 1h12m
ageThreshold(auto)2h12m − 1h12m = 1h
C(ウィンドウあたり)ceil(28m / 12m) = 3(6/h)
定常負荷N=5、5/h → 予測の 83%(タイト)
期待 findingswarn RotationSpansNextWindow が 1 件のみ

導出値は internal/schedule/schedule_test.goTestDeriveScenarioPSoak にピン留め。

margin の全体像

T0 から記録終了(T0+14.1h)まで: 71 回転すべてが新規 provision ノードへの graceful make-before-break surge。[T0, T_end] 内 60(= 5.0/h)、エピローグ中に 11 回転追加(~12 分間隔維持)。

margin(deadline − 完了): 68.3–71.2 分(全 71 回転、分散 < 3 分)。劣化の蓄積なし。

図 1 — 全 72 回転の deadline margin

横軸: T0 からの経過時間。縦軸: 完了時点で deadline までに残っていた時間(分)。T_end(12h 観測窓の終端、窓内 60 回転)より右の点は有人エピローグ期間中の完了で、刻みも margin も変わっていない。オレンジの 1 点がエピローグの意図的な fallback 発火(margin 10.1 分)— 本編の帯との落差がこの検証の要約になっている。

020406080T0+0hT0+2hT0+4hT0+6hT0+8hT0+10hT0+12hT0+14h本編 71 回転: 68.3〜71.2 分T_endgraceful surge claim fhx2b 完了 2026-07-14T14:20:29Z margin 70.3 分graceful surge claim xdjh8 完了 2026-07-14T14:32:30Z margin 70.4 分graceful surge claim 9xfpf 完了 2026-07-14T14:44:31Z margin 70.4 分graceful surge claim xl8fg 完了 2026-07-14T14:56:34Z margin 70.4 分graceful surge claim ksjxd 完了 2026-07-14T15:09:36Z margin 69.5 分graceful surge claim s88b7 完了 2026-07-14T15:20:46Z margin 70.4 分graceful surge claim bvpc6 完了 2026-07-14T15:32:27Z margin 70.8 分graceful surge claim 4txxs 完了 2026-07-14T15:45:06Z margin 70.2 分graceful surge claim 7s7dt 完了 2026-07-14T15:57:11Z margin 70.2 分graceful surge claim wbsfb 完了 2026-07-14T16:09:07Z margin 70.3 分graceful surge claim m4jzw 完了 2026-07-14T16:21:26Z margin 70.1 分graceful surge claim w4r59 完了 2026-07-14T16:32:58Z margin 70.7 分graceful surge claim 8bhbp 完了 2026-07-14T16:45:26Z margin 70.3 分graceful surge claim vrtvs 完了 2026-07-14T16:57:47Z margin 70 分graceful surge claim zwlds 完了 2026-07-14T17:09:47Z margin 70.1 分graceful surge claim sh6s8 完了 2026-07-14T17:22:03Z margin 69.9 分graceful surge claim xhbsc 完了 2026-07-14T17:33:55Z margin 70.1 分graceful surge claim hghwx 完了 2026-07-14T17:45:52Z margin 70.2 分graceful surge claim r284b 完了 2026-07-14T17:57:52Z margin 70.3 分graceful surge claim q592n 完了 2026-07-14T18:09:48Z margin 70.5 分graceful surge claim rwqpb 完了 2026-07-14T18:22:29Z margin 69.9 分graceful surge claim 6gdtf 完了 2026-07-14T18:33:35Z margin 70.8 分graceful surge claim 76xn9 完了 2026-07-14T18:46:28Z margin 70 分graceful surge claim zw4gm 完了 2026-07-14T18:58:19Z margin 70.3 分graceful surge claim 8bcgn 完了 2026-07-14T19:10:40Z margin 70 分graceful surge claim 8hld7 完了 2026-07-14T19:22:13Z margin 70.5 分graceful surge claim 656fc 完了 2026-07-14T19:34:25Z margin 70.4 分graceful surge claim d4d5d 完了 2026-07-14T19:47:01Z margin 69.9 分graceful surge claim 8nkrs 完了 2026-07-14T19:58:18Z margin 70.7 分graceful surge claim pmlpq 完了 2026-07-14T20:10:38Z margin 70.4 分graceful surge claim 6wvqx 完了 2026-07-14T20:22:30Z margin 70.7 分graceful surge claim kmh4m 完了 2026-07-14T20:34:25Z margin 70.8 分graceful surge claim xdtc9 完了 2026-07-14T20:46:56Z margin 70.4 分graceful surge claim jqmll 完了 2026-07-14T20:58:35Z margin 70.8 分graceful surge claim xsxbk 完了 2026-07-14T21:11:34Z margin 69.9 分graceful surge claim 8tp7t 完了 2026-07-14T21:24:00Z margin 69.6 分graceful surge claim pdcjt 完了 2026-07-14T21:35:18Z margin 70.4 分graceful surge claim jnrdw 完了 2026-07-14T21:47:21Z margin 70.4 分graceful surge claim 8hbzb 完了 2026-07-14T22:01:34Z margin 68.3 分graceful surge claim 7thv5 完了 2026-07-14T22:10:56Z margin 71 分graceful surge claim j8xsl 完了 2026-07-14T22:22:54Z margin 71.1 分graceful surge claim fkwv7 完了 2026-07-14T22:35:41Z margin 70.4 分graceful surge claim fjkq9 完了 2026-07-14T22:47:10Z margin 71 分graceful surge claim vsd8c 完了 2026-07-14T23:02:06Z margin 70.2 分graceful surge claim z9dl8 完了 2026-07-14T23:11:27Z margin 70.5 分graceful surge claim p9qdf 完了 2026-07-14T23:23:18Z margin 70.8 分graceful surge claim hwgp8 完了 2026-07-14T23:35:10Z margin 71 分graceful surge claim kgkmw 完了 2026-07-14T23:49:06Z margin 69.3 分graceful surge claim mjwgw 完了 2026-07-15T00:02:01Z margin 70.5 分graceful surge claim jvjhr 完了 2026-07-15T00:10:59Z margin 71.2 分graceful surge claim b9b96 完了 2026-07-15T00:23:11Z margin 71 分graceful surge claim rxf2c 完了 2026-07-15T00:36:09Z margin 70.1 分graceful surge claim xv8m2 完了 2026-07-15T00:48:49Z margin 70.5 分graceful surge claim dxq8p 完了 2026-07-15T01:03:19Z margin 69.3 分graceful surge claim kbm2x 完了 2026-07-15T01:11:15Z margin 71 分graceful surge claim lnlxb 完了 2026-07-15T01:23:16Z margin 71.1 分graceful surge claim kgj2d 完了 2026-07-15T01:36:04Z margin 70.3 分graceful surge claim tr854 完了 2026-07-15T01:49:04Z margin 70.4 分graceful surge claim d94p8 完了 2026-07-15T02:02:21Z margin 71.2 分graceful surge claim btlwz 完了 2026-07-15T02:12:01Z margin 70.3 分graceful surge claim nssls 完了 2026-07-15T02:24:09Z margin 70.2 分graceful surge claim xwpp9 完了 2026-07-15T02:36:18Z margin 70.2 分graceful surge claim 2fmbr 完了 2026-07-15T02:49:30Z margin 70.1 分graceful surge claim 88rjv 完了 2026-07-15T03:02:57Z margin 70.7 分graceful surge claim qdh2f 完了 2026-07-15T03:12:55Z margin 70.1 分graceful surge claim 97mm5 完了 2026-07-15T03:24:26Z margin 70.3 分graceful surge claim rbv8l 完了 2026-07-15T03:36:23Z margin 70.5 分graceful surge claim 77m27 完了 2026-07-15T03:49:49Z margin 70.1 分graceful surge claim 5qwn6 完了 2026-07-15T04:04:16Z margin 69.8 分graceful surge claim zv9gp 完了 2026-07-15T04:14:16Z margin 69.1 分forceful fallback claim epi-gtx42 完了 2026-07-15T04:24:46Z margin 10.1 分graceful surge claim 49pqr 完了 2026-07-15T04:25:24Z margin 70 分epi: 10.1 分(意図的発火)
graceful surge(本編 71) forceful fallback(epi 1)

13 基準

#基準判定
1expired == 0PASS
2success ≈5/h、計 ≥ 40PASS(12h 内 60)
3本編 forceful_fallback == 0PASS(静穏性)
4short_lead_nodes == 0PASS(909 スクレイプ)
5restart 0、seq 連続PASS
6負荷継続(全スナップショット)PASS(desired=available=ready=5)
7検証対象構成の一致PASS(ゲージ 6 本 × 909)
8全回転 margin > 0PASS(min 68.3m)
9終了 census クリーンPASS(全 5 claim < A)
10Karpenter の予期しない disruption なしPASS
11epi: 凍結中 = 候補のみPASS(~2h 保持)
12epi: 解凍で fallback 発火PASS(56 秒)
13アボート則(解凍失期)N/A
基準の詳細観測 — クリックで展開
#観測詳細
1本編 + tail-follow + エピローグ通して 0。Karpenter Expiration イベントも 0
2[T0, T_end] 内 60(5.0/h); 記録終了までに 71(epi 込み 72); ~12m 間隔
3全期間 0 — 静穏性の初実証
4909 スクレイプで max 0
5controller restartCount=0(12h); gap 0、restart 0、SCRAPE_ERROR 0
6desired=available=ready=5 維持; Pending 滞留なし
7導出ゲージ 6 本 × 909 スクレイプで不一致 0; 両 policy Accepted; 期待 warn 1 件のみ
8min 68.3 / 中央値 70.3 / max 71.2 分(n=71)
9T_end の 5 claim は齢 11–59m(right-censored); 滞留 0、failed 0
10DisruptionBlocked/Unconsolidatable のみ(budgets + do-not-disrupt が抑止)
11凍結中 ~2h、candidates=1 / in_progress=0 維持
12下記エピローグ参照(56 秒、placeholder ゼロ、本編無擾乱)
13正常リリースにより未行使; fail-closed は offline 検証のみ

ノード入れ替えの解剖

71 回転はすべて同型のシーケンス:

  1. claim が齢 1h(= A)に達し候補化 → placeholder Pod 作成
  2. Karpenter が新ノードを provision → placeholder bind → surge ノード Ready(surgeWait 中央値 34 秒、23–54 秒)
  3. 両ノードに do-not-disrupt → 旧 NodeClaim 削除 → voluntary drain(drain 中央値 44 秒、18–83 秒)
  4. 後始末 → total 中央値 81 秒(45–131 秒)。旧ノード残骸は WhenEmpty/60s で回収

図 2 — 各回転の所要時間の内訳(surgeWait + drain)

縦軸: 秒。積み上げの下段が placeholder 作成から surge ノード Ready までの待ち、上段が旧ノードの drain。t_rot の設計上界は 720 秒 — 実測 total は 45〜131 秒(中央値 81 秒)で常にその 1/5 以下、この余裕がバックストップに勝ち続ける源泉になっている。

0306090120claim fhx2b (完了 2026-07-14T14:20:29Z) surgeWait 40s + drain 44s / total 83sclaim xdjh8 (完了 2026-07-14T14:32:30Z) surgeWait 40s + drain 39s / total 79sclaim 9xfpf (完了 2026-07-14T14:44:31Z) surgeWait 41s + drain 35s / total 76sclaim xl8fg (完了 2026-07-14T14:56:34Z) surgeWait 24s + drain 48s / total 73sclaim ksjxd (完了 2026-07-14T15:09:36Z) surgeWait 53s + drain 77s / total 131sclaim s88b7 (完了 2026-07-14T15:20:46Z) surgeWait 38s + drain 38s / total 76sclaim bvpc6 (完了 2026-07-14T15:32:27Z) surgeWait 25s + drain 28s / total 52sclaim 4txxs (完了 2026-07-14T15:45:06Z) surgeWait 38s + drain 49s / total 87sclaim 7s7dt (完了 2026-07-14T15:57:11Z) surgeWait 27s + drain 59s / total 86sclaim wbsfb (完了 2026-07-14T16:09:07Z) surgeWait 36s + drain 42s / total 78sclaim m4jzw (完了 2026-07-14T16:21:26Z) surgeWait 37s + drain 55s / total 92sclaim w4r59 (完了 2026-07-14T16:32:58Z) surgeWait 37s + drain 22s / total 59sclaim 8bhbp (完了 2026-07-14T16:45:26Z) surgeWait 24s + drain 58s / total 82sclaim vrtvs (完了 2026-07-14T16:57:47Z) surgeWait 23s + drain 74s / total 97sclaim zwlds (完了 2026-07-14T17:09:47Z) surgeWait 34s + drain 59s / total 94sclaim sh6s8 (完了 2026-07-14T17:22:03Z) surgeWait 24s + drain 80s / total 104sclaim xhbsc (完了 2026-07-14T17:33:55Z) surgeWait 38s + drain 53s / total 91sclaim hghwx (完了 2026-07-14T17:45:52Z) surgeWait 24s + drain 61s / total 85sclaim r284b (完了 2026-07-14T17:57:52Z) surgeWait 27s + drain 53s / total 79sclaim q592n (完了 2026-07-14T18:09:48Z) surgeWait 27s + drain 44s / total 71sclaim rwqpb (完了 2026-07-14T18:22:29Z) surgeWait 24s + drain 81s / total 105sclaim 6gdtf (完了 2026-07-14T18:33:35Z) surgeWait 24s + drain 24s / total 48sclaim 76xn9 (完了 2026-07-14T18:46:28Z) surgeWait 38s + drain 57s / total 95sclaim zw4gm (完了 2026-07-14T18:58:19Z) surgeWait 38s + drain 43s / total 82sclaim 8bcgn (完了 2026-07-14T19:10:40Z) surgeWait 26s + drain 71s / total 97sclaim 8hld7 (完了 2026-07-14T19:22:13Z) surgeWait 37s + drain 29s / total 66sclaim 656fc (完了 2026-07-14T19:34:25Z) surgeWait 38s + drain 34s / total 73sclaim d4d5d (完了 2026-07-14T19:47:01Z) surgeWait 24s + drain 81s / total 105sclaim 8nkrs (完了 2026-07-14T19:58:18Z) surgeWait 23s + drain 33s / total 56sclaim pmlpq (完了 2026-07-14T20:10:38Z) surgeWait 37s + drain 33s / total 70sclaim 6wvqx (完了 2026-07-14T20:22:30Z) surgeWait 34s + drain 23s / total 58sclaim kmh4m (完了 2026-07-14T20:34:25Z) surgeWait 25s + drain 23s / total 48sclaim xdtc9 (完了 2026-07-14T20:46:56Z) surgeWait 33s + drain 39s / total 73sclaim jqmll (完了 2026-07-14T20:58:35Z) surgeWait 24s + drain 22s / total 46sclaim xsxbk (完了 2026-07-14T21:11:34Z) surgeWait 36s + drain 64s / total 100sclaim 8tp7t (完了 2026-07-14T21:24:00Z) surgeWait 39s + drain 83s / total 122sclaim pdcjt (完了 2026-07-14T21:35:18Z) surgeWait 35s + drain 39s / total 74sclaim jnrdw (完了 2026-07-14T21:47:21Z) surgeWait 24s + drain 49s / total 73sclaim 8hbzb (完了 2026-07-14T22:01:34Z) surgeWait 42s + drain 38s / total 81sclaim 7thv5 (完了 2026-07-14T22:10:56Z) surgeWait 37s + drain 23s / total 60sclaim j8xsl (完了 2026-07-14T22:22:54Z) surgeWait 24s + drain 28s / total 52sclaim fkwv7 (完了 2026-07-14T22:35:41Z) surgeWait 39s + drain 55s / total 94sclaim fjkq9 (完了 2026-07-14T22:47:10Z) surgeWait 25s + drain 22s / total 47sclaim vsd8c (完了 2026-07-14T23:02:06Z) surgeWait 39s + drain 61s / total 100sclaim z9dl8 (完了 2026-07-14T23:11:27Z) surgeWait 39s + drain 44s / total 83sclaim p9qdf (完了 2026-07-14T23:23:18Z) surgeWait 30s + drain 38s / total 68sclaim hwgp8 (完了 2026-07-14T23:35:10Z) surgeWait 32s + drain 22s / total 54sclaim kgkmw (完了 2026-07-14T23:49:06Z) surgeWait 52s + drain 54s / total 106sclaim mjwgw (完了 2026-07-15T00:02:01Z) surgeWait 40s + drain 48s / total 88sclaim jvjhr (完了 2026-07-15T00:10:59Z) surgeWait 24s + drain 22s / total 46sclaim b9b96 (完了 2026-07-15T00:23:11Z) surgeWait 31s + drain 23s / total 54sclaim rxf2c (完了 2026-07-15T00:36:09Z) surgeWait 25s + drain 80s / total 105sclaim xv8m2 (完了 2026-07-15T00:48:49Z) surgeWait 54s + drain 28s / total 81sclaim dxq8p (完了 2026-07-15T01:03:19Z) surgeWait 41s + drain 65s / total 106sclaim kbm2x (完了 2026-07-15T01:11:15Z) surgeWait 34s + drain 22s / total 56sclaim lnlxb (完了 2026-07-15T01:23:16Z) surgeWait 27s + drain 28s / total 55sclaim kgj2d (完了 2026-07-15T01:36:04Z) surgeWait 25s + drain 73s / total 97sclaim tr854 (完了 2026-07-15T01:49:04Z) surgeWait 24s + drain 69s / total 93sclaim d94p8 (完了 2026-07-15T02:02:21Z) surgeWait 27s + drain 18s / total 45sclaim btlwz (完了 2026-07-15T02:12:01Z) surgeWait 31s + drain 34s / total 64sclaim nssls (完了 2026-07-15T02:24:09Z) surgeWait 23s + drain 62s / total 85sclaim xwpp9 (完了 2026-07-15T02:36:18Z) surgeWait 42s + drain 48s / total 90sclaim 2fmbr (完了 2026-07-15T02:49:30Z) surgeWait 38s + drain 58s / total 96sclaim 88rjv (完了 2026-07-15T03:02:57Z) surgeWait 26s + drain 33s / total 59sclaim qdh2f (完了 2026-07-15T03:12:55Z) surgeWait 35s + drain 62s / total 97sclaim 97mm5 (完了 2026-07-15T03:24:26Z) surgeWait 24s + drain 39s / total 63sclaim rbv8l (完了 2026-07-15T03:36:23Z) surgeWait 23s + drain 33s / total 56sclaim 77m27 (完了 2026-07-15T03:49:49Z) surgeWait 35s + drain 42s / total 77sclaim 5qwn6 (完了 2026-07-15T04:04:16Z) surgeWait 36s + drain 62s / total 98sclaim zv9gp (完了 2026-07-15T04:14:16Z) surgeWait 42s + drain 79s / total 121sclaim 49pqr (完了 2026-07-15T04:25:24Z) surgeWait 33s + drain 53s / total 87sT0+0hT0+3hT0+7hT0+11hT0+14h
surgeWait(placeholder 作成 → surge ノード Ready) drain(旧 claim 削除 → 排出完了)
全回転台帳 — 72 行(本編 71 + epi 1)を開く

誕生・完了は UTC。margin = 誕生 + 2h12m − 完了。surge 先はすべて新規 provision の EC2 インスタンス。epi 行の「—」(placeholder/surge なし)が surge-less パスの証拠そのもの。

#claimmode誕生完了surgeWaitdraintotalmargin(分)surge 先ノード
1fhx2bsurge07-14 13:18:5007-14 14:20:2940s44s83s70.3i-073168dd1b078525f
2xdjh8surge07-14 13:30:5307-14 14:32:3040s39s79s70.4i-09dcbe1f5d6d88d7c
39xfpfsurge07-14 13:42:5707-14 14:44:3141s35s76s70.4i-0ea97241df5cd15d2
4xl8fgsurge07-14 13:55:0007-14 14:56:3424s48s73s70.4i-0e2c826c7f0d82e1e
5ksjxdsurge07-14 14:07:0407-14 15:09:3653s77s131s69.5i-07c3fd68b28570fb0
6s88b7surge07-14 14:19:0807-14 15:20:4638s38s76s70.4i-05701db7c4c26e742
7bvpc6surge07-14 14:31:1307-14 15:32:2725s28s52s70.8i-06610ad280717ecb4
84txxssurge07-14 14:43:1807-14 15:45:0638s49s87s70.2i-0732ee95c07077219
97s7dtsurge07-14 14:55:2307-14 15:57:1127s59s86s70.2i-028415c25f2709a31
10wbsfbsurge07-14 15:07:2707-14 16:09:0736s42s78s70.3i-030b61343e3e0405d
11m4jzwsurge07-14 15:19:3207-14 16:21:2637s55s92s70.1i-08665c82484969e3b
12w4r59surge07-14 15:31:3707-14 16:32:5837s22s59s70.7i-0ac7d9f8c7de48fd5
138bhbpsurge07-14 15:43:4207-14 16:45:2624s58s82s70.3i-096f1d8ecdea85ea1
14vrtvssurge07-14 15:55:4707-14 16:57:4723s74s97s70.0i-0c9f26564102a018e
15zwldssurge07-14 16:07:5207-14 17:09:4734s59s94s70.1i-01aebd4e635a7a1ef
16sh6s8surge07-14 16:19:5607-14 17:22:0324s80s104s69.9i-01b49d56eb91cc36c
17xhbscsurge07-14 16:32:0107-14 17:33:5538s53s91s70.1i-054e29bf46d2ddb04
18hghwxsurge07-14 16:44:0607-14 17:45:5224s61s85s70.2i-02d851cb5b6421813
19r284bsurge07-14 16:56:1107-14 17:57:5227s53s79s70.3i-026b29c8cdf04f427
20q592nsurge07-14 17:08:1507-14 18:09:4827s44s71s70.5i-0299e5a36131f1a53
21rwqpbsurge07-14 17:20:2107-14 18:22:2924s81s105s69.9i-01362e558662da0a8
226gdtfsurge07-14 17:32:2607-14 18:33:3524s24s48s70.8i-01256b5baaa58ea6d
2376xn9surge07-14 17:44:3007-14 18:46:2838s57s95s70.0i-09cc4576bdb2f9954
24zw4gmsurge07-14 17:56:3507-14 18:58:1938s43s82s70.3i-0c8662b78afae7195
258bcgnsurge07-14 18:08:4007-14 19:10:4026s71s97s70.0i-09d5061451bc138b9
268hld7surge07-14 18:20:4507-14 19:22:1337s29s66s70.5i-0053ad9546c899cf6
27656fcsurge07-14 18:32:5007-14 19:34:2538s34s73s70.4i-076c2254a9c78ebd7
28d4d5dsurge07-14 18:44:5507-14 19:47:0124s81s105s69.9i-0727f919a26d699b2
298nkrssurge07-14 18:56:5907-14 19:58:1823s33s56s70.7i-0b563214cfb435736
30pmlpqsurge07-14 19:09:0407-14 20:10:3837s33s70s70.4i-07e64b99c9d32e18a
316wvqxsurge07-14 19:21:0907-14 20:22:3034s23s58s70.7i-04a2ca7bb98062b91
32kmh4msurge07-14 19:33:1407-14 20:34:2525s23s48s70.8i-01d64316889e57c5c
33xdtc9surge07-14 19:45:2007-14 20:46:5633s39s73s70.4i-026b484c33d3d619c
34jqmllsurge07-14 19:57:2407-14 20:58:3524s22s46s70.8i-084de2d8a4645fd56
35xsxbksurge07-14 20:09:2907-14 21:11:3436s64s100s69.9i-00d71584622976033
368tp7tsurge07-14 20:21:3507-14 21:24:0039s83s122s69.6i-0b502fd445ad0c976
37pdcjtsurge07-14 20:33:4007-14 21:35:1835s39s74s70.4i-06e1f6f3806f1ec9c
38jnrdwsurge07-14 20:45:4507-14 21:47:2124s49s73s70.4i-0ab92c05b557f1add
398hbzbsurge07-14 20:57:5007-14 22:01:3442s38s81s68.3i-0837901c7b5fb0e3b
407thv5surge07-14 21:09:5507-14 22:10:5637s23s60s71.0i-02f570d8c5fd7fcca
41j8xslsurge07-14 21:22:0007-14 22:22:5424s28s52s71.1i-003922ea46c3fb04f
42fkwv7surge07-14 21:34:0607-14 22:35:4139s55s94s70.4i-084d041ac9a5866a7
43fjkq9surge07-14 21:46:1107-14 22:47:1025s22s47s71.0i-00d419f6d8287f8d8
44vsd8csurge07-14 22:00:1607-14 23:02:0639s61s100s70.2i-09324bed1c04586d9
45z9dl8surge07-14 22:09:5807-14 23:11:2739s44s83s70.5i-0035175e53982ebb5
46p9qdfsurge07-14 22:22:0307-14 23:23:1830s38s68s70.8i-05532c42763792a49
47hwgp8surge07-14 22:34:0807-14 23:35:1032s22s54s71.0i-09fdd03b5776ec630
48kgkmwsurge07-14 22:46:2407-14 23:49:0652s54s106s69.3i-0fb0f63a1fa25c348
49mjwgwsurge07-14 23:00:2907-15 00:02:0140s48s88s70.5i-067d3e9a600db37df
50jvjhrsurge07-14 23:10:0807-15 00:10:5924s22s46s71.2i-0027a501d3d908495
51b9b96surge07-14 23:22:1307-15 00:23:1131s23s54s71.0i-0c08f4d5cd021455d
52rxf2csurge07-14 23:34:1707-15 00:36:0925s80s105s70.1i-020c3d914bdd495cf
53xv8m2surge07-14 23:47:2207-15 00:48:4954s28s81s70.5i-00564c34b6324ae46
54dxq8psurge07-15 00:00:3507-15 01:03:1941s65s106s69.3i-06ca63b87ebb447dc
55kbm2xsurge07-15 00:10:1407-15 01:11:1534s22s56s71.0i-002e0c626c9965415
56lnlxbsurge07-15 00:22:2007-15 01:23:1627s28s55s71.1i-07ed6412f48b14708
57kgj2dsurge07-15 00:34:2507-15 01:36:0425s73s97s70.3i-084bb7cca02775ea4
58tr854surge07-15 00:47:3007-15 01:49:0424s69s93s70.4i-0be5128cc2cb31ace
59d94p8surge07-15 01:01:3507-15 02:02:2127s18s45s71.2i-01a1c010ed9bb8abc
60btlwzsurge07-15 01:10:2007-15 02:12:0131s34s64s70.3i-0459aab876617973b
61nsslssurge07-15 01:22:2407-15 02:24:0923s62s85s70.2i-019f5eed0b9c24fca
62xwpp9surge07-15 01:34:2907-15 02:36:1842s48s90s70.2i-0449ff069770389cb
632fmbrsurge07-15 01:47:3407-15 02:49:3038s58s96s70.1i-03b5247bae327d09a
6488rjvsurge07-15 02:01:3807-15 03:02:5726s33s59s70.7i-0adbdb142e012b81d
65qdh2fsurge07-15 02:10:5907-15 03:12:5535s62s97s70.1i-07fa42782b1206b04
6697mm5surge07-15 02:22:4707-15 03:24:2624s39s63s70.3i-0eb70b7e8fe3a72c5
67rbv8lsurge07-15 02:34:5207-15 03:36:2323s33s56s70.5i-0d032d5175f8d1b1b
6877m27surge07-15 02:47:5607-15 03:49:4935s42s77s70.1i-01b785c0e28e3d678
695qwn6surge07-15 03:02:0107-15 04:04:1636s62s98s69.8i-0651204cabf6506a8
70zv9gpsurge07-15 03:11:2007-15 04:14:1642s79s121s69.1i-07d0545749cf4c983
71epi-gtx42forceful-fallback07-15 02:22:5007-15 04:24:4648s10.1
7249pqrsurge07-15 03:23:2507-15 04:25:2433s53s87s70.0i-0507f5b02688986aa

エピローグ — fallback の決定的発火

別プールを使う理由

本編の「発動しない」だけでは半分。凍結した単一ノードプールで境界越えを人為的・決定的に作成。プール規模 1 の理由: 完了に最大 tGP + Buffer = 7m かかり得るため、複数台では 12 分帯内の完了を保証できない(複数台の実績は シナリオ O)。

時刻イベント
02:22:50Zepi claim gtx42 誕生(freeze 付きで作成)→ deadline d = 04:34:50Z
03:22:50Z齢 1h で候補化; 凍結中 → candidates=1, in_progress=0
04:23:50Z区間探索で R を決定(d−12m < R < d−8m); freeze 解除。残余 11m < t_rot 12m
04:24:46Z解凍から 56 秒後: claim 削除(drain 48 秒 < 7m 上界)。mode=forceful-fallbacksurgeNode なし

証拠:

  • forceful_fallback_total{nodepool-soak-epi} 0→1
  • spec 文言どおりの ForcefulFallback Warning イベント
  • placeholder 台帳: epi claim の記録 ゼロ
  • expired 終始 0
  • 本編無擾乱(解凍→発火ウィンドウで 70→71、完了間隔 ≤ P + t_rot = 42m)

アボート則(d−8m までに解凍不可なら凍結のまま撤去)は未行使。fail-closed は kubectl スタブ offline 検証で 3 系統 exit 3 確認済。

再試験するには

ランブック: test/e2e/eks-automode/SCENARIOS.md § Scenario P。

事前チェック:

sh
go test ./internal/schedule/ -run TestDeriveScenarioPSoak -v  # 導出ピン: A=1h / C=3 / G=2 / warn 1 件
test/e2e/eks-automode/scenarios/soak-analyze-fixture.sh       # 解析系の自己検査

運用ノート

  • JSON ロギング必須logging.development: false): 解析器は zap JSON を読む。console 形式では台帳が空になる
  • 認証トークンの寿命を事前確認 — 途中で切れると二次記録が盲目化(一次のクラスタ内 scraper は無欠損)
  • expireAfter の live patch 禁止 — プールを作り直す(patch は Karpenter drift を誘発)
  • コスト: 約 $11(コントロールプレーン + NAT ~20h、5 × 2 vCPU ノード × 14h + エピローグ)。terraform destroy を忘れないこと

本検証が確定させたこと

仕様書 §7.2 に validated 行が 2 つ追加:

  • サブデイリーウィンドウ下で leadTime は genuine に競う expireAfter に 12h 勝ち続け、fallback は装備されたまま静穏
  • claim が graceful surge の組めない点を越えた瞬間、forceful fallback が決定的に発火

残る未検証項目: 同一 AZ の実キャパシティ不足(ICE)のみ — ロードマップ(§6.2)§7.2 を参照。