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] — Record-replay カタログ
⚠️ Layer 3 replay は訪問者の CPU が録音 CPU と異なる場合に CPUID フォールティングサポートを持つホストが必要。 GitHub Actions ホスト型 Ubuntu ランナーはこの機能を公開しない。 Layer 3 マニフェストは、セルフホストランナーまたは 最新の Intel(Ivy Bridge 以降)/ 最新 AMD シリコンを持つ 訪問者のデスクトップで消費するのが最適だ。
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 ワークフロー。