ADR-0032 — v1.0 goal 精緻化 (1.0.0 を defer、 authoring-quality criterion H 追加、 ADR-0031 を 0.x 実装に resequence、 ADR-0030/0031 partial-revise)

Status: accepted · Date: 2026-05-27 · folio v0.5.0-draft · accepted (user 承認済 2026-05-27)。 ADR-0030 §2.6 timing + ADR-0031 §2.1 sequencing を partial-revise (本文 frozen)

§1. Context

ADR-0030 (v1.0 stability criteria) accepted + ADR-0031 (mattpocock authoring-pattern 吸収、 v1.x 想定で accepted) を承け、 当初計画は WS5 (1.0.0 bump) を criterion D 充足で先行 → ADR-0031 を post-1.0 (v1.x) であった。 criterion D (orchestration walk PASS) は whisper の実 consumer adoption で達成と判断された。

しかし bump 直前の再検討で、 criterion D の十分性に欠落が判明した: criterion D は orchestration 機械が end-to-end で動くことを検証するが、 whisper では同じ機械が構造妥当だが中身が空の spec (空 constitution が folio validate clean のまま "done") を産出した。 すなわち「orchestration が動く」 ≠ 「authoring が実質的な spec を産む」。 ADR-0030 の criteria A〜G には authoring 品質の軸が無い (verification §4.2 完成形 vs 試作 の精神)。

1.0.0 宣言は constitution §5 の strict-SemVer commitment であり、 真の production-readiness を signal すべきである。 user は「実用に耐えうる」 の判断に、 authoring が空でない spec を産む状態 = ADR-0031 の grill 吸収を必須と判断した。 公開 1.0.0 は巻き戻せない (SemVer はバージョンを下げられず、 constitution §5 違反になる) ため、 確信が得られてから宣言するのが筋。

本 ADR は (a) 1.0.0 を defer (0.x 継続)、 (b) authoring-quality を criterion H として追加、 (c) ADR-0031 を 0.x 実装に resequence を決定する。 これは恣意的な goalpost 移動ではなく、 実証 (whisper) に基づく goal の精緻化であり、 「1.0.0 を明示 criteria で gate する」 という ADR-0030 の規律が機能した結果である (出荷前に criteria の不足を検出できた)。 status = proposed (user 承認待ち); 承認で accepted へ flip する。

§2. Decision

§2.1 1.0.0 を defer (WS5 を保留)

現時点で WS5 (1.0.0 bump) を実行しない。 folio は 0.5.0-draft = 0.x development phase を継続する。 constitution §5 により 0.x は strict-SemVer の約束が無く、 後方非互換変更を自由に入れられる — ADR-0031 吸収を 0.x で行う前提条件である。 ADR-0030 §2.6 は criterion D 充足を bump の前提とするのみで即時実行を強制しない (「実施時点は承認後に確定」) ため、 本 defer は ADR-0030 と矛盾しない。

§2.2 criterion H 追加 (authoring quality) + criterion D の十分性明確化

v1.0 stability criteria に以下を追加する。

#criterion根拠現状
Hauthoring quality — folio-architect が greenfield / maintenance 双方で空でない実質 spec を産出する (hollow placeholder が "done" に残らない)。 実体 = ADR-0031 の grill-based elicitation + lazy materialize の実装完了ADR-0031 / whisper failure / verification §4.2未 (ADR-0031 実装 = task #84 が 0.x で必要)

criterion D の明確化: D (orchestration walk PASS) は orchestration 機械の動作を検証する (whisper で達成)。 D は authoring 品質を保証しない — 品質軸を本 ADR で H として分離する。 D は引き続き達成済 (ADR-0030 §2.1)。

§2.3 ADR-0031 を 0.x 実装に resequence

ADR-0031 の sequencing (§2.1 「timing = post-1.0 (v1.x roadmap)」 / §2.8 「適用時点 = WS5 完了後」) を 「0.x で実装 (pre-1.0)」 に revise する。 ADR-0031 の設計内容 (8 決定) は不変・有効。 sequencing のみ変更:

§2.4 ADR-0030 の不変部分

本 ADR が revise するのは ADR-0030 の §2.6 (timing) と criterion D の十分性のみ。 以下は不変・有効: §2.1 criteria A〜G (必要条件として存続、 H を加算)、 §2.2 bump scope (living spec 7 + plugin.json + bin/folio、 frozen-ADR 据置)、 §2.3 strict-SemVer breaking 定義、 §2.5 constitution version 独立。 ADR-0030 は partial-revise であって supersede ではない (status は accepted 維持、 ADR-0026 が ADR-0022/0024 を revise した先例と同型)。

§2.5 1.0.0 宣言の最終 gate

folio は次の全充足時に 1.0.0 を宣言する: (a) ADR-0030 criteria A〜G + (b) 本 ADR criterion H (ADR-0031 実装完了) + (c) user が「実用に耐えうる」と判断。 宣言時の bump scope は ADR-0030 §2.2 をそのまま適用する (その時点で living spec は §10.3 等 grill 吸収を既に含む)。

§2.6 適用

§3. Consequences

Positive

Negative

Neutral

§4. Alternatives Considered

採否
1.0.0 を defer + criterion H 追加 + ADR-0031 を 0.x 実装 (採用 = B)1.0.0 を「実用に耐える (grill 吸収後)」 の user 判断に gate。 0.x の自由度で吸収を入れ巻き戻し不要。 strict-SemVer の不可逆性を尊重
今 1.0.0 bump → ADR-0031 を post-1.0 (v1.x) (= A、 前計画)不採用 — criterion D が authoring 品質を保証せず、 「動くが空」 の folio を 1.0 と宣言する懸念。 §10.3 を 1.x で MUST 化すると MAJOR 強制 (SHOULD で妥協を要する)。 user が「実用判断後に 1.0.0」 を選好
ADR-0030 を full-supersede し v1.0 定義を新規 ADR に一本化不採用 — ADR-0030 の criteria A〜G / bump scope / SemVer 定義は不変・有効ゆえ supersede は過剰。 partial-revise (timing + criterion 追加) が最小
ADR-0030/0031 本文を直接書き換えて defer を反映不採用 — accepted ADR 本文は frozen (historical record)。 revise は新 ADR + reverse-link で trace する (folio の確立 pattern)

§5. Trace