エビデンス — Forge が自らを測定した記録
「証拠を示せ」と強制するハーネスは、まず自分自身の証拠を負う。本ページはその記録であり、 何を測り、何が返ってきたか、そして設計に反する結果が何を変えたかを示す。
すべての測定は、実行前に計画と採点基準をコミットしている。結果を事後に解釈し直せない ようにするためであり、コミットハッシュは信じるためではなく順序を検証するために残してある。
完全な報告書の所在
長文の報告書はドキュメント再構築の際に作業ツリーから削除されたが、git 履歴には残って
いる。git show ef2b051^:docs/measurements/<ファイル名> で読める。本ページは結果・
限界・それが引き起こした設計変更を保持する。
要約
| # | 問い | 結果 | 変わったこと |
|---|---|---|---|
| M1 | アンカーは実際のリファクタリングに耐えるか | 合格 — 偽陽性 0.61%、偽陰性 0%。残余は 0.00% まで解消 | パス+シンボルのアンカーとリネーム追跡、shifted/stale の分離 |
| Q1 | クレームストアはエージェントの罠回避に役立つか | ヌル — 両群とも 6/6 が回避 | クレーム散文の優先度を下げ、作成指針を書き直した |
| Q1b | 各クレームの知識は他にどこに存在するか | 13 件中 11 件に、読み手がどのみち出会う別の置き場があった | bootstrap レビュー票に restates: 行を追加 |
| Q1c | アンカーが覆えないものは何か | 18 件中 7 件がアンカーを動かさずに破れる | evidence: を「何がこの規則を強制するか」に格上げ。forge check が強制手段のないクレームを計上 |
| W1 | 陳腐化レポートは結果を変えるか | 強い否定 — ドリフト 3/3 は再スタンプのみ、修正 0 件 | forge drift がクレームの evidence テストを実行するようになった |
| W2 | 知識がストアにしかない場合は役立つか | ヌル — 再び 6/6 が回避 | Q1 を救うのではなく追認した |
主要な所見
M1 — アンカーは耐える。 3 リポジトリ・600 コミットの再生と、統制された摂動実験。再生 だけでは偽陽性率が出せなかったこと自体が所見である。600 コミット中、純粋なリネームも書式 のみの変更もゼロだった。これらの projects は formatter を常時走らせているため、設計が 最も恐れる 2 つの故障モードが単独コミットとして現れない。空の母集団から「偽陽性 0」と報告 するのは不誠実である。
Q1 — ストアは何も足さなかった。 1 つの罠、6 エージェント。ストアを指示された 3 名も、 コードだけを指示された 3 名も、全員が罠を回避した。理由は、その規則がそのリポジトリに既に 4 回書かれていたこと(規則表・レビューチェックリスト・仕様 2 件)であり、コード群の エージェントは誰に言われるでもなくそれらを見つけた。文書から導いたクレームは、その文書 と同じ読者を奪い合う。そして読者はたいてい文書のほうを見つける。
Q1c — アンカーには定義可能な死角がある。 クレームの主語が「アンカー地点のコード」で あるときに限り、アンカーはそのクレームを覆う。リポジトリ全体が従うべき規則には、そのような シンボルが存在しない。規則は「以前は無かった場所にコードが現れる」ことで破れるからである。
W1 — 最も重大な設計変更を生んだ否定的結果。 実ドリフト 3 件はすべて confirm による
再スタンプで処理され、コードもクレームも 0 行変わらず、防げた回帰は 0 だった。さら
に 18 件のクレームのうち、コミットのメタデータだけで判定できるものは 0 件。読まねば
行動できないレポートは再スタンプされる。そこで forge drift は、アンカーが陳腐化した際に
クレームが引用する evidence テストを実行し、良性の AST 変位と真の不変条件違反を自動
的な緑/赤の信号に変えるようになった。同時に bugfix ワークフローが追加され、この種の変更
は他の何よりも先に reproduce 成果物(落ちるテスト)を出さねばならず、そのテストがバグから
生まれたクレームの evidence: になる。Q1c の穴が規律ではなく構造で塞がれた。
訂正を残してある。 Q1b は当初 13 件中 10 件と報告し、
PIT-adapter-prefix-is-a-raw-string-prefix を「どこにも書かれていない」最良の孤立例と
呼んだ。これは誤りで、tests/test_requests.py:1705-1730 に issue #6935 向けの専用テストが
2 件存在する。隣接するテストを 1 つ読んで止めたことが原因であり、W2 の最中に発見して取り消し
線付きでその場に残した。
この記録が示していないこと
証拠のページが勝ちだけを並べるなら、それは広告である。
- クレームストアが結果を改善したことを示す測定は、ここに一つもない。 2 回走らせて 2 回 とも null。精査に耐えたのはアンカーであり、その価値は M1(機能する)と Q1c(死角が 定義できる)に支えられているのであって、結果研究に支えられているのではない。
- 標本数が小さい(n=6、n=6、n=3、クレーム 13 件と 18 件)。採点基準を固定した逸話であり、 機構が働くか壊れるかは示せても、率は示せない。
- 課題を設計した者が採点している。 これは否定的な結果を含め、上記すべてに掛かる限界で ある。