一気に移さない。バイト単位でほぼ同一のコードから置換する(リスクゼロの Phase A)。
Phase A — 抽出 & 並走(挙動変更なし)
対象は「3アプリで既にほぼ同一」のもの。ここだけは差し替えても挙動が変わらない。
1. 4S セッションハンドオフ
src/lib/4s-session/*(xdeal↔ivs でバイト同一)を @event/fours-sdk に置換:
consumeHandoff/tokenStore/use4SSession→@event/fours-sdk/clientcreateLoginProxyHandler/createCognitoRefreshHandler→ route を factory にverify4SUser(3アプリで同じ約30行)→@event/fours-sdkの verify4SUser
2. 死コード削除
分析で確認済み: xdeal の 1,457行 ScheduleMap.tsx(未使用)、four-s.ts の OAuth stub(FOUR_S_OAUTH_* 未設定)。
3. contentStore / auth
@event/core の createContentStore(ivs canonical + sha リトライ統合版)と createSharedPasswordAuth(constant-time 統一 — spikes の平文 === を修正)へ。
4. 検証
各置換ごとに型チェック + 該当フローを1つ手で叩いて挙動一致を確認してから次へ。
Phase B 以降(別 PR)
- session-card の 4コピー balance engine →
@event/session-card/engine - 約10 の toPng フロー →
@event/asset-kit - id/_id 統一、lazy DB client 採用
原則
一度に1論理単位 = 1コミット。バイト同一 → 挙動同等が確認できるものから。 「エンジンコードをアプリに残さない」— ロジックはパッケージへ、アプリには config だけ。