ADR-0049 — vision pack (engine 段階3 後)

Status: accepted · Date: 2026-07-04 · folio v1.2.0 · engine epic folio-0dv / sub-epic folio-c5r (完全 doc-suite 被覆) の段階3 後。 文書規律エンジンに記述型 doc-type の 2 例目 = vision (「なぜ作るか」= 北極星・目標・機能の方向を描く文書) を追加する設計を確定する。 ADR-0046 の architecture-description (記述型 1 例目) が確立したfloor 三本柱 (照会 graph 整合 + navigable id アンカー + 固定章/必須要素) を、 Pichler Product Vision Board の骨 + Wiegers Vision&Scope の測定可能要素を選抜移植した lean hybrid schema (7 章) へ適用する。 SRS の要件へは照会するだけで再掲しない (案A)・上位の principle は clinic 母体が constitution ゼロ生成ゆえ自前の inline principle で自己終端する。 設計の探索は demo-walk grill (2026-07-04) で行い、 本 ADR は実装 + 検証 + land 後の forward decision を記録する。 ADR-0041 の visual design system・ADR-0042 の hybrid 生成を記述型 2 例目へ適用し、 engine core 抽出完了 (ADR-0046 §2.4) が 2 例目でも core 無改変で保たれることを確認する (rule-of-three 継続)。

§1. Context

engine epic folio-0dv は folio の文書規律を一般化した汎用文書生成エンジンを構築する。 その sub-epic folio-c5r は「任意プロジェクト向けの完全な文書一式」を被覆する roadmap である。 ADR-0046 が要件索引型を脱した初の記述型 doc-type = architecture-description (構造の WHAT) を追加した。 完全 doc-suite にはもう一つ、 索引型でも構造記述でもない層 — 「なぜ作るか」を描く vision (ビジョン) — が欠けていた。

gap — 「なぜ作るか」層が engine に欠けている。 SRS は振る舞いの WHAT、 architecture は構造の WHAT、 ADR は個別判断の WHY を記録するが、 プロジェクト全体がどの状態を目指し (北極星)・何を成功と測り (目標・成功基準)・どの方向の機能で実現するかを高度から束ねる文書は無かった。 vision はこの最上流の「なぜ」を担い、 下位の SRS/arch/ADR は最終的にこの意図へ遡れるようにする。

framing — vision は「なぜ作るか」であって「何を作るか」でない。 vision と SRS の二重記述 (no-restate 問題) が最大の設計不確実点だった。 vision は北極星・why-it-matters・目標という別の高度を描き、 具体の要件・受入基準・アクター役割は SRS の領分ゆえ、 vision はそれらを照会するだけで再掲しない (案A・§2.3)。 goals (vision の測定物差し = 経営がいつ「成功」と言えるか) と acceptance criteria (SRS の機械検証可能な合格条件) は高さの違う 2 つの物差しであり同一物の再掲でない、 という区別が no-restate の核心である。

