テスト通過、契約は破綻
- •エージェント証拠分類器は366件のテストに合格したが、契約は矛盾するTTL期限切れ行を許した
- •最初の修正はノート文字列照合を`source_consult`に置き換えたが、EnumがTTL証拠より優先された
- •3番目の契約は丸め後の`decision_timestamp > grant_expires_at`と`nan`失敗を使った
DEVの著者がSelf-Correcting Systemsとして、2026年8月24日に、エージェント権限の証拠分類器が366件のテストに合格した一方で、契約がなお矛盾を許していたと述べた。欠陥は、エージェントが権限付与に基づいて行動できるかを判定するゲートにあった。6月のレビュアーANP2が派生した結論の保存を避けるよう警告した後、システムは前後の生スナップショットを保存していたが、下流の分類器は信頼性の低いフィールドから証拠を推論していた。
元の分類器`claim_24/mandate_cell7.py`は、2つのケースを別々に扱っていた。`REFUSED_UNREACHABLE`では構造化された`event.decision`フィールドを読んだが、`BLOCK`では人間が読む`event.notes`文字列から「ttl expired」という語を探し、`TTL_EXPIRED`または`BLOCKED_CONTROL`を返した。著者は、構造化された値が変わらなくても、ノートの名前変更だけで証拠分類が変わり得たと説明した。
最初の修正は、必須の型付きフィールド`source_consult`を追加した。値には`CONSULTED`、`UNREACHABLE`、`SKIPPED_NO_GRANT`、`SKIPPED_TTL_EXPIRED`、`SKIPPED_TIMESTAMP_ONLY`が含まれた。凍結契約`9f3dda8c`は、`source_consult == SKIPPED_TTL_EXPIRED`の`BLOCK`イベントは`TTL_EXPIRED`を返し、それ以外の`BLOCK`は`BLOCKED_CONTROL`を返し、`event.notes`を読んではならないと定めた。実装後、ノート名の変更は結果を変えなくなり、366件のテストが通過した。
ファイルアクセスのないレビュアーはその後、`SKIPPED_TTL_EXPIRED`が真である証明は何かと問うた。攻撃行は`source_consult = SKIPPED_TTL_EXPIRED`、`ttl_remaining_hours = +17.4`、`decision = BLOCK`を使い、分類器は`TTL_EXPIRED`を返した。同じ行が、権限付与には17.4時間残っていると示していたにもかかわらずである。著者は、R3がEnumに判断させ、`ttl_remaining_hours`は必ず検証するものではなく補強し得るものだとしていたため、実装はR3に正しく従っていたと述べた。
2番目の修正は`c686518a`として凍結され、事実を主張する証拠クラスは、その事実を表すフィールドと一致しなければならないとした。これにより、`SKIPPED_TTL_EXPIRED`を持つ`+17.4`の攻撃は`INVALID_FOR_CELL_7`になった。一方で、本当に期限切れの権限付与は分類され、ノートは依然として分類に影響できなかった。その後、さらに4行が矛盾を露呈した。`grant_id = None`の`SKIPPED_TTL_EXPIRED`が含まれ、期限切れになり得る権限付与が存在しないにもかかわらず、なお`TTL_EXPIRED`を返していた。
別の失敗は丸めから生じた。ゲートは`ttl_remaining_hours = round(seconds / 3600, 2)`を保存し、表示値は1時間の小数第2位、つまり36秒単位になっていた。期限を1秒過ぎた権限付与は`-0.0`として保存され、Pythonは`-0.0 >= 0`を`True`と評価するため、約18秒未満だけ期限切れになったすべての権限付与が誤読された。不正な値でも失敗した。`float("nan") >= 0`は`False`であるため、`ttl_remaining_hours = nan`は有限性チェックなしにガードをすり抜け、`TTL_EXPIRED`を返した。
3番目の契約`83afebd8`は、期限切れ判断の権限を、丸められた表示フィールド`ttl_remaining_hours`から直接比較へ移した。条件は`decision_timestamp > grant_expires_at`で、`grant_expires_at`は権限付与の発行時刻と有効期間から丸めなしで導かれる。著者が報告したのは作成者側の機械的な再確認だけだった。矛盾行は無効化され、1秒の期限切れは分類され、`nan`と`±inf`は無効化され、正当な行はなお通過し、ノート名変更は何も変えなかった。著者は、独立した席が3番目の契約を攻撃していないため、これは最終通過ではないと述べた。
示された教訓は、テスト通過が文書への適合を示すだけで、文書の正しさを示すわけではないという点だった。著者は、実装の正しさ、仕様の正しさ、証拠の正しさを分け、2つの忠実な実装が失敗したのは、契約が派生ラベルを生または復元可能な証拠より優先させたためだと論じた。公開レシートには`4a2f3a4`、`9f3dda8c`、`9f5fb47d`、`c686518a`、`e6409cbd`、`83afebd8`などのハッシュと場所が記載され、5件の凍結記録は公開され、`shasum -a 256`でハッシュ確認できると説明された。