ADR-0031 — mattpocock authoring-pattern 吸収 (grill 流 elicitation + adoption-aware folio-architect 統合 + vocabulary glossary enrich + ADR-worthiness + lazy materialize、 protocol-only / v1.x roadmap)

Status: accepted · Date: 2026-05-27 · folio v0.5.0-draft · accepted (user 承認済 2026-05-27)。 実装は v1.x (ADR-0030 WS5 v1.0 bump 後)。 v1.0 criteria は不変

§1. Context

folio は public OSS (MIT) 化 + v1.0 stability criteria 確定 (ADR-0030 accepted) まで到達した。 並行して folio の初の実 consumer adoption (whisper project に folio-architect で folio 導入) を全ログ精読でレビューしたところ、 folio-architectadoption-state ギャップが実証された: SKILL は「既存 spec の編集」前提で枠付けされており、 greenfield (folio 未導入 / 新規 project) の経路が無い。 結果、 init の最終判断を人間が迫られ、 constitution.html空 placeholder のまま "done" に到達した (folio validate は構造妥当 = clean だが中身が空虚)。 「validate clean ≠ 完成」 を露わにした failure である。

その処方を探す中で Matt Pocock の skill 群 (github.com/mattpocock/skills、 MIT) を調査した。 中核は grill-me / grill-with-docs = 「実装前に AI と執拗に 1 問ずつ対話して設計を詰める」 pattern。 これは folio 固有でなくほぼ全ての project 開発文脈で真な普遍的 upstream 活動である。 grill-with-docs は加えて (a) ubiquitous-language glossary (CONTEXT.md) の inline 更新、 (b) ADR-sparingly (3 条件)、 (c) code-cross-reference (spec-vs-code)、 (d) lazy 作成 (空 scaffold 禁止) を反射的に行う。

本 ADR は、 この authoring pattern を folio に吸収する設計を記録する。 scope = protocol/振る舞いの吸収のみ (folio の機械検証 artifact 核 = ADR-0028 deterministic floor は不変)。 timing = post-1.0 (v1.x roadmap): ADR-0030 の v1.0 criteria / bump scope は不変で、 本設計は今確定し実装は WS5 (v1.0 bump) 後に stage する。 設計は /grill-me による 1 問ずつの対話 (2026-05-27) で 8+1 論点を解決して確定した。 status = proposed (user 承認待ち); 承認で accepted へ flip する。

§2. Decision

§2.1 吸収 scope と sequencing

§2.2 grilling protocol (folio 自前 / spec-aware / gap-driven / persist-as-you-go)

§2.3 skill topology — folio-init は分離せず folio-architect に統合

§2.4 ubiquitous-language — vocabulary.yaml を enrich

§2.5 ADR-worthiness — rules.html §10.3 に正規化

§2.6 code-cross-reference — Phase B の authoring technique のみ

§2.7 grill-with-docs 反射 → folio phase への落とし込み + 意識的 scope 外

grill-with-docs 反射folio への翻訳
challenge against glossary / sharpen fuzzy languageenriched vocabulary.yaml を参照 → Phase C grilling + Phase F spec-review-vocabulary
discuss concrete scenariosPhase C grilling 技法 (EARS scenario と接続)
cross-reference with codePhase B 拡張 (§2.6、 gate 化しない)
update CONTEXT.md inlinegrilling 中に vocabulary.yaml / ADR を inline persist (§2.2 persist-as-you-go)
offer ADRs sparinglyrules.html §10.3 (§2.5)
lazy file creationfolio init = 構造のみ / 実体は grill 後 lazy-write (§2.3)

意識的 scope 外: mattpocock の engineering workflow skills (to-prd / to-issues / triage / tdd / diagnose / zoom-out 等) は consumer の SDLC 関心であり folio の design-intent mandate の外ゆえ吸収しない。 folio 関連成分は grill-with-docs (grilling + glossary + ADR-sparingly + code-xref + lazy) に集約される。

§2.8 supersession / revision と適用時点

§3. Consequences

Positive

Negative

Neutral

§4. Alternatives Considered

論点 / 案採否
protocol-only 吸収・核不変 (採用)folio の機械検証グラフ核 = 固有資産を守りつつ著述を人間的に。 「artifact 軽量化」 「哲学から再検討」 は不採用 (核を溶かすと folio の存在意義を失う)
1.0 先行 → 吸収は 1.x (採用)v1.0 を動く標的にしない (ADR-0030 の目的)。 「吸収を 1.0 前提に (ADR-0030 改訂)」 「判断保留」 は不採用
grilling を folio 自前所有 (採用)配布 plugin ゆえ外部 skill 依存 (delegate) は脆い。 spec-aware に folio 化
folio-init 分離撤回・architect 統合 (採用)whisper の routing gap を単一適応 skill で解消 (mattpocock の lazy-adaptive と整合)。 「別 skill 分離維持 (前 lock)」 「1 skill 2 mode 明示引数」 は不採用 (前者は routing 別途要 / 後者は人間判断が残る)
glossary = vocabulary.yaml を enrich (採用)単一 SSoT + config ゆえ grilling 中 inline 追記可。 「HTML glossary SSoT + yaml projection」 は P-2 最適だが inline 更新が重く不採用、 「discipline のみ」 は定義を永続化せず不採用
code-cross-reference = Phase B technique のみ (採用)ADR-0026 の実装適合性境界を守る。 「spec-review-drift agent 新設」 は境界侵犯リスクで不採用、 「scope 外」 は grill-with-docs の価値を捨てるため不採用
合成 = gap-driven + persist-as-you-go (採用)mattpocock 自身が durable artifact-reading で解いており忠実。 「明示 design-brief 入力」 「folio-grill 別 skill 分離」 は不採用 (前者は brief 形式規定要 / 後者は skill 再 2 本化)

§5. Trace