docs: audit P24 packet proposal against exact blobs and malformed inputs

This commit is contained in:
Takeshi
2026-10-13 08:58:51 +09:00
parent 570f686e45
commit 6a7c032a4d
3 changed files with 42 additions and 0 deletions
@@ -16,3 +16,7 @@ P13支援RP13-01は最終1398aa2dでも配置依存と負例fixture不良が残
## 完了手順
承認済み範囲の実装者1名、関連変更をまとめて局所/影響試験、正確な最終版の必須Runner試験、独立レビュー。P24 exact packet容量を再確認し、同4cefcffの正式独立レビューと統合候補検証へ進む。統合で証拠適用性が変わる場合だけ影響検証を追加する。全条件/独立review/統合証拠が揃うまでP24-03を完了にしない。Windows最終配布版の受入は別途未達。
## 実装前の有限再監査
prospective-guards-audit.jsonで、保存済みcontext14フィールドを正確なbase/candidateのGit bytesから再計算して全一致、172行の不変rawと受入focus4行を確認。追加の2不正入力では、prototypeが未知schema_version=999とNaNを受理した。現ゲーム候補に不正があったという証拠ではなく、未設置prototypeの検証不足である。既存の『未知形式・不一致は失敗』を満たすため、本番実装はbase/candidateのschema_versionが厳密な整数1であることと、JSONのNaN/Infinity/-Infinity拒否を先に検査する。対応する正例・負例を同一最終版で検証する。原7条件・30/88・500000上限・情報保持要件は変更しない。
@@ -11,3 +11,7 @@ prototypeの8局所検証は通過しました。実候補に対するcontext例
提案する追加範囲はRunnerのrunner/core.pyのpacket生成とtests/test_runner.pyの対応検証です。ゲームタスクのallowed_pathsには含まれません。AGENTS.mdの「タスク契約の allowed_paths 外を変更しない。追加変更は提案として返す。」に従い、本体変更は承認まで行いません。状態DB/ポリシー/承認の直接編集、上限/予算/権限拡大、重複ゲーム実装はありません。
正式validate通過後の全packet事前測定を追加しました。contract/allocation/validation_sources/実passed validation receipt1件を含む現方式600,714bytesに対し、この候補contextへ置き換えた案は430,008bytes、従来500,000bytes上限の余裕69,992bytesです。exact-review-packet-preflight.jsonに記録しています。Runner関数/DBを書き換えず、readonlyデータから現在のpacketフィールドを再構成して測定したものです。実装・正式review・受入が通過したという結果ではありません。
## 実装前の有限再監査
prospective-guards-audit.jsonで、保存済みcontext14フィールドを正確なbase/candidateのGit bytesから再計算して全一致、172行の不変rawと受入focus4行を確認。追加の2不正入力では、prototypeが未知schema_version=999とNaNを受理した。現ゲーム候補に不正があったという証拠ではなく、未設置prototypeの検証不足である。既存の『未知形式・不一致は失敗』を満たすため、本番実装はbase/candidateのschema_versionが厳密な整数1であることと、JSONのNaN/Infinity/-Infinity拒否を先に検査する。対応する正例・負例を同一最終版で検証する。原7条件・30/88・500000上限・情報保持要件は変更しない。
@@ -0,0 +1,34 @@
{
"scope": "Read-only pre-implementation review; no Runner installation or formal acceptance",
"prototype_raw_sha256": "f436dd4004641ba1bf1338c23f97fc95b5b0e9e5776373b0d9162352d43e6f13",
"saved_context_exact_git_recomputation_matches": true,
"compared_context_fields": 14,
"actual_base_raw_sha256": "5cebdfdffeca26c7778c8be916877b06ae6e42999272d73d01ea66e644a9d648",
"actual_candidate_raw_sha256": "3c72cad4dded0619d0cf1c9691b590258ea657d79e482910bde8b0bbeed73e03",
"focused_rows": [
"tests/ui/test_actor_selection.gd",
"tests/ui/test_selection_autosave.gd",
"tests/ui/test_selection_departure.gd",
"tests/ui/test_selection_lifecycle.gd"
],
"unchanged_raw_rows": 172,
"probes": [
{
"case": "unsupported_candidate_schema_version",
"prototype_rejected": false,
"installed_runner_mutated": false,
"interpretation": "Prospective fail-closed guard must be implemented and tested before adoption; this is not a game candidate defect."
},
{
"case": "nonfinite_candidate_metadata",
"prototype_rejected": false,
"installed_runner_mutated": false,
"interpretation": "Prospective fail-closed guard must be implemented and tested before adoption; this is not a game candidate defect."
}
],
"required_before_live_implementation": [
"Require the exact supported marker schema version 1 before omitting any row; unsupported/missing version fails closed.",
"Reject nonfinite JSON values (NaN, Infinity, -Infinity) in base and candidate before constructing authenticated context.",
"Keep all prior raw-row/base/candidate/metadata/diff/code/validation preservation conditions."
]
}