Status: PR-3 (#TBD) でデプロイ + flag ON 化直後の検証用。CI 自動化は本 ADR §Confirmation の項目 5 として follow-up PR で vitest infra 追加と同時に実装する (現状 drp に test infra なし)。 対象: PR-1 (#1160) / PR-2 (#1162) / PR-3 (本 PR) merge 後の dev 環境

前提

  • wrangler deploy で dev 環境に最新版 deploy 済
  • chat UI (https://drp.bizlp.dev/chat) にブラウザでアクセス可能
  • DevTools の Network タブが開ける状態

1. 到着順テスト (基本動作)

目的: gate 完了の到着順に暫定パネルが追加描画されることを確認 (ADR-0089 §Confirmation #1)。

手順:

  1. chat UI から Standard mode の起案 (コスト試算記載あり) を投入
  2. 起案投入後、ブラウザ画面で「審査中の中間結果」カード (#partial-results-card) が表示されるまで待機
  3. Gate 1 (socratic) 完了直後に「盲点検出」パネルが暫定バッジ付きで追加されることを確認
  4. 以降 Gate 2 / 3 / 4 完了ごとにパネルが順次増えることを確認
  5. 全 Gate 完了 + 結果確定で #partial-results-card が非表示になり、結果カード (#result) に切り替わることを確認

期待値: パネル追加レイテンシ ≤ 3 秒 (ADR-0089 §Confirmation 完了条件 1)。

2. 完了整合テスト

目的: 結果確定時に暫定パネルが正しく非表示になり、最終結果と二重表示にならない。

手順:

  1. テスト 1 と同じ起案を投入
  2. 全 Gate 完了時に #partial-results-cardstyle.display === 'none' を DevTools Elements で確認
  3. #resultdisplay: block で結果が表示されることを確認

3. 並列書込 race テスト (人工遅延)

目的: ADR-0089 §5.3 盲点 #3 #6 対策。複数 gate が短時間で完了した場合に partialResults が上書き合戦しないことを確認。

手順:

  1. dev 環境の consumer.tspatchPartialawait new Promise(r => setTimeout(r, Math.random() * 500)) を一時挿入 (検証後 revert)
  2. テスト 1 と同じ起案を投入
  3. 結果確定後、DO の GET /session 経由で取得した partialResults全 gate が含まれている ことを確認 (Network タブで /chat/status/<id> レスポンスを観測)
  4. 検証完了後、人工遅延コードを revert

期待値: gate 数 = 期待値 (Light 5 / Standard 8 / Critical 10) が全て揃っている。

4. DO サイズ上限近傍テスト

目的: 8KB/gate 切り詰め (ADR-0089 §1.4) が正しく動作することを確認。

手順:

  1. 人工的に大きい socratic findings 結果を返す mock prompt を一時投入 (Gate 1 のみで 100+ 件 × 各 200 文字超)
  2. 起案を投入し Gate 1 完了後、/chat/status/<id> レスポンスを観測
  3. partialResults.socratic._truncated === true フラグが付与されていることを確認
  4. UI に「⚠ 一部省略 (DO 8KB 上限による切り詰め)」注記が表示されることを確認

5. Feature flag rollback テスト

目的: 緊急時に即時 OFF できることを確認。

手順:

wrangler secret put PROGRESSIVE_GATE_RESULTS
# → 入力プロンプトで `false` と入力
  1. flag OFF 後、新規起案を投入
  2. #partial-results-card が一切表示されないことを確認 (従来 UX に完全復帰)
  3. 結果カードのみで動作する

ロールバック完了後、flag を再 ON に戻す:

wrangler secret delete PROGRESSIVE_GATE_RESULTS
# → vars の "true" が有効化

6. In-flight session 互換性テスト

目的: flag ON 直後、まだ partialResults を持たない旧セッションが正常に表示されることを確認 (PR-2 の defensive fallback)。

手順:

  1. flag OFF で起案 1 件投入 → 完了まで放置
  2. flag を ON に切替
  3. URL 直叩きで上記セッションの結果を再表示 (/chat?sessionId=<id>)
  4. #partial-results-card が非表示のまま、結果カードのみが表示されることを確認

撤退条件抵触時の対応

ADR-0089 §撤退条件のいずれかに抵触した場合:

# 即時 OFF
wrangler secret put PROGRESSIVE_GATE_RESULTS
# → false を入力

KV 経由の即時反映が必要な場合は ADR-0089 §1.4 に従い follow-up PR で env var → KV 移行を検討する (現状は wrangler secret put で数秒〜数十秒の反映)。

既知の制限 (本 PR 時点)

  • 自動 CI 統合テストは未実装: drp に test infra (vitest 等) が存在しないため、本 ADR §Confirmation 完了条件 5「統合テスト CI pass」は follow-up PR でカバー予定。本 PR は flag ON + 手動 smoke test 手順 (本 doc) で代替。