ADR 0009: 「フレームワーク非依存」の再定義 — フレームワークロックインなし + 寛容ライセンスのみ
フレームワーク非依存を、オーケストレーションのロックインなし + 寛容ライセンスのみとして再定義する。実バックエンドは、純粋性のためではなくインストールの重さのためのオプトイン extra となる。
ステータス: accepted · 日付: 2026-06-17
不変の記録。ドリフト追跡の対象外(
coversなし)。編集ではなく、置き換え(supersede)で対応すること。
0002 のプロダクト方針の一部。
背景
「フレームワーク非依存 / ゼロ SDK コア / オフラインで動作」という見出しは、実際の制約を 誤って表現している。本当の要件は次のとおりである:(a) LangChain 系オーケストレーションへの ロックインなし(LangChain / LlamaIndex / Dify / LangGraph)、および (b) 依存関係のライセンス衛生 — Apache-2.0 より厳しいものは含めない(GPL/AGPL/LGPL、SSPL、非商用などを除外)。 成熟した基盤ライブラリ(torch、numpy、sentence-transformers)は許容される。 「依存ゼロ」は決して本質ではなかった。
決定
フレームワーク非依存 = (a) オーケストレーションフレームワークへのロックインなし + (b) 寛容ライセンスのみ(Apache-2.0 以下の寛容さ) として再定義する。具体的には:
- ポジショニングの書き換え:「ゼロ SDK / オフラインで動作」から「フレームワークロックインなし +
ライセンスクリーン + すべてのバックエンドは
Protocol経由で交換可能」へ。 - CI での依存ライセンスゲート: すべての推移的依存関係は寛容ライセンスで なければならず、そうでなければゲートは失敗する。これにより制約が運用に落とし込まれ、それ自体が コンプライアンスを重視するユーザーへのセールスポイントとなる。
- 軽量なデフォルトインストール: 実バックエンド(torch/embeddings)は extras
(
[embed]など)経由のオプトインとする — これはインストールの重さとオプションの GPU に関する パッケージング/UX 上の選択であり、もはや純粋性のための選択ではない。オフラインで確定的なパス (BM25 + MockProvider)は引き続きデフォルトのテスト/デモループであり、ドグマではなく 維持された強みである。
検討した代替案(却下)
- 絶対的なゼロ SDK コアとし、純粋性のために全実バックエンドを extras に置く(オプション A): その_根拠_ゆえに却下 — torch/numpy はライセンス面でもロックイン面でも許容可能であるため、 理由は純粋性ではなくインストールの重さである。(軽量デフォルトという結果自体は、別の理由で 維持される。)
- バッテリー同梱のデフォルト(ベースインストールに実 CPU embedding を同梱): 却下 — 数 GB のデフォルトは、評価段階にあるライブラリにとって採用の障壁となる。
ragspine-core+ragspineの階層化ディストリビューション:単独著者による v0.1 には 時期尚早な運用オーバーヘッドとして却下。
影響
ADR 0008: プロンプト — ragspine/prompts/<locale>/ 配下のパッケージ化された PromptRegistry
プロンプトを PromptRegistry Protocol の背後にある、パッケージ化されたロケール別テンプレートファイルとして外部化し、実行時に DomainProfile の値で埋め込む。
ADR 0010: インテント解析 — 決定論的セキュリティゲート + プラガブルな IntentParser
常時有効で決して差し替え不可能な決定論的セキュリティゲートを、プラガブルな IntentParser Protocol から切り離す — 重要なところは決定論的に、安全なところは柔軟に。