Clarify diagnostic state guards and continue the retained P28-02 task
This commit is contained in:
+39
@@ -0,0 +1,39 @@
|
||||
OPUS_D2_SCOPE_CLARIFICATION(P28-02-DIAG。base 8c06c3b44235a52f35898b1f6263e8ee064af256 の SPEC §3.1・§3.3、D2 の「live の全状態」の境界を確定する。原本の条件、SPEC、TASK_INSTRUCTIONS、baseline は変更しない。TASK_INSTRUCTIONS の全指示は従来どおり守る)
|
||||
|
||||
この確定の位置づけ
|
||||
- 「全状態」を、製品が保存する状態(S 層)と、それに関わる、名前を挙げた有限の内部状態(K 層・C 層)の和として定める。対象を独自に除外することも、無差別な走査を足すこともしない。比較は、tick の外の各計測(snapshot の変換、scratch の restore・save・load・validator)の前と後で行う。
|
||||
- 製品の値や仕様の変更の承認ではない。診断の観測の副作用が無いことを確かめるための、比較の範囲の具体化である。
|
||||
|
||||
S 層: 製品が保存する状態(必須)
|
||||
- SimulationRuntime.create_snapshot() が返す Dictionary の全体を、var_to_bytes で完全一致させる(SimulationDigest だけでは不可)。
|
||||
- 差がある場合は、RESTART の修正8で確定した typed の正規表現(文字順の key、衝突は拒否、typeof・配列の順序・値を保つ)で path を特定して報告する。dict の列挙の順序だけの差も、path つきで記録する。
|
||||
|
||||
K 層: kernel の、保存されない内部状態(名前を挙げたものだけ。get() で受動的に読む)
|
||||
- GameClock: absolute_minute、speed、paused、snapshot_version、_accumulator(f64 の hex)、_skip_next_process、_pause_request_serial、_abort_current_tick_requested、_last_tick_advanced。
|
||||
- _phase_handlers: phase ごとの handler ID の集合を、文字で並べた一覧として比べる。Callable の同一性は比べない。
|
||||
- performance_budget: _sample_counts、_totals、_samples(metric ごとの配列)。tick の外の計測でこれらが変われば、失敗にする。
|
||||
- 前後で完全一致を要求する。
|
||||
|
||||
C 層: Runtime の内部キャッシュ(create_snapshot が書き換えうるもの。autoload/simulation_runtime.gd:134-136、:11183-11200)
|
||||
- _mvp_manifest_cache_generation、_mvp_manifest_cache_catalog の同一性(get_instance_id)、_mvp_manifest_cache の var_to_bytes。
|
||||
- 規則:
|
||||
- (a) 計測の前に cache が満たされていること(generation が現在の catalog の get_manifest_generation() と一致)を記録する。満たされていなければ、計測の外で create_snapshot() を1回呼んで満たし、その事実を記録する(cache が埋まったのは、計測より前の準備としてである)。
|
||||
- (b) 計測の区間の中で cache miss(generation か catalog の変化、または cache の bytes の変化)が起きたら、その計測の標本に cache_miss_in_sample=true を付けて記録する。値は捨てず、cache の再構築を含む inclusive の値として扱う。黙って除外したり、平均に混ぜて隠したりしない。
|
||||
- (c) 計測の後の C 層が、計測の前と完全一致すること。(b) の miss があった場合は、その後の cache が、現在の catalog から作った manifest と一致することを確かめる。古い値や他の値が残っていれば失敗にする。
|
||||
- これは、P28-02-OPT の E4(キャッシュの古さ)と E5(所有権)の診断側の前提である。create_snapshot() が cache の deep copy を返すことも記録する(:11185-11199)。
|
||||
|
||||
observer の副作用の検査(有限)
|
||||
- 診断が接続する signal(tick_started、tick_phase_started、tick_completed、path_query_measured)について、接続の前と、切断した後で、各 signal の get_connections() の件数と、接続先の object と method の一覧が一致すること(診断の分は除く)。
|
||||
- 診断で DomainEventStream に subscribe した場合は、unsubscribe の後に、subscriber の一覧が元に戻っていること。
|
||||
|
||||
scratch の参照の漏れの検査
|
||||
- scratch に渡すのは、live の snapshot の deep copy だけ。scratch の操作の後で、S 層・K 層・C 層が完全一致すること。scratch の Runtime や関連の object を解放した後に、それらの instance ID が is_instance_id_valid で無効になっていること。scratch の path は private user:// の下に限る。
|
||||
|
||||
起動の構成(未指定だった点の確定)
|
||||
- 代表入力 R は、collector の SPEC §4.3 と同じ順序で既定の autoload に復元し、main を追加する(headless)。こうすることで、同期の受け手(state_updated などに接続する main 側の処理)が、実際のゲームと同じように I11 の inclusive の区間に入る。保存の policy による autosave が区間の中で起きたら、事実として記録する。
|
||||
|
||||
対象の外(理由つき)
|
||||
- Object の参照や循環の無差別な走査、engine・描画・OS の状態、node の木の全体: 製品の永続状態でも、P28-02 の計測で変わりうる内部状態でもないため対象外とする。上の K 層・C 層・observer・scratch の検査で、診断の副作用は検出できる。
|
||||
|
||||
報告
|
||||
- 各計測の前後の S/K/C 層の SHA と一致の結果、cache の状態、observer の接続の件数、scratch の解放を、report に記録する。測れない項目は、理由つきの未測定にする(0 で補わない)。上記で決めきれない不足は、具体的な箇所を示した場合に限り blocked にする。
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"at_jst": "2026-10-21T05:57:42.235969+09:00",
|
||||
"project": "the-tree-p28-02-diag",
|
||||
"task": "P28-02-DIAG",
|
||||
"task_state": "implementing",
|
||||
"base": "8c06c3b44235a52f35898b1f6263e8ee064af256",
|
||||
"W": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-diag/P28-02-DIAG-implement",
|
||||
"repairs": 1,
|
||||
"S": null,
|
||||
"real_runs": [
|
||||
{
|
||||
"id": "0be902e004054787bbad4f34fd7d5ca4",
|
||||
"role": "implementer",
|
||||
"service": "codex",
|
||||
"status": "finished",
|
||||
"pid": 42489,
|
||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-diag/runs/0be902e004054787bbad4f34fd7d5ca4",
|
||||
"started": 1792529217.1272,
|
||||
"finished": 1792529389.367724
|
||||
},
|
||||
{
|
||||
"id": "b8f62f42be4d4be6a2b38cbdcda8eca4",
|
||||
"role": "implementer",
|
||||
"service": "codex",
|
||||
"status": "running",
|
||||
"pid": 51050,
|
||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-diag/runs/b8f62f42be4d4be6a2b38cbdcda8eca4",
|
||||
"started": 1792529753.966966,
|
||||
"finished": null
|
||||
}
|
||||
],
|
||||
"actual_argv_model": "gpt-6-astra",
|
||||
"root_exec_session": 6910,
|
||||
"first_scope_question_run_preserved_as_failure": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/diag-initial-D2-scope-return-0be902e-r01/MANIFEST.json",
|
||||
"bytes": 5736,
|
||||
"sha256": "00b4c5b56685da3cc0967abe2d1ef6404bde0fd0ccdab8b6e10cd41c73efd876"
|
||||
},
|
||||
"actual_Opus_scope_clarification": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/CLARIFICATION_D2_ACTUAL_OPUS_282.txt",
|
||||
"bytes": 5598,
|
||||
"sha256": "5775e7b512d9e90dbcfbcb181f5b64dc0fa8207e0947c0a4a6a5c9195565f9bd"
|
||||
},
|
||||
"actual_Opus_repair_decision": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_DIAG_D2_REPAIR_DECISION.json",
|
||||
"bytes": 1086,
|
||||
"sha256": "2fdbc51675c59325c1ae6723d08c7aa357e12451c624b6663835dfed44b5d2d9"
|
||||
},
|
||||
"actual_Opus_conditional_RUN_decision": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_DIAG_D2_RUN_DECISION.json",
|
||||
"bytes": 1943,
|
||||
"sha256": "63f201d597974e6afa8565c4c651161ce171e0301d87ced8104da918d2b9fc84"
|
||||
},
|
||||
"normal_actual_repair_record": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/actual-desktop-D2-REPAIR-input/RECORDED.json",
|
||||
"bytes": 2328,
|
||||
"sha256": "33bd222a78060bc2b089f58c36d1b7ace12fa6badb4e8101ce3b6512c138fee0"
|
||||
},
|
||||
"normal_actual_RUN_record": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/actual-desktop-D2-RUN-input/RECORDED.json",
|
||||
"bytes": 3183,
|
||||
"sha256": "adbde7aac89197d8bf6de6cc7e57749a0d2550c8d3f82c8e4fdf0a4142999238"
|
||||
},
|
||||
"normal_input_context": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/diag-D2-owner-run-input/RUN_STARTED.json",
|
||||
"bytes": 921,
|
||||
"sha256": "863eda41392fc63435b1ee41761966cfff9e45243047a9d3a1f9de7f25a14a52"
|
||||
},
|
||||
"original_packet_all_fields_and_text_retained_plus_one_actual_Opus_context_key": true,
|
||||
"registered_SPEC_TASK_baseline_unchanged": true,
|
||||
"engine_runs": 0,
|
||||
"formal_validation_started": false,
|
||||
"whole_original_unit_complete": false,
|
||||
"original_credit": 0,
|
||||
"original_completed": 23,
|
||||
"original_total": 88,
|
||||
"packages_completed": 4,
|
||||
"packages_total": 30,
|
||||
"partial_credit": false,
|
||||
"next": "Follow same DB run b8f62f42be4d4be6a2b38cbdcda8eca4/PID51050 and Root exec6910, do not restart on observation timeout. On S submit read real driver, Root frozenS native import/parse/3PID, fullraw join/bundle, formal unit+nativeverify, fresh separate Opus all4 review, normal prepare/exactQ qualifier/Root existing delegated approval/final. DIAG alone adds0; later OPT and whole P28-02 acceptance required."
|
||||
}
|
||||
Reference in New Issue
Block a user