Define P28-02 passive diagnostics and equivalence acceptance sequence

This commit is contained in:
Codex
2026-10-21 05:42:36 +09:00
parent 413c8e3e51
commit 8c06c3b442
5 changed files with 349 additions and 0 deletions
@@ -0,0 +1,30 @@
# P28-02-DIAG worker 指示(段階A。P28-02-OPT の指示は、DIAG の後に別に作る)
仕様は同じディレクトリの `SPEC.md` です。この指示と仕様は変更しないでください。
- 作るもの(allowed_paths `docs/plans/original-completion-2026-10-02/execution/p28-02/diag/**` の中だけ):
- `diag_p28_02.py`: Root が実行する driver です。統合済みの collector を読取専用で import します。import の閉包は、P28-01-RESTART の CLARIFICATION_02 D1 と同じ6ファイルと、自分の allowed_paths の中のファイルだけです。
- `diag_probe.gd`: SPEC §3 の probe です。
- `check_diag.py`: report の checker です。
- `verify_diag.py`: `--project-root .` で、`$BUILD_OUTPUT_DIR/p28-02-diag-evidence` にある実際の bundle(Root が作る)を結合します。bundle が無ければ失敗します。
- `test_diag.py`: engine を使わない unittest です。
- probe で必ず守ること(SPEC §3.1〜§3.3):
- live の状態を変えてよいのは、fixture の導入と `advance_minutes(1)` だけです。hook や関数の差し替えは禁止です。
- 区間は tick の ID で結びつけた inclusive の wall 区間 I0〜I11 として記録し、純粋な handler の時間とは呼びません。observer の費用は別に記録し、差し引きません。
- 経路は `path_query_measured` の件数と時間だけを記録し、connector の費用とは呼びません。
- tick の外の内訳は、N=5 の独立した inclusive の計測です。合算して100%にしません。restore・save・load・validator は、使い捨ての scratch でだけ行います。作れない場合は、理由つきの未測定にします。
- 前後で live の全状態の `var_to_bytes` が一致すること、参照の漏れが無いことを確かめます。
- 正当に測れた 0 と、欠損による null を区別します。
- checker・verify・試験が拒否するもの:
- 状態を変える呼出し、hook の差し替え(静的に検査する)
- phase を分で誤って区切ること
- inclusive の値を排他的な内訳として合算すること
- query の時間を connector の費用と呼ぶこと
- 欠損を 0 で補うこと
- 前後の状態の不一致
- scratch からの参照の漏れ
- PID、raw、source map の不一致
- bundle の欠落
- しないこと: 製品の変更、engine の起動、全回帰、commit。
- 提出前に、engine を使わない `python3 test_diag.py` を局所で実行して全件 PASS を確かめ、生出力を報告します。一時ディレクトリは `BUILD_OUTPUT_DIR` か `tempfile.gettempdir()` の下に作ります。
- 承認された範囲の中の通常の実装上の選択は、worker の判断でかまいません。決めきれない不足は、具体的な箇所を示した場合に限り blocked にします。