vision も記述型 pack ゆえ、 設計 grill (2026-07-04) は ADR-0046 と同じく demo-walk-first で進めた — opus でモックアップを生成し :8729 で walk し、 反応で 7 章粒度・id 5 種の切り方・北極星文の読み味を確定してから本物の決定的 pack を構築した。 clinic 診療予約 vision を母体 (instance#1) に本物 pack を構築・検証し、 本 ADR はその実装 + 検証 + land 後の forward decision を記録する。 build に先立ち、 arch pack の band 見出しに残っていた instance 固有 hardcode (件数/ドメイン文言) を contract 化し genuine-shape floor を硬化する folio-bhe を独立先行 land した (vision assembler が同じ罠を掘らない予防規律)。

§2. Decision

§2.1 schema (Pichler 骨 + Wiegers 選抜の lean hybrid・7 章)

vision pack は Pichler Product Vision Board の lean な骨 (北極星 / 対象 / ニーズ / 機能 / 価値) に Wiegers Vision&Scope の測定可能要素 (目標 + 成功基準 + 非目標) を選抜移植した lean hybrid を schema に採る (arc42+C4 を採った arch と同じ「業界の骨を選抜合成する」様式)。 章立ては固定 7 章: 北極星 / 解くに値する問題 / 関係者 / 目標+成功基準 / 主要機能の方向 / リスク+非目標 / 指針価値。 id 付き離散 node は 5 種: ST (関係者) / G (目標) / SC (成功基準) / F (機能の方向) / R (リスク)。 arch と同じく固定章の集合が floor の検査単位を与える (§2.2)。 vision は用語集章を持たない — 高度な narrative ゆえ専門語は本文で括弧併記し、 用語 SSoT は下位の索引型 (SRS 以下) が担う。 North Star Framework の metric 駆動を採らない: 質的 vision (北極星 folio-7wn 自身が定量 metric を持たない反例) を排除するため、 成功基準は任意の測定物差しに留め metric を必須化しない。

§2.2 floor 三本柱の流用 + vision 固有の件数 guard 不要化

vision の floor は ADR-0046三本柱をそのまま流用する: (a) 照会 graph 整合 (features→SRS 充足照会が実在 FR を role 通り指す・verify_cross_doc_refs 流用) / (b) navigable id アンカー (ST/G/SC/F/R の各 node に安定 id を emit・案A 照会を人間が辿れる) / (c) 固定 7 章 + 各章の必須要素存在。 加えてgenuine-shape 構造不変条件 (folio-bhe 教訓: band/h2 を要素単位・case-insensitive・attribute-tolerant に数え decoy 見出しを封鎖) と可視テキスト fabrication-free (属性 intact でも可視だけ捏造する fail-open を全 node で封鎖) を課す。

arch の件数 guard (band_numchk / 全角 / 不可視文字) は vision に不要。 arch の band 見出しは instance 固有の件数 (「6 つの部品」) を持ち、 その count fabrication を封鎖する guard が要ったが、 vision の 7 つの band 見出しは全て pack 不変 (件数・ドメイン非依存の汎用フレーズ) ゆえ literal pin で足りる。 章数 (7) は verify の期待見出し配列長から単一 SSoT 導出し、 magic「==7」を書かない (folio-bhe ceiling が arc42 専用「==8」の pack 流用破綻を反面教師として教えた)。 cover の構成件数 (目標 3 / 機能 4 等) は contract 配列長から導出し instance hardcode しない (folio-bhe 予防規律を最初から適用)。

§2.3 自前 inline principle 自己終端 + vision→SRS backward 照会

vision は照会 graph の終端を自前の inline principle (指針価値・例 PRIN-PATIENT-TRUST) で持ち、 自己終端する。 母体 clinic は constitution をゼロ生成する (index 型 suite ゆえ) ため外部 principle へ forward できず、 終端手段は inline principle か SRS 連鎖の 2 択に絞られ、 arch 先例 (inline) に倣い inline principle に確定した。 vision→SRS の照会 edge は backward (arch→SRS の完全ミラー): reachability は SRS→vision となり、 vision の backward edge がedgeless な SRS へ終端到達路を供給する (SRS は自前終端を持たず、 arch と vision の 2 経路から終端到達する冗長構造)。 ★inline principle のgenuine 性 (グラフ充足のための作文でなく本物の判断規則か = 北極星の言い換えでなくトレードオフ時にどちらへ倒すかを実際に決める規則か) は機械 floor で裁けず、 ceiling の明示的検査観点として課す (folio-5se の vision 専用 fidelity lens へ焼き込む)。

§2.4 Moore pitch opt-in + 目標ツリー図 optional (必須化しない)

北極星文は自由叙述を既定とし (捏造/歪みは ceiling が検査)、 Moore の elevator-pitch 文法 (対象顧客 / ニーズ / カテゴリ / 独自価値 / 競合との違い) は任意追加 slot (opt-in) とする — contract に pitch がある時だけ穴埋め表を描画し、 各穴と本文の章の対応を floor が内部照会 anchor で検査する。 目標ツリー図 (北極星→目標→成功基準の mermaid) もoptional — ある時だけ描画忠実性を検査する。 いずれも必須化しない: 質的 vision (metric 無しの folio-7wn が反例) を排除しないため。 opt-in 要素の不在でも floor が PASS することを敵対テストで pin する。

§2.5 横断原則 (core 無改変 / clinic 先 / glossary 章なし)

§3. Consequences

§4. Alternatives

§5. Trace

design-of-record (探索): engine 設計 doc (doc-type → pack 写像) + doctype-coverage-audit (完全 doc-suite の gap SSoT・vision =「なぜ作るか」層)。 基盤: ADR-0046 (記述型 doc-type の floor 三本柱 + 案A cross-document 照会 + core 無改変 を vision へ流用・vision は記述型 2 例目)・ADR-0043 (照会 graph 終端完備検証を floor 背骨に流用)・ADR-0041 (人間層 visual design system を適用)・ADR-0042 (構造=決定的組立 / prose=opus 充填の hybrid を適用)。 原則接地: P-7 (3-domain・design intent = なぜ作るかの WHAT) / P-4 (declarative) / P-10 (ADR 昇格は user 承認)。 追跡: bd engine epic folio-0dv / sub-epic folio-c5r 段階3 後 folio-c5r.4 (admin-direct build・contract YAML + assemble-vision.sh + rolemap/vision.rolemap.yaml + verify-vision.sh + prose manifest + test-adversarial-vision.sh + CONTENT_LEAVES[vision] 登録)。 先行 land: folio-bhe (arch band 見出しの instance hardcode を contract 化 + genuine-shape floor 硬化・main 146b7ea・vision build 前の予防規律)。 follow-up: folio-5se (vision 専用 ceiling agent = fidelity-vision + persona-walk-vision・inline principle genuine 性 / 章リード件数 fidelity / 可視 count-fidelity をここへ委譲) / folio-qvv (folio-self vision self-host = 北極星 folio-7wn を記述型 instance#2 として生成) / folio-bf4f (arch band_numchk 撤去可否・非 blocking・count-fidelity 全面 ceiling 化の scope refinement)。 決定の経緯: user demo-walk grill 2026-07-04 (opus モックアップ → :8729 walk → PASS「これでよい」で 7 章粒度 / id 5 種 / 北極星文の読み味を確定・論点 4/5 の暫定裁定を walk で確定)。 検証: floor 全 GREEN を admin 独立再走 (assemble / verify pre-fill + filled + artifact 3 mode PASS・敵対 vision 58/58・graph 敵対 25/25 〔H0 終端完備 11→12 / W1 全終端喪失で clinic 6 鎖孤立へ更新〕・sandbox 41/41 回帰 0・core 〔lib/ + inject-prose.sh + assemble-srs.sh + srs.css〕 diff 空 = 無改変・verify-graph FLOOR-OK 〔VISION-CLINIC-APPT 終端完備・SRS へ backward 終端路供給〕・cross-doc-dup clean・folio validate clean) + 独立 ceiling wf_64344fbe (3 レンズ opus・fail-open 敵対 gate-cert / silent field-drop 完全性 / 設計整合+inline principle genuine 性 → refute)。 GREEN-flipping high 1 件を捕捉: no-restate/非目標 aside と Moore pitch の contract 由来可視値 (xref-label 4 本・href 4 本・pitch ref_label) が emit されるのに verify 未突合 = 兄弟 (srs_code/value/href の一部) は検査済なのに label/href だけ非対称に欠落し捏造がすり抜ける fail-open (admin の self-test が試さなかった injection = author≠certifier の load-bearing 実証)。 → verify に (href, code, label) 三つ組 set_eq + pitch ref_label set_eq + data-doc-id chk を追加して閉塞 (ceiling の正確な repro を実弾で block 確認・敵対 V56-V59 で pin)。 ★最重要検査観点 = inline principle PRIN-PATIENT-TRUST の genuine 性は肯定判定 (北極星の言い換えでなく「予約を守る > 機能数 > 開発の速さ」の sacrifice-order を名指す operational な判断規則・grill が課した ceiling 観点 PASS)。 features→SRS edge の意味妥当性・prose 件数一致も肯定。 独立 ceiling は 3 巡で収束 (初回 3-lens + gate 修正後の独立 re-cert ×2・author≠certifier の load-bearing 実証 = admin が build した gate の fail-open を独立 reviewer だけが 2 度突いた): 巡2 = 三つ組を sorted-set にした自 fix 回帰 (4 chip を aside 間で集合保存的に並べ替えると本文↔chip 帰属 desync が素通る) を捕捉 → positional 化で修正 (bhe「各巡の blocker は前巡自身の fix の回帰」の再演)。 巡3 = 反実仮想 (sorted-set 復元で全 permutation が fail-open 再現・positional で全 block) まで実証し aside/pitch/cross-doc に残存 fail-open 無しを系統 sweep で確認・GREEN。 全 fail-open は敵対 V56-V60 で pin (敵対 58→63)。 残 advisory (低・follow-up): footer.gen_meta 死フィールド (arch 同挙動) / success_criteria aside の #AC1 section-jump anchor (defensible) / pitch「競合との違い」の r-1 anchor (章 coverage 優先で存置)。 gate funnel で pre-existing の spec/verification round-trip drift (folio-nufl・vision 無関係) も検出・別途起票。 version: 本 ADR 文書版 = 1.1.0 (記録する capability は engine epic folio-0dv・後方互換追加。 folio 本体は v1.2.0)。