ADR-0089 Progressive Streaming — 手動 Smoke Test 手順
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)。
手順:
- chat UI から Standard mode の起案 (コスト試算記載あり) を投入
- 起案投入後、ブラウザ画面で「審査中の中間結果」カード (
#partial-results-card) が表示されるまで待機 - Gate 1 (socratic) 完了直後に「盲点検出」パネルが暫定バッジ付きで追加されることを確認
- 以降 Gate 2 / 3 / 4 完了ごとにパネルが順次増えることを確認
- 全 Gate 完了 + 結果確定で
#partial-results-cardが非表示になり、結果カード (#result) に切り替わることを確認
期待値: パネル追加レイテンシ ≤ 3 秒 (ADR-0089 §Confirmation 完了条件 1)。
2. 完了整合テスト
目的: 結果確定時に暫定パネルが正しく非表示になり、最終結果と二重表示にならない。
手順:
- テスト 1 と同じ起案を投入
- 全 Gate 完了時に
#partial-results-cardのstyle.display === 'none'を DevTools Elements で確認 #resultのdisplay: blockで結果が表示されることを確認
3. 並列書込 race テスト (人工遅延)
目的: ADR-0089 §5.3 盲点 #3 #6 対策。複数 gate が短時間で完了した場合に partialResults が上書き合戦しないことを確認。
手順:
- dev 環境の
consumer.ts内patchPartialにawait new Promise(r => setTimeout(r, Math.random() * 500))を一時挿入 (検証後 revert) - テスト 1 と同じ起案を投入
- 結果確定後、DO の
GET /session経由で取得したpartialResultsに 全 gate が含まれている ことを確認 (Network タブで/chat/status/<id>レスポンスを観測) - 検証完了後、人工遅延コードを revert
期待値: gate 数 = 期待値 (Light 5 / Standard 8 / Critical 10) が全て揃っている。
4. DO サイズ上限近傍テスト
目的: 8KB/gate 切り詰め (ADR-0089 §1.4) が正しく動作することを確認。
手順:
- 人工的に大きい socratic findings 結果を返す mock prompt を一時投入 (Gate 1 のみで 100+ 件 × 各 200 文字超)
- 起案を投入し Gate 1 完了後、
/chat/status/<id>レスポンスを観測 partialResults.socratic._truncated === trueフラグが付与されていることを確認- UI に「⚠ 一部省略 (DO 8KB 上限による切り詰め)」注記が表示されることを確認
5. Feature flag rollback テスト
目的: 緊急時に即時 OFF できることを確認。
手順:
wrangler secret put PROGRESSIVE_GATE_RESULTS
# → 入力プロンプトで `false` と入力
- flag OFF 後、新規起案を投入
#partial-results-cardが一切表示されないことを確認 (従来 UX に完全復帰)- 結果カードのみで動作する
ロールバック完了後、flag を再 ON に戻す:
wrangler secret delete PROGRESSIVE_GATE_RESULTS
# → vars の "true" が有効化
6. In-flight session 互換性テスト
目的: flag ON 直後、まだ partialResults を持たない旧セッションが正常に表示されることを確認 (PR-2 の defensive fallback)。
手順:
- flag OFF で起案 1 件投入 → 完了まで放置
- flag を ON に切替
- URL 直叩きで上記セッションの結果を再表示 (
/chat?sessionId=<id>) #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) で代替。