用語集
// GUIDE · 用語集
このプロジェクトが特殊な使い方をする言葉。
ほとんどの用語は他の文脈では普通の意味を持つが、Vivarium は特定の役割に固定している。検索しやすく、五十音/英字順に並べ、その語が load-bearing な仕様ページへ相互リンクしている。
// CORE
どのページでも出てくる必須語。
- バグ再現 (Bug reproduction)
以前に報告されたバグが発生することを観察できる、入力と環境の繰り返し可能なシーケンス。 Vivarium はこれらを書面化されたインシデントレポートではなく、 実行可能なアーティファクトとしてホストする。
- レシピ (Recipe)
1 つの再現。
src/layer{1,2,3}_*/<slug>/に配置され、実行可能なページ(Layer 1)またはピン留めされたイメージ手順 (Layer 2 / 3)として出荷される。1 つのレシピは 1 つのアップストリームバグを対象とする。 カタログとはこのリポジトリがホストするすべてのレシピの集合のこと。- スラッグ (Slug)
レシピのケバブケース識別子——アップストリーム Issue が存在する場合は通常
<project>-<issue-number>(例:pandas-56679)、それ以外の場合は説明的な句(例:bash-local-shadows-exit)。ディレクトリ名、および Manifest v1 のslugフィールドと同じ形。- レイヤー (Layer 1 / 2 / 3)
レシピがどのランタイムに乗るか。Layer 1 = ブラウザ内 WASM(瞬時起動)。 Layer 2 = Docker(完全忠実度)。Layer 3 = 第三の道——record-replay、 決定論的シミュレーション、microVM。選択は そのレシピがどの種類のバグを再現できるかの話であって、 どの技術が流行っているかではない。詳細は アーキテクチャ。
- Verdict
レシピを実行した結果——
"reproduced"または"unreproduced"のいずれか。 reproduced はアップストリームバグが再現することを意味する。 unreproduced は再現しないことを意味する。 以前は"pass"/"fail"だったが、 Contract v1 リビジョン 3(ADR-0029)で値の名前そのものが意味と一致するように リネームされた。詳細は verdict セマンティクス。- Evidence
verdict の根拠となるデータ——キャプチャされた stdout / stderr、 終了コード、所要時間。Layer 1 はページ内に inline で公開し、 Layer 2 / 3 は
verdict.json内に同梱する。 Phase 6 R.1 で Contract v1 rev 2 として追加された。これにより 比較ページが「再現するかどうか」だけでなく「なぜ」も示せる。
// 仕様サーフェス
外部リポジトリとツールが読む 3 つの面。
- Contract (v1)
すべての再現ページが公開するランタイムサーフェス——DOM 属性、 JS グローバル、メタタグ、そして
verdict.jsonファイル形状。Vivarium ページが<meta name="vivarium-contract" content="v1">を載せて署名する規約。Phase 5 から v1 でロックされている。詳細は Contract v1。- Manifest (v1)
公開サーフェス——外部リポジトリが
.vivarium/manifest.tomlに置く TOML ファイルで、 その repo 自身の Vivarium 実行可能な再現を宣言する。Phase 5 から v1 安定。 詳細は Manifest v1。 manifest は外部 repo が書くもの、recipe(上記)はこのリポジトリがホストするもの。- Recipes index (v1)
/api/recipes.jsonにある機械可読カタログ。このリポジトリがホストするすべてのレシピを列挙する。 MCP サーバ、ギャラリーのファセット UI、レシピを列挙・フィルタリングしたい 外部ツールが消費する。スキーマ: recipes-index v1。
// ワークフロー
仕様ページが繰り返し参照する動詞。
- Branch-fix(ブランチ修正)
アップストリームバグに対する候補修正。通常はコントリビューターのブランチ (または AI エージェントのドラフト)からビルドされる。 branch-fix verdict パイプラインは候補修正に対してレシピを再現する。 verdict が
reproducedからunreproducedへ反転すれば修正は機能している。 詳細は branch-fix パイプライン。- AI-slop verification(AI スロップ検証)
モチベーションとなったワークフロー: コントリビューター(人間または AI エージェント)が候補修正を作成し、レシピに対して実行し、 PR を出す前に比較を確認する。「自分の AI のドラフトは本当にバグを解いたのか、 それとも正しそうに見えるだけなのか?」Phase 7 サブストリーム B3 が、既存の branch-fix パイプライン + 比較ページ + MCP ツールを 1 本のウォークスルーに繋ぐ。
- Consumer workflow
外部リポジトリが自身の CI から呼び出して自身の manifest の再現に対する verdict をキャプチャする再利用可能 GitHub Actions ワークフロー。 詳細は spec/consumer-workflow。 Phase 5 サブストリーム D。
// メタ
このプロジェクト自身について使う言葉。
- フェーズ (Phase)
スプリント単位ではなく、月から年単位で測る一貫したまとまりの作業。 各フェーズはオープナー ADR、クローズ ADR、ロードマップエントリを持つ。 クローズは網羅的な機能リストではなく、 部分的だが正直な完成(ADR-0012 の precedent)で行う。 詳細は ロードマップ。
- ADR(Architecture Decision Record / アーキテクチャ決定記録)
なぜその決定がなされたか、どの代替案が検討されたか、 どのトレードオフが受け入れられたかを記録する番号付き設計メモ。
_context/decisions/以下にプライベートに置かれる—— AI エージェントと将来のメンテナーにとって load-bearing だが、 公開ドキュメントサーフェスの一部ではない。- Layer-uniform(レイヤー一様)
どの Layer(1 / 2 / 3)が生成したかに関わらず同じ見え方をするサーフェスを表す性質。 Contract v1 は layer-uniform である: verdict は Pyodide からでも、 Docker からでも、rr replay からでも同じように読める。
ドキュメント内でこのページに無い用語を見つけたら Issue を立ててほしい—— 用語集の漏れはオンボーディングサーフェスのバグであり、 スタイルの好みではない。