JTBD-012 論点整理(Decision Inventory)
ステータス: 起票 (2026-07-01) 本ドキュメントは JTBD-012 帳票・証憑管理 SaaS の未確定論点を、arch 側の 塊 (D1〜D10) を土台に、RQ-117 Synthesis の 119 items を再構造化した「論点の landscape 俯瞰」の SSoT。arch と役割を分けて運用する: arch はモジュール構成 (層/責務) の正典、本ページは意思決定項目 (論点) の正典。
代表取締役の週次集中判断 (30-60 分/週) のための地図として機能する。個別 draft ADR は本ページ §Wave 別 順序で drp KV へ投函し、審査後 rendered ADR (docs/adr/) を canonical 化する。
このドキュメントは何か
立ち位置
- arch (arch_jtbd012_voucher_saas_draft.md) = モジュール構成 (層 ①〜⑤ + 塊 D1〜D10) の SSoT。2026-06-08 起票 (Cloudflare 前提のまま stale)。別 PR で ADR-0179 反映 amend が必要。
- 本ページ = 意思決定項目 (論点) の SSoT。arch の 塊 D1〜D10 構造を土台に、RQ-117 Synthesis の 119 items を再構造化。ADR-0179 (Phase 0-1 GCP 単一) を反映。
- RQ-117 Synthesis = 119 items の詳細・Tier 分類・Top 10 スコアリング。本ページはその要約 + 塊 axis での再構造化。
想定読者と使い方
- 代表取締役 ([email protected]): 週次 30-60 分の集中判断で「今週どの 論点 を落とすか」を選ぶ。本ページ §Wave 別 順序 と §塊 状態集計 が入口。
- Claude Code (vlt / drp / main セッション): 開幕時に本ページ §塊 別 詳細 を読み、未確定論点の draft ADR 起票候補を認識する。ADR 受理時は本ページの状態列を書換する (updates 対象)。
- Jr 入社時 (2026-10 想定): JTBD-012 SaaS の設計全体像を「塊 × 論点」の 2 軸で把握するための入口。
スコープと非スコープ
| 区分 | 内容 |
|---|---|
| スコープ | JTBD-012 Phase 0 dogfood + Phase 1 GA の意思決定項目 (119 items) を 塊 axis で再構造化 · 状態列で ADR 受理 / 提案中 / 未着手 / 撤収 を可視化 · Wave 順序で優先度を提示 |
| 非スコープ | 個別 論点 の判断基準 / 代替案 / 撤退条件 (それぞれの draft ADR で審査) · Phase 2 の意思決定 (Phase 2B AWS 移行判断で別 ADR 起案) · JTBD-012 以外の SaaS 論点 |
状態凡例
| 記号 | 意味 | 備考 |
|---|---|---|
| ✅ | 受理済 (Accepted or 実装完了) | ADR 番号を併記。以降の変更は amend PR で追跡 |
| 🟡 | 提案中 (Proposed / draft PR open) | draft_adr_*.md を drp KV に投函済 or 直近投函予定 |
| 🔴 | spike / RQ 待ち | Deep Research 未完で判断基準そのものが未整備 |
| ⬜ | 未着手 (draft ADR も未起票) | Wave 順序に従い今後起票 |
| ➖ | Tier 2 (impl-tune) | draft ADR 化せず対応する scope doc / 開発仕様書 内で決定 |
arch 層 × 塊 × 論点 分布
arch (arch_jtbd012_voucher_saas_draft.md) の層構成図 (①〜⑤ + 横断) と塊 (D1〜D10) の対応関係を axis に、Wave 1 主要論点を層ごとに配置する。
| arch 層 | 主な責務 | 主モジュール | モジュール説明 | 塊 | Wave 1 論点 | 他 Tier 1 論点数 |
|---|---|---|---|---|---|---|
| ① プレゼンテーション | ユーザーが直接触る画面 (UI) |
|
| - | (Phase 0 は最小 UI) | 0 |
| ② インタフェース・認証 | 外と中の入口 · 誰が入れるかを判定 |
|
| D3 · D4b · D6 | H1 3 要素検索 索引 | 12 (B系 5 + C系 1 + N1 + IdPBroker · Q3 · B1 等) |
| ③ アプリケーション・ドメイン処理 | 取込 · 中身理解 · 台帳化 · 真実性保証 |
|
| D5 · D6 · D7 · D8 | A2 append-only · F1 訂正削除履歴 · R1 TSA · M3 JIIMA · P2 事務処理規程 | 15 (M1-9 · Q系 · G1) |
| ④ 永続化・正本 | 証憑の法的原本を安全保管 |
|
| D2 · D7 (Immutable) · D9 · D10 | A1 schema · O1 RPO · O4 cross-region replica | 30 (A3-A8 · F2-6 · N7-8 · O2/O3/O5 · P系) |
| ⑤ 基盤 | 上の全層が動く土台 |
|
| D3 · D10 (TEE) | K1 GCP region | 15 (C系 · D SLO · E CI · J 運用 · TEE = RQ-098) |
| 横断 | 全層に効く共通機能 |
|
| D4a | (L1 multi-tenant · Wave 4) | 4 |
読み方:
- Wave 1 Top 10 は 層 ③ (5 items) + 層 ④ (3 items) + 層 ⑤ (1 item) + 層 ②(1 item) に分布 = 層 ③・④ が critical path の主戦場
- 層 ① UI 系論点は Wave 1 にゼロ = Phase 0 は最小 UI で走り、UI 設計は Phase 1 GA 前判断に defer
- 層 ⑤ 基盤の K1 (region) 確定が 全層のデプロイ先を規定 = 他 3 items (A1 · M3 · R1) と並行だが最軽量 (1PD) で先落とし可能
- 層 ③ の 5 items は Route #3 真実性 4 要素 (ADR-0175) の実装配線 = A2 (append-only) · F1 (訂正削除) · R1 (TSA) · M3 (JIIMA) · P2 (事務処理規程) が対
塊 × RQ-117 カテゴリ Cross Matrix (詳細集計)
各セルは Tier 1 items 数 (該当なしは -)。Total = 119 items (Tier 1 = 83 + Tier 2 = 36)。
| 塊 | 責務 | A schema | B API | C sec | D SLO | E CI | F 訂正削 | G TSA | H 索引 | I 照合 | J 運用 | K region | L multi | M JIIMA | N SOC2 | O DR | P 規程 | Q 監査 | Tier 1 計 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| D1 商品スコープ | 全体 | - | - | - | - | - | - | - | - | - | - | - | 1 | - | - | - | - | - | 1 |
| D2 正本 | ④ RecordStore | 6 | - | - | - | - | 4 | - | - | - | - | - | - | - | - | 2 | - | - | 12 |
| D3 基盤 | ⑤ Platform | - | - | 6 | 3 | 2 | - | - | - | - | 3 | 2 | - | - | - | - | - | - | 16 |
| D4a テナント分離 | 横断 TenantContext | 1 | - | 1 | - | - | - | - | - | - | - | 1 | 1 | - | - | - | - | - | 4 |
| D4b 認証 | ② AuthGateway | - | 5 | 1 | - | - | - | - | - | - | - | - | - | - | 1 | - | - | - | 7 |
| D5 取込 | ③ IngestAdapter | - | - | - | - | - | - | - | - | 3 | - | - | - | - | - | - | - | - | 3 |
| D6 データモデル | ③ VoucherLedger + SearchIndex | 1 | - | - | - | - | - | - | 1 | - | - | - | - | - | - | - | - | - | 2 |
| D7 真実性 | ③ IntegrityGuard + ImmutableStore | 1 | - | - | - | - | 1 | 1 | - | - | - | - | - | 5 | - | - | 2 | 1 | 11 |
| D8 自動化 | ③ OcrExtractor + AutomationGate | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | 0 |
| D9 保存年限 | ④ RetentionManager | - | - | - | - | - | 1 | - | - | - | - | - | - | - | - | 3 | 2 | - | 6 |
| D10 暗号化 | ④ KeyManager | - | - | 2 | - | - | - | - | - | - | 5 | - | - | - | 7 | - | - | - | 14 |
| 未割当 (横断) | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | 1 | 1 |
| Tier 1 合計 | - | 8 | 5 | 10 | 3 | 2 | 6 | 1 | 1 | 3 | 8 | 3 | 1 | 5 | 8 | 5 | 4 | 2 | 83 |
読み方: D2 正本 (12 items) と D3 基盤 (16 items) と D10 暗号化 (14 items) が Tier 1 の 50% を占め、Phase 0 の実装工数の主軸を成す。D7 真実性 (11 items) は Route #3 (訂正削除履歴 · ADR-0175 確定) の実装配線に集中。
信頼境界別 論点越境
arch の信頼境界・配置図 (Mermaid) で示された 5 境界 (顧客テナント / 自社 SaaS / ハイパースケーラ / 第三者 SaaS / 自社内部) と、論点がどの境界を越えるかの対応。
| 信頼境界 | 誰が管理 | 越境する論点 (代表) | 論点の主性質 |
|---|---|---|---|
| 🏢 顧客テナント | 顧客 | B1 API 認証 (OIDC) · N1 MFA · D5 取込 (Graph/Google API) · D3 JournalExporter (仕訳 export) | 顧客側 IdP / API に依存 · 契約書 or API 仕様変更で影響を受ける |
| 🟢 自社 SaaS (VENDOR) | 自社 (vlt クローン) | A1 schema · A2 append-only · F1 訂正削除 · H1 検索索引 · O1 RPO · O4 replica · D9 年限 · D10 鍵管理 | 内部設計 = 自社で判断 100% コントロール可能 |
| 🟡 ハイパースケーラ | GCP (Phase 1) / AWS (Phase 2B) | K1 region · TEE 判断 (RQ-098 · D10) · N3 SIEM (Cloud Logging) · N5 Pen test | クラウド事業者の SLA / API 変更で影響を受ける |
| 🔵 第三者 SaaS | 認定機関・ベンダー | R1 TSA (総務大臣認定 5 候補) · M3 JIIMA cert · IdPBroker (RQ-099 · D4b) | 契約書ベース · 契約 lead time で全体スケジュール制約 |
| ⚪ 自社内部 | 自社 (mas クローン) | D3 AccountingBridge (既存 GAS 会計 = 自社会計 SSoT との境界) | vlt SaaS ↔ mas 会計 の内部連携 |
読み方:
- 契約 lead time 制約 = 第三者境界の R1 (TSA) と M3 (JIIMA) は自社決定だけでは動かせない外部制約で、Phase 1 GA 遅延の主因
- 一度決めたら変更困難な決定 = 自社 SaaS 境界の A1 (schema) と A2 (append-only) は事後変更コストが極大 (one-way door)
- 顧客側変更に耐える設計要 = 顧客テナント境界の B1/N1 は「顧客 IdP 変更に耐える pluggable 設計」(ADR-0127) を守る
論点の依存関係
「何を先に決めないと、他が決まらないか」の SSoT。RQ-117 Synthesis の Critical Path 分析を可視化。
依存関係グラフ (Wave 1-4 · 主要 24 items)
flowchart TB classDef l0 fill:#fff3bf,stroke:#f08c00,color:#663c00,font-weight:bold; classDef l1 fill:#d3f9d8,stroke:#2f9e44,color:#1b4332; classDef l2 fill:#e7f5ff,stroke:#1c7ed6,color:#0b4a8b; classDef l3 fill:#fff0f6,stroke:#c2255c,color:#7d1a3b; classDef l4 fill:#f1f3f5,stroke:#868e96,color:#343a40; classDef ext fill:#ffe8cc,stroke:#e8590c,color:#7f4700,stroke-dasharray:5 5; %% Level 0 (最初 · 何にも依存しない) K1["K1: GCP region
(⑤基盤・1PD)"]:::l0 A1["A1: schema 基礎
(④正本・3PD)"]:::l0 M3["M3: JIIMA cert track
(③真実性・5PD)"]:::l0 R1["R1: TSA provider
(③真実性・5PD・外部契約)"]:::l0 %% Level 1 (Level 0 決定後に着手) A2["A2: append-only
(③④・5PD)"]:::l1 H1["H1: 3 要素索引
(②・5PD)"]:::l1 F1["F1: 訂正削除履歴
(③・8PD)"]:::l1 O1["O1: RPO 目標
(④・3PD)"]:::l1 O4["O4: cross-region replica
(④・5PD)"]:::l1 P2["P2: 事務処理規程 template
(③・3PD)"]:::l1 M4["M4: JIIMA 予算
(③・2PD)"]:::l1 %% Level 2 G1["G1: TSA Strategy interface
(③・4PD)"]:::l2 O3["O3: PITR retention
(④・2PD)"]:::l2 B1["B1: API 認証
(②・3PD)"]:::l2 Q3["Q3: 認証取得順序
(③・2PD)"]:::l2 %% Level 3 N1["N1: MFA policy
(②・2PD)"]:::l3 N3["N3: SIEM
(⑤・4PD)"]:::l3 N6["N6: IR runbook
(⑤・3PD)"]:::l3 %% Level 4 J1["J1: dogfood go/no-go
(全体・2PD)"]:::l4 L1["L1: multi-tenant 判断
(横断・Phase 1)"]:::l4 %% 外部 spike (RQ 待ち · 破線) RQ088["RQ-088: D7 真実性 spike"]:::ext RQ091["RQ-091: D9 年限 spike"]:::ext RQ098["RQ-098: D10 TEE spike"]:::ext RQ099["RQ-099: D4b IdPBroker spike"]:::ext %% 依存辺 K1 --> A1 K1 --> O1 K1 --> O4 A1 --> A2 A1 --> H1 A1 --> F1 A1 --> O1 A1 --> B1 A1 --> J1 A2 --> F1 F1 --> G1 R1 --> G1 M3 --> P2 M3 --> M4 M3 --> Q3 O1 --> O3 O4 --> O3 B1 --> N1 B1 --> N3 N3 --> N6 N6 --> J1 J1 --> L1 %% spike の効き先 RQ088 -. 実装先送りリスク .-> F1 RQ091 -. 実装先送りリスク .-> O1 RQ098 -. 実装先送りリスク .-> N3 RQ099 -. 実装先送りリスク .-> B1
Critical Path Level 別 一覧
Level 0 = 何にも依存しない (最優先 · Phase 0 開始と同時に確定要)
| ID | 論点 | 塊/層 | Effort | Blocks | 論点性質 |
|---|---|---|---|---|---|
| K1 | GCP region (asia-northeast1) | D3 / ⑤ | 1PD | 3 (O1/O4/O3) | 単一 region 選定 · trivial だが foundational |
| A1 | schema 基礎 (id 型 + hash + 列) | D2 / ④ | 3PD | 6 (A2/H1/F1/O1/B1/J1) | one-way door · 全下流に影響 |
| M3 | JIIMA cert track (5 候補) | D7 / ③ | 5PD | 3 (P2/M4/Q3) | 外部 3ヶ月 lead time · 誤選定で 3ヶ月 rework |
| R1 | TSA provider (5 候補 · 認定必須) | D7 / ③ | 5PD | 2 (G1/B1 間接) | 外部契約 lead time · 総務大臣認定必須 (2022-07-30 以降) |
Level 1 = Level 0 のいずれかに依存 (PR-5/6/7 merge 前必達)
| ID | 論点 | 塊/層 | Effort | 前提 |
|---|---|---|---|---|
| A2 | append-only 強制手段 | D2 / ③④ | 5PD | A1 |
| H1 | 3 要素検索 索引戦略 | D6 / ② | 5PD | A1 |
| F1 | 訂正削除履歴 row shape | D2 / ③ | 8PD | A1, A2 |
| O1 | RPO 目標 | D9 / ④ | 3PD | A1, K1 |
| O4 | cross-region replica 位相 | D9 / ④ | 5PD | K1 |
| P2 | 事務処理規程 template 採用元 | D7 / ③ | 3PD | M3 |
| M4 | JIIMA 手数料予算 | D7 / ③ | 2PD | M3 |
Level 2 = Level 1 のいずれかに依存
| ID | 論点 | 前提 |
|---|---|---|
| G1 | TSA Strategy interface | F1, R1 |
| O3 | PITR retention window | O1, O4 |
| B1 | API 認証モデル (OAuth+WIF) | A1 |
| Q3 | 認証取得順序 (JIIMA/ISMS/SOC2/P) | M3 |
Level 3-4 = Phase 0 中盤〜終盤
- Level 3: N1 (needs B1) · N3 (needs B1) · N6 (needs N3)
- Level 4: J1 dogfood pilot go/no-go (needs N6, A1) · L1 multi-tenant (needs J1)
各 Wave 1 論点の前提と下流
| ID | 前提 (これが決まってないと着手不能) | 下流 (これを決めないと着手不能な項目) |
|---|---|---|
| K1 | — | O1 · O4 · O3 (Level 2) · (間接) 全て |
| A1 | — | A2 · H1 · F1 · O1 · B1 · J1 |
| M3 | — | P2 · M4 · Q3 |
| R1 | — | G1 |
| A2 | A1 | F1 · (間接) F2-F6 |
| H1 | A1 | (Wave 3 の検索 tuning) |
| F1 | A1 · A2 | G1 · F2 · (Wave 3 の削除 policy) |
| O1 | A1 · K1 | O3 |
| O4 | K1 | O3 |
| P2 | M3 | (税務調査対応の SLA · P4) |
決定順序の 3 原則
論点順を「何から決めるか」で迷ったら、次の 3 原則で判断する:
- 外部リードタイム逆算 (calendar-driven)
- M3 JIIMA (3 ヶ月) · R1 TSA (数週間) は外部機関・ベンダー依存で、先送りするほど Phase 1 GA が遅れる
- 内部決定より優先させて Wave 1 の週 1-2 に置く
- one-way door 優先 (irreversibility-driven)
- A1 schema (id 型 + content_hash) · A2 append-only · F1 訂正削除履歴 は事後変更コスト極大
- 実装着手前に凍結 = Wave 1 の週 1-3 に集中
- 依存グラフ Level 順 (topological)
- Level 0 (K1/A1/M3/R1) を確定してから Level 1 に進む
- Level 0 内でも 4 items 並行 (代表取締役の週 30-60 分判断 × 3-4 週で完遂)
実務推奨 (代表取締役の週次判断 × 12 週での配分):
| 週 | 落とす論点 | 論点性質 |
|---|---|---|
| 1 | A1 (🟡 提案中 · PR #3541 審議) · K1 (軽量) | one-way door + foundation |
| 2 | M3 · R1 (外部 lead time 併走) | calendar-driven |
| 3 | A2 · F1 (Route #3 実装中核) | one-way door |
| 4 | P2 · H1 | M3 派生 + A1 派生 |
| 5-6 | O1 · O4 · B1 · G1 (Level 2) | Wave 1 完遂 + Level 2 突入 |
| 7-8 | N1 · N3 · O3 · Q3 | Wave 2 中盤 |
| 9-10 | N6 · M4 · M1-M2 (JIIMA 詳細) | Wave 2 終盤 |
| 11-12 | J1 (Wave 4 前半) · Wave 3 の残 Tier 1 | Phase 0 終盤判断 |
RQ-118 (SaaS 一般化フレームワーク) との整合
本ページの Wave 順序を RQ-118 Synthesis (2026-07-01 · 3 モデル $7.25) の一般化 7 phase model で照らし直した結果、次の対応が確認できる:
一般化 Phase と JTBD-012 Wave 1 論点のマッピング
| RQ-118 一般化 Phase | 論点 (JTBD-012) | 性質 |
|---|---|---|
| Phase −1 Compliance Landscape (calendar-driven external) | M3 JIIMA cert track · R1 TSA provider | 外部機関/契約 lead time 3-8 ヶ月 = 逆算圧力最大 |
| Phase 0 Trust Boundary (foundational · one-way door) | A1 schema · K1 GCP region | 事後変更コスト極大 · schema と region が Phase 1+ の下流全てを規定 |
| Phase 1 Identity & Tenancy (partial in Wave 1) | (Wave 2 の B1 API 認証 · L1 multi-tenant) | Phase 0 dogfood (1 tenant) では Wave 2 に defer 可 |
| Phase 2 Data Lifecycle & Audit | A2 append-only · F1 訂正削除履歴 · O1 RPO · O4 replica · H1 索引 · P2 事務処理規程 | Route #3 真実性 4 要素の実装配線 |
読み替え: Wave 1 Top 10 は phase −1 (M3/R1) + phase 0 (A1/K1) + phase 2 (残 6) の混合で、Phase 1 (identity/tenancy) は Wave 2 に defer した構造。Compliance-first の phase 順序と整合。
RQ-118 が明示化した gap (RQ-117 Level 0 に未反映の 3 件)
3 モデル DR で「一般化 Phase 0 に含まれるべき」と特定されたが RQ-117 で明示されていない 3 論点。2026-07-02 に Wave 2 リストへ反映済 (次セッション以降で新規 ID 発行 + RQ-117 Synthesis 側追記へ拡張予定):
| 論点 | 現行状態 | RQ-118 phase | 反映位置 (2026-07-02 反映) | メモ |
|---|---|---|---|---|
| KMS custody (customer-managed vs platform-managed) | RQ-098 spike 待ち (D10 塊 · Wave 3) | Phase 0 (foundational) | Wave 2 前半 (方針だけ確定 · 実装は RQ-098 継続) | 失敗パターン #9 (3-6 EM) 予防価値。Wave 3 の RQ-098 spike 実装より前に方針を切り分けて decouple |
| Identity boundary (user ∈ org ∈ workspace?) | B1 API 認証モデル (Rank 15 · Wave 2) で late 定義 | Phase 0 (foundational) | Wave 2 前半 (B1 API 認証モデルの前に定義) | Phase 0 dogfood 1 tenant では意識薄いが、Phase 1 GA 前確定必達。Slack Unified Grid の 12+ EM retrofit 予防 |
| Network boundary (VPC-SC / private endpoints) | ADR-0179 (GCP + WIF) で部分 cover · K2/K3 (Wave 2-3) で late | Phase 0 (foundational) | Wave 2 後半 (Phase 1 GA 前 multi-tenant 化前に確定) | Phase 0 dogfood では GCP native network で十分。K2/K3 (region) と並列に位置づけ |
決定順序 3 原則の RQ-118 補強
RQ-118 が定量化した failure pattern top 10 (中央値 5 EM / top-3 平均 9 EM) を根拠に、既存 3 原則が実測で正当化された:
- 外部リードタイム逆算 (calendar-driven) — JIIMA 3-8mo · SOC 2 II 6-15mo · ISO 27001 6-10mo の実測 lead time 表 (RQ-118 §4) が根拠
- one-way door 優先 (irreversibility-driven) — failure pattern #1-3 (database tenancy 6-12EM · auth-before-tenancy 12+EM · region-before-residency 3-9EM) の 3 モデル合意が根拠
- 依存グラフ Level 順 (topological) — RQ-118 の phase −1 → 0 → 1 → 2 が Level 0-2 topology で一致
Wave 1: 最初の 3 週間 (Top 10 · Score 順)
| Rank | ID | 塊 | 論点 (要約) | 状態 | Effort | Blocks | Score |
|---|---|---|---|---|---|---|---|
| 1 | A1 | D2 / D6 | receipts + audit_log の schema 基礎 (id 型 + content_hash + 列定義) | 🟡 (PR #3541) | 3PD | 6 | 19.5 |
| 2 | R1 | D7 | TSA provider 選定 (総務大臣認定必須 · 5 候補) | ⬜ | 5PD | 2 | 8.5 |
| 3 | K1 | D3 | GCP region (asia-northeast1) 確定 | ⬜ | 1PD | 3 | 9.5 |
| 4 | M3 | D7 | JIIMA 認証トラック選択 (5 スキーム) | ⬜ | 5PD | 3 | 11.5 |
| 5 | P2 | D7 | 事務処理規程 テンプレート採用元 (Claude unique 発見) | ⬜ | 3PD | 1 | 6.5 |
| 6 | A2 | D2 / D7 | append-only 強制手段 (DB constraint / trigger / app) | ⬜ | 5PD | 1 | 7.5 |
| 7 | F1 | D2 / D7 | 訂正削除履歴 の行 shape (version chain / tombstone / patch) | ⬜ | 8PD | 1 | 11.0 |
| 8 | H1 | D6 | 3 要素検索 (日付 / 金額 / 取引先) 索引戦略 | ⬜ | 5PD | 0 | 4.5 |
| 9 | O1 | D9 | RPO 目標 (Recovery Point Objective) | ⬜ | 3PD | 1 | 8.5 |
| 10 | O4 | D9 / D3 | Cross-region replica 位相 (async replication) | ⬜ | 5PD | 1 | 7.5 |
運用ルール (RQ-117 Synthesis §Question 4 より):
- 週次 1-2 draft ADR (代表取締役の集中判断 30-60 分/週)
- 最初の 3 週間で Top 10 制覇 (30-60 分 × 3 週 = 1.5-3 時間 × 集中判断)
- Wave 1 の 4 items (A1 · K1 · M3 · R1) が Critical Path Level 0 = PR-4 merged 前に必ず確定
- Wave 1 の 6 items (A2 · H1 · F1 · P2 · O1 · O4) が Level 1 = PR-5/6/7 merged 前に必ず確定
- RQ-118 補完 3 論点 (KMS custody 方針 / Identity boundary / Network boundary VPC-SC) は Wave 2 に組込済 (詳細は §RQ-118 gap 表)。Phase 1 GA 前確定必達 = Wave 2 完遂前に方針レベルで確定する
Wave 1 #2 起票候補の 3 択 quick reference (2026-07-02 追記)
Wave 1 #1 (A1 = receipts + audit_log schema 基礎) は PR #3541 で起票済。次に起票する #2 は R1 / K1 / M3 のいずれか (Critical Path Level 0 · A1 と並列)。代表取締役の週次判断 (30-60 分/週) の入口として、3 択の性質を 1 表にまとめる:
| 候補 | 塊 | Score | Effort | Blocks (下流数) | 特徴 | 起票所要 (目安) |
|---|---|---|---|---|---|---|
| K1 | D3 | 9.5 | 1PD | 3 | GCP region asia-northeast1 確定。軽量 · 「決めて次に進む」型。ADR-0179 (GCP 単一) が既に方針確定 → region 詳細のみ | 30 分 |
| M3 | D7 | 11.5 (最高) | 5PD | 3 | JIIMA 認証トラック選択 (5 スキーム)。Lead time 3ヶ月 = 逆算圧力 最大。カレンダー駆動で早期確定価値大 | 60 分 |
| R1 | D7 | 8.5 | 5PD | 2 | TSA provider 選定 (5 候補 · 総務大臣認定必須)。外部契約 lead = 契約プロセス逆算で早期起票価値 | 45-60 分 |
判断のフレーム (代表取締役向け · 「今週どれを落とすか」):
- 時間圧力優先 → M3 (JIIMA 3ヶ月 lead) or R1 (TSA 契約 lead)
- 判断負荷最小 → K1 (方針既確定 · 詳細のみ · 30 分)
- 下流波及最大 → M3 or K1 (共に Blocks 3)
- Score 最高 → M3 (11.5)
いずれの候補も PR-4 merged 前に確定必須 (Critical Path Level 0)。3 択を代表取締役が選択後、tasks/prompts/draft_adr_*.md に起案 → drp KV 投函の順で進める。
Wave 2: Phase 0 中盤 (rank 11-30 · 20 items + RQ-118 補完 3 論点)
G1 TSA Strategy interface (D7) · N1 MFA policy (D10) · N3 SIEM / log aggregation (D10) · N6 Incident response runbook (D10) · M4 JIIMA 手数料予算 (D7) · Q3 認証取得順序 (D7) · N5 Pen test 範囲 (D10) · N7 Breach determination log (D10) · M1-M2 JIIMA トラック詳細 (D7) · M5 マニュアル整備責任者 (D7) · O2 RTO 目標 (D9) · O5 DR runbook rehearsal (D9) · P4 ダウンロードの求め SLA (D7) · A3-A8 schema 詳細 (D2 · 5 items) · B1 API 認証モデル (D4b)
+ RQ-118 補完 3 論点 (2026-07-02 追加 · 詳細は §RQ-118 gap 表):
- KMS custody 方針 (D10 · Wave 2 前半) — customer-managed vs platform-managed の方針だけ確定 · 実装は RQ-098 spike (Wave 3) に defer
- Identity boundary (D4b · Wave 2 前半 · B1 前) — user ∈ org ∈ workspace のモデルを B1 API 認証モデル定義より前に確定 · Phase 1 GA 前 multi-tenant retrofit を予防
- Network boundary VPC-SC (D3 · Wave 2 後半) — private endpoints / perimeter 方針を K2/K3 (region) と並列に確定 · Phase 1 GA 前 multi-tenant 化前必達
Wave 3: Phase 0 終盤 (rank 31-83 · 53 items)
残 Tier 1 items = 主に C (security 5 items) + D (SLO 3 items) + I (照合 3 items) + J (運用 5 items) + B (API 4 items) + K2-3 (region 2 items) + N8 (D10) + Q1-2 (D7) 等。Phase 0 完了時 Tier 1 の 60% (50 items) 確定を目標。
Tier 2 (36 items): draft ADR 化しない
対応する scope doc (pr4-endpoint-schema.md / pr5-search-endpoint.md / pr6-correction-deletion-history.md / pr7-tsa-strategy.md) or 開発仕様書 (docs/dev/dev_*.md) 内で決定。scope docs に「本項は ADR 化せず本 doc で決定」注記を追加 (別 PR)。
- B2 GET /receipts response contract
- B3-B8 API design detail (pagination · rate limit 等)
- C7-C8 security tuning
- D4-D6 SLO tuning
- E1-E8 CI/CD detail
- G2-G6 TSA impl detail (fake provider · retry · cache)
- H2 search API pagination model
- I4-I6 Reconciliation tuning
- J2-J8 Ops detail (on-call · runbook stubs)
- K3 data residency detail
- L2-L4 expansion (pricing / plan tiers)
- M6-M9 JIIMA 派生
- N2 / N4 / N8 security ops
- O3 PITR retention window
- P1 / P3 / P5 顧問税理士 連携詳細
- Q1-Q2 セキュリティ資料
塊 別 詳細 (D1-D10)
D1 商品スコープ (product scope)
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| L1 | Multi-tenant 有効化基準 (Phase 0 は 1 tenant · Phase 1 で N tenant 化判断) | 🔴 | 3 | Phase 0 実測データに基づき Phase 1 GA 前判断 |
D2 正本 (RecordStore · ADR-0126 ✅ 確定)
責務: 証憑本体 = GCS Object Retention Lock · 台帳 = Cloud SQL · 索引 = 補助 (H1 で戦略決定)。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| A1 | receipts + audit_log の schema 基礎 (id 型 + content_hash + 列定義) | 🟡 (PR #3541) | 1 | UUID v7 + SHA-256 採用案 · 6 下流をブロック |
| A2 | append-only 強制手段 (DB constraint / trigger / app-layer) | ⬜ | 1 | Route #3 真実性の柱 |
| A3-A8 | schema 詳細 (PK strategy / index type / partition 等) | ⬜ | 2-3 | A1 受理後の実測データで判断 |
| F1 | 訂正削除履歴 の行 shape (version chain / tombstone / patch) | ⬜ | 1 | 電帳法 §4-1-3 実装土台 · 8PD |
| F2-F6 | 訂正削除履歴 詳細 (deletion policy / tombstone GC 等) | ⬜ | 2-3 | F1 受理後 |
| O1 | RPO 目標 | ⬜ | 1 | Cloud SQL PITR + GCS Object Lock で担保 |
| O2 | RTO 目標 | ⬜ | 2 | O1 と対で決定 |
D3 基盤 (Platform · ADR-0179 ✅ 確定 = GCP Cloud Run + Cloud SQL + GCS + BigQuery + Vertex)
責務: SaaS 実行環境 · 監視 · 認証基盤 · CI/CD。Cloudflare は明示的に不採用 (ADR-0179 §3.4)。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| K1 | GCP region 確定 (asia-northeast1) | ⬜ | 1 | 3 下流 (O1/O4/O3) をブロック · 1PD (trivial だが foundational) |
| K2-K3 | data residency 詳細 (cross-project / VPC-SC) | ⬜ | 2-3 | K1 受理後 |
| C1-C6 | Security 基礎 (encryption / Secret Manager / WIF 等) | ⬜ | 2-3 | ADR-0179 継承 |
| D1-D3 | SLO 基礎 (uptime / latency / error budget) | ⬜ | 3 | Phase 0 実測データで決定 |
| E1-E2 | CI/CD 基礎 (Cloud Build / staging strategy) | ⬜ | 3 | Phase 0 現行 vlt-deploy.yml 継承 |
| J1 | dogfood pilot go/no-go 判定基準 | ⬜ | 3 | Phase 0 完了時判断 |
| O4 | Cross-region replica 位相 (async replication) | ⬜ | 1 | K1 確定後 · RPO 非ゼロ設計 |
D4a テナント分離 (TenantContext · 🔴 RQ-092 spike 待ち)
責務: multi-tenant 化 (Phase 1 GA 以降) 時のテナント境界強制。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| L1 | Multi-tenant 有効化基準 | 🔴 | 3 | RQ-092 待ち · Phase 1 GA kickoff まで defer 可 |
| C1 (再掲) | tenant 分離を DB level で強制 vs app level 保証 | ⬜ | 2-3 | D2 に依存 |
| K1 (再掲) | tenant N 化時の region 分離 (Phase 2A で multi-region 判断) | ⬜ | 3 | O4 と連動 |
D4b 認証 (AuthGateway · ADR-0127 ✅ 部分確定 = M365 day-1 pluggable)
責務: 顧客の M365 / Google などの IdP でログインを可能にする。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| B1 | API 認証モデル (OAuth + WIF) | ⬜ | 2 | ADR-0127 day-1 M365 継承 |
| B3-B8 | API design 詳細 | ⬜ | 3 | Wave 3 |
| N1 | MFA policy (advisory vs enforced) | ⬜ | 2 | ADR-0127 補強 · Runner-up rank 12 |
| IdPBroker | 自前実装 vs 外部 (WorkOS 等) | 🔴 | 2-3 | RQ-099 待ち |
D5 取込 (IngestAdapter · ADR-0127 ✅ 部分確定 = M365Adapter day-1)
責務: 証憑ソース (Outlook/OneDrive · Gmail/Drive) からの受領。Phase 0 dogfood では manual upload 主体。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| I1-I3 | Reconciliation 設計 (BigQuery streaming / dead-letter 等) | ⬜ | 3 | Phase 0 manual upload では優先度低 |
D6 データモデル (VoucherLedger + SearchIndex · A1 に依存)
責務: 証憑台帳の schema と検索索引の設計。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| A1 (再掲) | schema 基礎 (D2 と同項目) | 🟡 (PR #3541) | 1 | - |
| H1 | 3 要素検索 (日付 / 金額 / 取引先) 索引戦略 | ⬜ | 1 | 電帳法 §4 検索要件 (V3.a) |
D7 真実性 (IntegrityGuard + ImmutableStore · ADR-0175 ✅ Route #3 確定)
責務: 3 号真実性ルート 4 要素 (訂正削除履歴 + 事務処理規程 + JIIMA cert + TSA 認定) を全て実装配線。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| A2 (再掲) | append-only 強制手段 | ⬜ | 1 | Route #3 pillar 1 |
| F1 (再掲) | 訂正削除履歴 の行 shape | ⬜ | 1 | Route #3 pillar 2 · 電帳法 §4-1-3 |
| G1 | TSA Strategy interface (pluggable) | ⬜ | 2 | Route #3 pillar 3 · 補助 |
| R1 | TSA provider 選定 (5 候補) | ⬜ | 1 | Route #3 pillar 3 · 総務大臣認定必須 (2022-07-30 以降) |
| M1 | JIIMA 認証トラック 5 スキーム内訳 | ⬜ | 2 | Route #3 pillar 4 |
| M2 | JIIMA 令和 5 vs 令和 7 (デジタルシームレス) 適用年度 | ⬜ | 2 | M3 で先行判断 |
| M3 | JIIMA 認証トラック選択 (3 ヶ月リードタイム 逆算) | ⬜ | 1 | Phase 1 GA から逆算 |
| M4 | JIIMA 手数料予算 (¥500K/track) | ⬜ | 2 | Runner-up rank 15 |
| M5 | マニュアル整備責任者 (V1 可視性) | ⬜ | 2 | Phase 0 内 |
| P2 | 事務処理規程 テンプレート採用元 (Claude unique 発見) | ⬜ | 1 | Measure 3 + 4 併用推奨 |
| P4 | ダウンロードの求め 対応 SLA (税務調査対応) | ⬜ | 2 | 電帳法 §4-1-4 |
| Q3 | 認証取得順序 (JIIMA / ISMS / SOC 2 / P マーク) | ⬜ | 2 | Runner-up rank 16 |
D8 自動化 (OcrExtractor + AutomationGate · Phase 0 spike 待ち)
責務: OCR + LLM で 3 要素抽出 + 信頼度ゲート。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| (該当なし) | Phase 0 dogfood では manual upload 主体で OCR は Phase 1 準備段階 | 🔴 | 3 | Vertex AI (ADR-0179 §3.3) 前提で Phase 1 GA 前判断 |
D9 保存年限 (RetentionManager · 🔴 RQ-091 spike 待ち)
責務: 電帳法 保存年限 (最長 10 年) の自動管理 + 期限後廃棄。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| O1 (再掲) | RPO 目標 | ⬜ | 1 | RQ-091 と対で決定 |
| O2 (再掲) | RTO 目標 | ⬜ | 2 | O1 と対で決定 |
| O4 (再掲) | Cross-region replica 位相 | ⬜ | 1 | K1 確定後 |
| O5 | DR runbook rehearsal cadence | ⬜ | 2 | Wave 2 |
| F2 | 削除ポリシー (soft / hard delete + tombstone GC) | ⬜ | 2 | F1 受理後 |
| P1 | 顧問税理士 連携頻度 (税務調査対応) | ⬜ | 2 | P2 と連動 |
| P3 | 事務処理規程 レビュー・改訂サイクル | ⬜ | 2 | P2 受理後 |
D10 暗号化 (KeyManager · 🔴 RQ-098 spike 待ち)
責務: テナントごと envelope 暗号化 + 鍵エスクロー + TEE (機密計算) 判断。
| ID | 論点 | 状態 | Wave | 備考 |
|---|---|---|---|---|
| C1 | encryption 方針 (envelope · tenant-per-key) | ⬜ | 2-3 | ADR-0179 継承 |
| C2 | Secret Manager 運用 (key rotation) | ⬜ | 2-3 | GCP Secret Manager |
| N1 (再掲) | MFA policy | ⬜ | 2 | Runner-up rank 12 |
| N3 | SIEM / log aggregation 戦略 | ⬜ | 2 | Runner-up rank 13 |
| N5 | Pen test 範囲 + 頻度 | ⬜ | 2 | SOC 2 準備 |
| N6 | Incident response runbook | ⬜ | 2 | Runner-up rank 14 |
| N7 | Breach determination log (72h 通知) | ⬜ | 2 | GDPR / SOC 2 |
| N8 | Non-human identity governance | ⬜ | 3 | Wave 3 |
| J3 | secret rotation cadence | ⬜ | 3 | Wave 3 |
| J4-J7 | Ops 詳細 (on-call · runbook stubs 等) | ⬜ | 3 | Wave 3 |
塊 状態集計
| 塊 | Tier 1 | 受理済 ✅ | 提案中 🟡 | spike 🔴 | 未着手 ⬜ | ADR |
|---|---|---|---|---|---|---|
| D1 商品スコープ | 1 | 0 | 0 | 1 | 0 | - |
| D2 正本 | 12 | 部分 | 1 (A1) | 0 | 11 | ADR-0126 |
| D3 基盤 | 16 | 部分 | 0 | 0 | 16 | ADR-0179 |
| D4a テナント分離 | 4 | 0 | 0 | 1 | 3 | RQ-092 |
| D4b 認証 | 7 | 部分 | 0 | 1 | 6 | ADR-0127 |
| D5 取込 | 3 | 部分 | 0 | 0 | 3 | ADR-0127 |
| D6 データモデル | 2 | 0 | 1 (A1) | 0 | 1 | - |
| D7 真実性 | 11 | 部分 | 0 | 0 | 11 | ADR-0175 |
| D8 自動化 | 0 | 0 | 0 | 1 | 0 | Phase 1 判断 |
| D9 保存年限 | 6 | 0 | 0 | 1 | 6 | RQ-091 |
| D10 暗号化 | 14 | 0 | 0 | 1 | 14 | RQ-098 |
| 未割当 | 1 | 0 | 0 | 0 | 1 | - |
| Tier 1 合計 | 83 | 部分 | 1 | 5 spike | 77 | - |
「部分」= 塊レベルでは ADR 受理済だが 論点 個別は未消化 (例: D2 は ADR-0126 で正本 = 自社集約 案 B 確定だが、A1-A8 の schema 詳細は未着手)。
次段 (2026-07-01 時点)
- Wave 1 Top 10 の順次起票: 週次 1-2 draft ADR ペース · 最初の 3 週間で完遂目標。A1 (shipped) → R1 → K1 → M3 の Level 0 を優先。
- arch 側 amend PR:
arch_jtbd012_voucher_saas_draft.mdの Cloudflare 記述を ADR-0179 (GCP 単一) に置換 · 塊 D3 の基盤層 Cloud Run + Cloud SQL + GCS + BigQuery + Vertex 追記。Wave 1 起票と平行実施可能。 - spike 4 件の Deep Research 起票: RQ-088 (D7 真実性) · RQ-091 (D9 年限) · RQ-092 (D4a 分離) · RQ-098 (D10 暗号) · RQ-099 (D4b IdPBroker)。Phase 0 中盤までに 1-2 件消化目標。
- 本ページの updates: draft ADR 受理ごとに §Wave 別 順序 と §塊 別 詳細 の状態列を書換。Auto-sync CI 化候補 (別 PR で検討)。
- RQ-118 反映 (新規追加 · 2026-07-01):
- KMS custody 方針を Wave 1 or 2 前半で確定 (実装は RQ-098 spike 継続)。失敗パターン #9 予防 (3-6 EM)。
- Identity boundary (org model) を Wave 1 or 2 に新規 論点として追加検討。B1 (Rank 15) より上流。Slack Unified Grid 予防 (12+ EM)。
- Network boundary (VPC-SC) を Phase 1 GA 前 (Wave 2 後半) に確定明示。
- ADR 起案候補「SaaS 開発の決定順序フレームワーク採択」(ADR-0021 の refinement/amend 相当 · 1 論点 = compliance-constrained phase −1 to 2 anchor の明文化)。
参照
- arch_jtbd012_voucher_saas_draft.md — arch (層 ①〜⑤ + 塊 D1〜D10) SSoT (Cloudflare 記述は 2026-07-01 時点で stale)
- RQ-117 Synthesis — 119 items 詳細 + Top 10 スコアリング + JIIMA coverage matrix
- ADR-0125 — JTBD-012 dogfood 先行方針
- ADR-0126 — 正本 = 自社集約 (案 B)
- ADR-0127 — 認証 = M365 pluggable day-1
- ADR-0175 — Route #3 真実性 4 要素
- ADR-0179 — Phase 0-1 GCP / Phase 2B AWS · Cloudflare 不採用
- ADR-0181 — vlt クローン設立
改訂履歴
| 日付 (JST) | 変更 |
|---|---|
| 2026-07-01 | 初版起票。arch の 塊 D1-D10 を土台に RQ-117 Synthesis 119 items を再構造化 · Wave 1 Top 10 に A1 起票 (PR #3541) を反映 · ADR-0179 (GCP 採用) 前提を明記 |
| 2026-07-01 (追記) | 3 節を新設・強化: (1) arch 層 × 塊 × 論点 分布 で arch の層構成図 (①〜⑤ + 横断) と論点の対応を可視化、(2) 信頼境界別 論点越境 で 5 境界 (顧客/自社/hyperscaler/第三者/自社内部) と論点の関係を整理、(3) 論点の依存関係 で Critical Path Level 0-4 の Mermaid graph + Level 別表 + 決定順序 3 原則 + 週次判断 12 週配分表を追加 |
| 2026-07-01 (追記 2) | RQ-118 との整合 節を新設 — SaaS 一般化 7 phase model (Claude+OpenAI 合意 · $7.25 · 3 モデル DR) と Wave 1 論点の対応表 · RQ-117 Level 0 との delta 3 件 (KMS custody / Network boundary / Identity boundary) を明示。§次段 に 3 件 + ADR 起案候補追記 |
| 2026-07-01 (追記 3) | arch 層 × 塊 × 論点 分布 表に モジュール説明 列を追加 — 各主モジュール (証憑管理アプリ / AuthGateway / IdPBroker / RecordStore / Platform 等 23 モジュール) の役割を 1 行説明 · arch draft §モジュール別表と同期 · ADR 参照と spike RQ (RQ-088/091/092/098/099/127) を各行に付記 |
| 2026-07-01 (追記 4) | モジュール説明 列を <ul><li> 箇条書きに整形 · scoped CSS で列幅を 300-380px に確保 (div.module-desc-wide wrapper) · 各説明が読みやすい 2-3 行折返しで表示されるよう調整 · テキスト内容は追記 3 から変更なし |
| 2026-07-02 (追記 5) | 主モジュール 列と モジュール説明 列を番号付リスト (<ol><li>) に整形 · モジュール名の重複を解消 (主モジュール列 = 名前のみ / モジュール説明列 = 説明のみ) · 同じ番号 1-6 で両列の対応を視認できる形に · 主モジュール列も scoped CSS で列幅 150-210px に確保 |