Vivarium recipes index (v1)
このリポジトリがホストするすべての再現の機械的に生成されたカタログインデックス。 Vivarium MCP サーバ および、レシピの一覧取得・フィルタリング・検索を行うその他のプログラマティックなツールが利用する。
概要
URL: https://aletheia-works.github.io/vivarium/api/recipes.json
トップレベルフィールド
レシピエントリフィールド
バージョニング
バージョンはトップレベルオブジェクトの index = "v1" として記載される。
- オプションの追加的フィールドは v1 リビジョンとして出荷される。 コンシューマーはフィーチャーデテクトする。
- 破壊的変更(フィールド名変更、型変更、オプション → 必須)には v2 スキーマの兄弟ファイルが必要。
現在 v2 は存在しない。
リビジョン履歴
生成方法
インデックスは
docs/scripts/generate-recipes-index.ts
によってビルドされ、docs/package.json の rspress dev と build スクリプトに組み込まれている。
スクリプトはレシピディレクトリを走査し、各レシピ README の最初の H1 からタイトルを取得し、
slug パターン(末尾に Issue 番号を持つ slug の場合は <project>-<digits>。
それ以外は最初のダッシュセグメント。形が異なるレシピには小さなオーバーライドマップ)から
project / issue を導出する。
出力は git でトラッキングされるため、レシピを追加する PR の diff にインデックス更新も表示される。
オプションのファセットフィールド(language / symptom / severity / tags)は
docs/data/recipe-facets.json
から merge される。これは手作業で維持され PR 差分でレビューされる集中型オーバーレイだ。
v1 では project フィールドは引き続き slug 由来のままにしている。
コンフォーマンス
recipes.json ドキュメントが v1 に準拠するのは:
recipes.schema.jsonを検証パスする。index === "v1"かつcontract === "v1"。- すべてのエントリの
slugが^[a-z0-9]+(-[a-z0-9]+)*$に一致する。 - すべての Layer 2 / 3 エントリが
verdict_urlを含む。Layer 1 エントリはこれを省略する。
条項 1〜3 はスキーマバリデーションで機械的に強制できる。条項 4 はスキーマの oneOf
に意図的に組み込まれていない導出ルール制約だ(MCP サーバは Layer 2 / 3 エントリに
verdict_url がない場合と、verdict_url が 404 を返す場合を同じように扱う——
両方とも「スナップショットなし」としてコンシューマーに通知する)。
関連情報
- Contract v1 — 各レシピページが公開するランタイム verdict サーフェス。
- Manifest v1 — 外部リポジトリが
.vivarium/manifest.tomlに置く アップストリーム側マニフェスト形式。このインデックスのレシピエントリは内部レシピに対応する。 外部リポジトリはここにリストされる代わりに自身のリポジトリのマニフェストを公開する。