Consumer workflow
任意のリポジトリが
uses:することで、Vivarium 内部のコードを一切コピーせずに 自分の CI 内で Vivarium ホスト型バグ再現を検証できる再利用可能 GitHub Actions ワークフロー。
ワークフローは
aletheia-works/.github/.github/workflows/vivarium-verdict.yml
に配置されている。
公開済みの ghcr.io/aletheia-works/vivarium-<slug> イメージをプルし、
レシピを実行し、Contract v1 に準拠する verdict.json をキャプチャし、
公開 JSON Schema
に対して検証し、キャプチャした verdict が呼び出し元が期待するものと一致することを
アサートする。
5 行のコンシューマー例
これだけで統合は完了だ。コンシューマーリポジトリの
.github/workflows/check-bug.yml には多数のジョブを置けて(追跡するレシピごとに 1 つ)、
それぞれが自分の CI の green / red シグナルになる。
スラッグは
src/layer2_docker/
(Layer 2 カタログ)と
src/layer3_thirdway/
(Layer 3 カタログ。トレースはイメージに焼き込まれている)以下のディレクトリ名だ。
インプット
Verdict セマンティクス
reproduced はこの実行でアップストリームバグが再現されたことを意味する——
再現は機能している。unreproduced はバグが再現されないことを意味する。
通常はアップストリームプロジェクトがバンドルイメージに取り込んだ修正を出荷したからだ。
完全な説明は
Contract v1: Verdict セマンティクスを参照。
「このバグは修正された」アラートを望むコンシューマーは:
…と書けばよく、バグの再現が止まった瞬間にワークフローが赤くなる—— これがまさにアップストリーム修正検知シグナルだ。
アーティファクト
ジョブはキャプチャした verdict.json を
verdict-<slug>-<run_id> という名前で 30 日保持のワークフローアーティファクトとして
アップロードする。コンシューマー側のバッジやデバッグフローは
GitHub Actions API 経由でアーティファクトをフェッチできる。
このワークフローがしないこと
- Layer 1 (WASM) の検証。 Layer 1 の再現はブラウザ内のページで実行される。 verdict サーフェスはライブの DOM / JavaScript だ。Layer 1 の CI コンシューマー側検証は 別の問題であり、再利用可能なワークフローでは対応できない—— Vivarium ギャラリーの Playwright スイートが Layer 1 リグレッションチェックの正式な仕組みだ。
- ホスト型 GHA ランナーでの Layer 3 (rr replay) の検証。 replay ステップ自体はレシピのイメージ CMD の一部として実行されるため、 このワークフローはコンシューマー側から Layer 3 を駆動するが、 CPUID フォールティングをゲストに公開するランナーでのみ機能する。 GitHub ホスト型 Ubuntu ランナーはこれを公開しない。Layer 3 コンシューマー検証 にはベアメタルまたは PMU 公開型 KVM のセルフホストランナーが必要だ。
関連情報
- Contract v1 — このワークフローが消費する verdict サーフェス。
verdict.schema.json— ワークフローが検証に使用するスキーマ。- Layer 2 カタログ
—
inputs.slugに使用できるスラッグ。 - Layer 3 カタログ — 追加スラッグ(rr replay。上記のランナー注意事項あり)。