Vivarium Manifest v1
外部リポジトリが
.vivarium/manifest.tomlに置いて Vivarium 実行可能な再現を宣言するための静的マニフェスト。
これはアップストリームサーフェスだ——外部プロジェクトが Vivarium に
「私たちは再現をホストしている。場所はここだ」と伝える方法。
ランタイムサーフェス(DOM verdict、verdict.json)は
Contract v1 で別途定義されている。
概要
リポジトリは以下の場所に単一の TOML ファイルを置くことで Vivarium 互換の再現を宣言できる:
再現を実行したいコンシューマーはマニフェストを読み、layer でディスパッチし、
以下に定義されたレイヤーごとの規約に従う。
スキーマディレクティブ
Taplo や
Tombi などの TOML 言語サーバを持つエディタは、
マニフェストが #:schema 行で始まる場合に manifest.toml を自動補完・検証する:
このディレクティブは TOML コメントなので、プレーンパーサー(tomllib など)には
見えず、CI バリデーションはディレクティブの有無に関わらず同一の動作をする。
Cargo と pyproject マニフェストも同じパターンを使用する。
必須トップレベルキー
オプションのトップレベルキー
レイヤー固有テーブル
[layer1]、[layer2]、[layer3] のいずれか一つが必須——
トップレベルの layer 整数と一致しなければならない。
[layer1] — ブラウザ内 WASM
[layer2] — Docker カタログ
[layer3] — 第三の道カタログ
⚠️ Layer 3 は Layer 1 / 2 が届かない再現——決定論的シミュレーション、 microVM スナップショットなど——のための枠。Vivarium は現在ひとつも 出荷していないので、この表は実践の記述ではなく宣言に留まる。 第三者の
layer = 3マニフェストに出会った consumer は、 ランタイム要件がそのマニフェストの作者によって文書化されていることを 期待してよい。
Verdict セマンティクス
expected_verdict の値は Contract v1 で
ロックされた値リテラルに一致する:
"reproduced"⇒ アップストリームバグが再現される。"unreproduced"⇒ アップストリームバグが再現されない。
expected_verdict = "reproduced" を宣言するページが一般的なケースだ——
レシピはアップストリームレポートが記述した失敗を実証する。
expected_verdict = "unreproduced" を宣言するページはアップストリームの修正を
意図的に追跡するセンチネルだ。バグが再びリグレッションした瞬間に赤くなる。
バージョニング
バージョンはひとつの場所に記載される:
- ドキュメントのトップの
manifest = "v1"。
フィールドの追加、削除、セマンティクスの変更には v2 マニフェスト仕様ページ、
v2 JSON Schema の兄弟ファイル、別の ADR が必要。
コンシューマーは manifest リテラルによるディスパッチで v1 と v2 を
同時サポートできるようにすべきだ。
現在 v2 は存在しない。
コンフォーマンス
マニフェストが Vivarium Manifest v1 に準拠するのは:
- 消費リポジトリの
.vivarium/manifest.tomlに配置された有効な TOML 1.0 ドキュメントである。 - TOML→JSON 変換後に
manifest.schema.jsonを検証パスする。 [layer1]/[layer2]/[layer3]のうちちょうど一つが存在し、 トップレベルのlayer整数と一致する。- 指定されたアーティファクト(ページまたはイメージ)が実際に存在し、 実行時に Contract-v1 準拠の verdict を生成する。
条項 1〜3 はスキーマバリデーションで機械的に強制できる。条項 4 はレシピごとの検証だ。
リファレンス実装
aletheia-works/vivarium リポジトリは
src/external_examples/
以下にレイヤーごとに 3 つのサンプルマニフェストを出荷している——すべて Vivarium 自身の
公開デプロイページと GHCR イメージを指しているため、形だけ有効なのではなく実際に
実行可能なものとして書かれている。
repro-regression.yml の CI は、毎回のプッシュとプルリクエストで
src/external_examples/*/.vivarium/manifest.toml をすべてこのスキーマに対して検証する。
関連情報
- Contract v1 — このマニフェストが指すアーティファクトが公開しなければならないランタイム verdict サーフェス。
manifest.schema.json— TOML→JSON 変換後のマニフェスト用 JSON Schema(draft 2020-12)。- Consumer workflow — コンシューマーが自身の CI でマニフェストで宣言されたイメージを検証するための再利用可能 GitHub Actions ワークフロー。