PR #9 (drive-web-ui) の code review で検出された medium/nit 群を backlog 集約する。blocker/high は #9 の request-update ラウンドで解消済みまたは対処済み。急ぎではない。
Medium
mock モードは認証のみの mock — データ系コールは常に CORE_API_URL へ流れる (mock クライアントは単体テスト専用で USE_MOCK には非配線)。README の「UI 開発 (既定)」という位置づけと齟齬あり。core 未起動では Drive 画面がエラーになる。選択肢: README の表現を修正、または mock データ配線の追加。
real モード (Hydra OIDC) の E2E が存在しない — PR drive-web-ui: 最小 Web UI (PureScript + Flame SSR/hydration + Bun BFF) — apps/booskiff-web #9 の E2E は USE_MOCK=true のみ。real OAuth 経路は emumet-web からの踏襲で実績はあるが本 PR の範囲では未検証。Hydra+Kratos 入り compose の E2E 追加を検討 (大掛かりなので別 unit 化も可)。
core 到達不能時のエラー形状 — BFF /api で BooskiffApiError 以外の例外 (fetch 失敗等) は未捕捉で Bun.serve のデフォルト 500 (ボディなし/JSON でない) に落ちる。JSON エラー形状 (502 等) への統一を検討。
CSRF 多層防御 — /auth/login|logout には csrfCheck (Origin/Referer 検証) があるが /api の mutation 系は SameSite=Lax 依存。現状 Lax で実害は遮断されるが、/api にも Origin チェック追加を検討。
ファイル詳細表示の解釈 — 契約の「一覧・詳細表示」に対し現状は専用の詳細ビュー/ルートなし (一覧行内の情報のみ)。要件として詳細ビューが必要か要確認。
Nit
mock JWKS エンドポイントの公開ゲートが USE_MOCK/USE_TEST_JWT の env flag のみ。明示的な非本番ゲート検討。
e2e fixture の秘密鍵 (e2e/fixtures/jwks.json 対の PEM) を repo にコミット。test-only 明示済みで core の慣例踏襲だが、本番流用事故に注意 (命名や配置で更に明確化する手もある)。
未 pin イメージ: compose.e2e.yml の minio/minio:latest、Containerfile の oven/bun:1。
フォルダ rename の testid が folder.name 由来 (他の操作は folder.id)。rename 後の key 齟齬リスク。
/auth/logout 等が HTTP method を検査しない (Origin/Referer 通過で GET でも実行可能)。
folder_id が空文字の場合にそのまま core へ転送される (searchParams.get の '' は ?? undefined で潰せない)。
real OAuth callback で id_token の署名検証なし (表示用途のみ・Hydra 直接取得のため許容範囲だが多層防御として)。
SSR 初期レンダリングは常に未認証モデルで描画し hydration 後にデータ取得 (設計簡略化として明文化済み)。
PR #9 (drive-web-ui) の code review で検出された medium/nit 群を backlog 集約する。blocker/high は #9 の request-update ラウンドで解消済みまたは対処済み。急ぎではない。
Medium
Nit