Falsehood audit
Skill HikaruEgashira/agent-skills/meta/skills/falsehood-audit
npx -y skills add HikaruEgashira/agent-skills --skill falsehood-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
AI 生成(vibecoding)成果物に潜む「それっぽい虚偽」を、固定された検査カタログ(検査ID・手順・ 合格基準つき)で系統的に検出する監査規格。主張面を列挙し、各主張面に対応する検査を 機械的に適用し、カバレッジマトリクスに全セルの実施状態を記録する。 内部整合(テスト全パス・schema valid・CI green)は証拠として認めない。 Trigger: 虚偽検出, ハリボテ検出, vibecoding 監査, 本物か確認, それっぽい嘘, fabrication audit, AI生成コード 検証, 捏造チェック.
SKILL.md
13.4 KB, as published. Nobody here has run it
原理
vibecoding では実装・テスト・ドキュメント・設定を同一プロセスが同じ誤解のもとで生成するため、成果物同士の一致は正しさの証拠にならない(トートロジー)。したがって全検査は、リポジトリの外にある基準 — 実ツールの挙動、一次ソース、独立な再計算、入力摂動に対する観測 — とだけ突き合わせる。
サブエージェントや過去セッションの「実行して確認した」という報告も内部整合の一種。追実行するまで 未検証。
合格の証拠水準は finding と同一。 合格と記録するセルにも、実施した具体的な入力・コマンド・観測を残す。証拠なしの合格は未実施として扱う。
全 finding に認識論ラベルを付ける: 事実(自分が実行・観察した) / 推測(知識ベース。根拠を1行添える) / 未検証(検証不能。合格に数えない)。
主張面の列挙(スコープ定義)
監査対象は「コード」ではなく「主張」。次の6クラスに分類し、検査のスコープ表を作る。
| クラス | 主張の形 | 棚卸しの源 |
|---|---|---|
| S1 存在 | この識別子・参照・依存は実在する | コード・設定・文書中の全外部参照 |
| S2 数値 | この量・単位・合計・余裕は正しい | 設定・schema・生成物中の全数値 |
| S3 能力 | このシステムは X ができる | README・要件文書・製品説明から抽出する。実装や設定から逆算しない(実装から拾うと「実装できていない能力」が主張リストから消え、監査対象外になる) |
| S4 結合 | A は B に接続され、影響を与える | 名前・値を共有する成果物の全ペア |
| S5 検証 | X は検証済み・テスト済みである | テスト・CI・validator・文書の検証言明 |
| S6 記述 | 文書は実体を正しく記述している | 全文書 |
検査カタログ
各検査は 手順 と 合格基準 が固定されており、対象があれば必ず実施する。実施できない場合はカバレッジマトリクスに理由つきで 未実施 と記録する(黙って省略しない)。
| ID | 検査 | 対象 | 手順 | 合格基準 |
|---|---|---|---|---|
| EX-1 | 参照実在 | S1 | 識別子・型番・API・引用を一次ソースと突合 | 全参照が一次ソースで確認できる |
| EX-2 | 実行受理 | S1,S3 | 生成されたコマンド・設定・出力物を実ツールに与える | 実ツールが受理する。失敗する場合、失敗箇所が参照解決より後(構文は本物) |
| NU-1 | 全域独立復号 | S2 | 生成物(バイナリ・エンコード済み出力・シリアライズ結果)の全域を別実装で復号し、全フィールドを解釈する。主張されたフィールドの照合だけでは不合格。理由: 生成物のうちどの主張にも対応しない領域は、主張の棚卸しから検査対象に入らない。したがって検査対象は主張の有無に関係なく生成物の全バイト・全フィールドとする | 全領域の独立解釈が仕様および他の全フィールドと整合 |
| NU-2 | 集計再計算 | S2 | 合計・マージン・比率を生データから検算。ファイル内の集計済みフィールドを信用しない。宣言値が規格・仕様のフィールドに符号化される予定のものは、そのフィールドの単位刻み・上限で符号化可能か(値÷単位が整数か、上限内か)を検算する | 検算と一致し、宣言された制約を満たし、符号化先フィールドで表現可能 |
| XA-1 | 宣言-消費整合 | S4 | ある値を宣言する成果物と、それを前提に消費する成果物のペアを全列挙し、ペアごとに整合を検算 | 全ペアで宣言が消費要求を満たす |
| XA-2 | 資源算術 | S3 | 広告された能力・モード・フォーマットごとに、その実現に必要な資源(帯域・クロック・電力・容量・レート・精度)を第一原理から計算し、経路上の全宣言値・物理限界・仕様上限と比較する | 全能力について必要資源 ≤ 経路上の最小宣言値 |
| XA-3 | 責務担当 | S3 | 主張された能力ごとに、入力から出力までの処理経路を構成要素の列として列挙し、各要素を特定する。経路には実行可能なコードだけでなく、計画段階の構成要素(部品・ファームウェア・フォーマット変換・エンコード/デコード段)を含む全サブシステムを通しで含める。担当が特定できない処理段が1つでもあれば finding | 全能力の全処理段(全サブシステム)に担当構成要素が存在する |
| CP-1 | 感度 | S4 | 全ての操作可能要素(UI 選択肢・CLI フラグ・設定キー・環境変数)を機械的に列挙して表にし、各要素について値を変えて出力の差分を観測。列挙してから検査する — 目についた要素だけ試すのは不合格 | 全要素で変更が出力に到達する。差分ゼロの結合は dead |
| VT-1 | 変異 | S5 | 実装を意図的に壊し、検証機構が失敗するか観測 | 検証が失敗に転じる |
| VT-2 | 検証範囲差分 | S5 | 「検証済み」と主張される範囲と、検証機構が実際に実行する範囲の diff | 主張範囲 ⊆ 実行範囲 |
| VT-3 | 契約遵守 | S5 | 検証機構自体に不正・境界入力を与える。実施した入力を全件、モジュールごとに記録する(型ごとに: null・スカラ・空・巨大・非有限) | 契約通りの拒否(クラッシュは契約不履行)。入力記録のない合格は未実施扱い |
| VT-4 | 期待値出所 | S5 | テストの期待値(アサートされる定数・golden 値・スナップショット)ごとに出所を分類する: ①外部仕様・正典データ ②実装と独立な計算 ③実装の出力から採取。VT-1 はこのクラスを検出できない(実装と同じ誤りを検証するテストは変異で正しく失敗する)ため、独立に実施する | 中核の能力主張(S3)を支えるテストに①または②由来の期待値が存在する。③のみのテストは回帰検出として記録し、正しさの証拠から除外する |
| DR-1 | 表面-記述差分 | S6 | 公開表面(CLI/API/設定キー)の機械的列挙と文書の diff | 文書が表面と一致 |
虚偽の型(finding の分類)
検出された虚偽は生成メカニズムで分類する。検査 ID と型の対応は多対多。
| 型 | 名称 | 生成メカニズム | 主な検出元 |
|---|---|---|---|
| 0 | 存在の捏造 | 実在しない参照の幻覚 | EX-1, EX-2 |
| A | 形式準拠・意味違反 | 語彙は正しいが換算・符号化規則の適用を誤る | NU-1, NU-2 |
| B | 成果物間の相互矛盾 | 成果物が互いを制約として読まずに生成される | XA-1, XA-2, XA-3 |
| C | 名前だけの結合 | 語彙の共有で接続を偽装、データフロー不在 | CP-1 |
| D | 検証の演出 | 検証機構が失敗しえない、主張範囲 > 実行範囲、または期待値が実装由来で正しさを検証していない | VT-1, VT-2, VT-3, VT-4 |
| E | 記述ドリフト | 文書が実体に追随しない | DR-1 |
型A/B/C の finding を得たら、それを素通りさせた検証機構を VT 系で必ず追検査し、型D の併発を対で報告する。型D は他の全型を素通りさせる上位の虚偽であり、重大度は常に一段上げる。
実施手順
- 主張の棚卸し: 主張を抽出し S1〜S6 に分類、主張×検査のカバレッジマトリクスを作る。S3 は必ず README・要件文書から先に埋める
- EX 系を最初に実施: 存在の捏造が出た成果物は、以降の全数値主張を疑う
- カタログを機械的に消化: マトリクスの全セルを 合格(証拠つき) / finding / N/A / 未実施(理由) のいずれかで埋める。検査は対象リストの全行に適用する。最初の1件・代表例・目立つ対象だけで止めた場合、残りは未実施セルとして記録する
- 発見段階では選別しない: 確信度が低い・重大度が低いと judged した finding も、確信度と重大度見込みを付けて全件報告する。報告段階での無言の破棄を禁止する。選別・統合・降格は全検査完了後にまとめて行う
- 型D の追検査: 発見した finding ごとに、対応する検証機構への VT 系検査を追加実施する
分割実行モード(推奨)
1エージェントに全検査を割り当てると、1検査あたりの実施量(復号する領域数・列挙する要素数・検算するペア数)が減少する。成果物が数種類を超える対象では、検査ファミリ単位でスコープを分割して実行する:
- オーケストレータが主張の棚卸し(手順1)だけを行い、主張リストとマトリクスの雛形を作る
- 検査ファミリごとに独立エージェントを起動し、そのファミリの検査だけを担当させる: ①EX(外部実在・実行) ②NU(全域復号・再計算) ③XA(クロス整合・資源算術・責務) ④CP+DR(感度・表面差分) ⑤VT(検証機構・テスト期待値)。各エージェントへの指示には次を全て含め、区切り(見出しまたはXMLタグ)で分離して渡す: 担当検査の手順と合格基準 / 主張リスト / 「担当外の検査を実施しない」 / 「あなたの任務は網羅であり選別ではない。確信度・重大度が低い finding も確信度を付けて全件報告する。選別は統合段階が行う」
- オーケストレータが結果をマージし、型D追検査と重大度判定・重複統合・低確信度 finding の採否を行う。合格セルの証拠が欠けていれば未実施に降格させる
重大度
| 重大度 | 基準 |
|---|---|
| Critical | 型0、または型D(検証機構への信頼全体を毀損) |
| High | 中核の能力主張(S3)を無効化する型A/B |
| Medium | 周辺主張の型A/B/C |
| Low | 型E、および実害が運用で回避可能なもの |
出力フォーマット
# Falsehood Audit: <対象>
## カバレッジマトリクス
| 主張(Sクラス) | 適用検査 | 結果(合格/finding/N-A/未実施+理由) |
## Findings
| ID | 検査 | 型 | 重大度 | 確信度 | ラベル | 内容 | 再現手順 |
## 合格項目(根拠つき)
| 主張 | 検査 | 実施した入力・コマンド | 観測結果 |
## 未実施・未検証
<何が・なぜ。合格に数えない>
「虚偽ゼロ」と報告してよいのは、マトリクスの全セルが 合格 / N/A で埋まった場合のみ。未実施セルが残る限り、結論は「実施範囲では検出なし」。
アンチパターン
| パターン | なぜ失格 |
|---|---|
| テスト全パス・CI green を根拠に合格判定 | 内部整合はトートロジー |
| 実行報告の伝聞を追実行せず採用 | 未検証 のままの断言 |
| encode したコードで decode して「一致」 | NU-1 違反。同一実装の往復は検査ではない |
| 主張されたフィールドだけ照合して生成物を合格 | NU-1 違反。未主張領域が監査から漏れる |
| 能力主張を実装・設定から逆算して棚卸し | 実装されていない能力が主張リストから消える |
| 単項チェックの validator を XA 系の証拠と誤読 | 相互矛盾はフィールド存在チェックを素通りする |
| 列挙表を作らず一部の操作可能要素のみ感度検査 | CP-1 の手順違反。検査した要素の選択基準が記録されず、未実施セルが消える |
| 証拠のない合格セル | 合格の捏造。finding と同じ証拠水準を要求する |
| マトリクスの未実施セルを記載せず省略 | 「実施範囲では検出なし」が「虚偽ゼロ」として読まれる。監査自体の VT-2 違反 |
| 構文チェックのみで「動作確認済み」と報告 | 監査レポート自体が型D になる |
| 低確信度・低重大度の finding を報告せず破棄 | 発見段階の任務は網羅。選別は統合段階の責務であり、無言の破棄は検出漏れと区別できない |
| 変異でテストが失敗することを「テストが正しさを検証している」の証拠にする | VT-1 が確認するのは失敗可能性のみ。期待値が実装由来なら、誤った振る舞いを忠実に検証するテストも変異で失敗する。正しさの検証は VT-4 の期待値出所で判定する |