再実行の方法
手順を一つずつここに並べます。メカニズムのシミュレーション、実モデルのスイート、API を使わないオフライン再生、レシートチェーンの検証。統計的な結論の大部分は、API を使わない再計算スクリプトで再実行でき、モデルは一切使いません。
#なぜ大部分の結果をコストゼロで再実行できるのか
利得実験の元の記録はすべて rows.jsonl に一問ずつ書き出されており、arm / task_id / delivered / hidden_pass / calls_used の五つのフィールドを含みます。つまり統計的な結論のためにモデルを呼び直す必要はありません。
# ゲートの収束(CONFORM、三つの問題バンク)
ops/gain/replay/conform_settle.py
ops/gain/replay/paired_ci.py # 対応のある McNemar + 固定シードの bootstrap
ops/gain/replay/pooled_paired_ci.py # バンクを統合
# 候補の上限と早期停止
ops/gain/replay/verify_hidden.py
ops/gain/replay/rows_visible_audit.py # 可視/非公開の分離監査
# k 曲線
ops/gain/replay/off5_k_curve.py
# ループの帰属(turn-1 のコードをオフラインで取り出し直す、モデル呼び出しゼロ)
ops/gain/analyze_r460.py --rescore-turn1
# 多者実行
ops/gain/replay/peer_exec_sim.py
ops/gain/replay/peer_exec_real.py
#メカニズムのシミュレーション
python examples/pulse_suite.py --out <DIR> # E17–E24、パルス攻撃
python examples/entrycost_suite.py --out <DIR> # E1–E16、参入コスト
完全に決定的です。rng のシード = f'{seed}:{config_digest}' なので、同じパラメータなら必ず同じ結果になります。
#実モデルのスイート
python examples/realmodel_suite.py --out <DIR> --tasks 60
| 問題バンク | EvalPlus MBPP+ v0.2.0(378 問、sha256 で固定) |
| 品質判定 | アームの外での compile_check(t.check)(answer) |
| 対応キー | task_id = sha256(prompt + tests)、アーム間で安定 |
| 統計 | McNemar の正確検定 + 固定シードの bootstrap 95% CI + 検出力 |
| 再開 | (arm, i) をキーにしており、中断しても最初からやり直す必要なし |
#レシートチェーンとオフラインビューア
vacant audit <name> # ある logbook の署名チェーンを再検証(PASS/FAIL)
vacant verify-att att.json --answer "olleh" # 持ち運べる署名付きの証憑を検証
オフラインの単一ファイルビューアもこのサイトに置いています。そのままダウンロードして使えます。
| ファイル | サイズ | 内容 |
|---|---|---|
| receipt_viewer.html | 0.3 MB | 単独実行 |
| receipt_viewer_multiparty.html | 4.5 MB | 多者実行 |
どちらも Vacant リポジトリの examples/ からそのままコピーしたものです。
- レシートはファイルに埋め込まれています
- 外部リソースゼロ、ネットワークリクエストゼロ
- 保存して
file://で直接開いても、チェーン全体の検証を最後まで実行できます
#回帰の判定基準
.venv/bin/python -m pytest tests/ -q
| 時点 | 結果 |
|---|---|
| 初期 | 179 passed |
| 2026-07-09(VM リセット後) | 189 / 189 |
| 独立レビューの修正ブランチ | 361 passed / 1 skipped(ベースライン 330) |
| チャネル分離の改版 | 428 passed / 1 skipped(判定基準を 25 件追加) |
#データ索引そのものも検証できる
實驗記錄/_index/files.jsonl は 3,322 行のリストで、各行にパス、型、行数、sha256 が記録されています。そのため証拠ディレクトリ全体(3,322 個のファイル、1,550,582 行、325,111,980 バイト)が手を加えられていないかどうかを独立に検証できます。
claims.json の各項目には「再計算の方法」フィールドがあり、どのスクリプトを再実行し、どのフィールドを読み、どの分母を使うかが書かれています。
#サイトの側
npm run build # content/**/*.md → docs/、blog/、sitemap.xml、検索索引
npm run check # 内容の完全性だけを検証し、ファイルは書かない
python3 -m http.server 8899 # ローカルでプレビュー
サイトのライブデータは Vacant 本体のリポジトリのスクリプトが生成します。
cd ~/Documents/GitHub/Vacant
python examples/publish_status.py \
--root ~/.vacant-mcp \
--out ../vacant-docs-web/data/status.json \
[--run-tests]
```}}
## 証拠の等級
論文の 121 件の参考文献は、証拠の等級ごとに整理されています。
| 等級 | 定義 | 件数 |
|---|---|---|
| **A 全文あり** | PDF が手元にあり、引用は一字一句照合済み | 81 |
| **A ウェブ保存** | 公式文書、仕様、ソースコードのページを保存し、ハッシュを登録済み | 13 |
| **B 要旨に基づく** | 要旨のみ手元にある。それに基づく論断は本文で「要旨に基づく」と明示 | 5 |
| **C 書誌のみ** | 全文は未収録。書誌は DOI、Crossref、出版社のページで確認済み | 16 |
| **プロジェクト文書** | 本プロジェクトの未出版文書 | 6 |
## 次に
- データ索引の各項目の内容:{{doc:evidence-ledger|証拠台帳}}
- 本研究の経緯:{{doc:journey|研究の経緯}}

