Define diagnostic lifecycle and retain same-worker continuation
This commit is contained in:
+50
@@ -0,0 +1,50 @@
|
||||
OPUS_STARTUP_LIFECYCLE_CLARIFICATION(P28-02-DIAG。base 8c06c3b44235a52f35898b1f6263e8ee064af256。OPUS_D2_SCOPE_CLARIFICATION の全文(S/K/C 層、observer、scratch、main の追加)はそのまま有効で、その上に起動から終了までの境界を確定する。原本の条件、SPEC、TASK_INSTRUCTIONS、baseline、製品の値は変更しない)
|
||||
|
||||
原則
|
||||
- SPEC §3.1 の「live を変えてよいのは fixture の導入と advance_minutes(1) だけ」は、測定の区間(段階③〜⑤)の禁止として扱う。測定の前の準備(段階①②)では、下に列挙した公開の呼出しだけを行ってよい。準備による状態の変化は、その全てを raw に記録する。準備の変化を、測定の副作用や測定時間として扱わない。
|
||||
- 列挙した呼出し以外に、製品の状態を変える呼出し、製品の値の変更、関数や hook の差し替えは行わない。
|
||||
|
||||
段階① autoload と fixture の準備(collector の measure_p28_01.gd:283-334 と同じ順序。同じ guard と private profile の bootstrap を使う)
|
||||
- 許可する呼出し:
|
||||
- GameClock.set_paused(true)
|
||||
- FileAccess で代表入力 R を開き get_var(false)(SHA eb4f7700… を照合)
|
||||
- SimulationRuntime.restore_snapshot(<R>)
|
||||
- 復元の後の GameClock.set_paused(true)
|
||||
- set_paused(true) は、実時間の _process による tick を止め、時間を手動の stepping だけで進めるための準備である(simulation_kernel.gd:104-121 で、止まった状態の advance_minutes は正当な手動の stepping として進む)。set_paused(true) は paused と _pause_request_serial を変えるので、その前後の K 層の値を記録する。
|
||||
- 記録: restore の戻り値、復元後の S 層の SHA、K 層、C 層。
|
||||
|
||||
段階② main の追加(headless)と、手動 stepping の制御
|
||||
- 許可する呼出し: main.tscn を instantiate して root に add_child する。その後 process_frame を2回 await する(focus の deferred 処理のため)。
|
||||
- main の _ready の副作用(save policy の設定、Ops の開始の試行。R では INVALID_START_TIME になる)は、そのまま記録する。
|
||||
- process_frame の間に kernel の _process が _skip_next_process を消費することがある(process_real_delta は skip を paused より先に確かめる)。これも準備の変化として記録する。
|
||||
- 禁止: _set_speed、_toggle_pause、set_paused(false)。clock は段階②から段階⑥まで、ずっと paused=true のままにする。
|
||||
- この段階の終わりに、baseline B0(S/K/C 層の SHA)を固定する。observer の接続はここで行い、接続の前後の get_connections() を記録する。
|
||||
|
||||
段階③ warm(30分)
|
||||
- GameClock.advance_minutes(1) を30回呼ぶ。1回ごとに process_frame を1回 await する(main の deferred 処理を、tick の区間の外に出すため)。
|
||||
- 各呼出しの前後で absolute_minute を照合し、進まなければ失敗にする。
|
||||
- observer の記録は warm の区間として取り、統計には入れない。
|
||||
- 終わりに baseline B1(S/K/C 層の SHA、absolute_minute=632、C 層の cache の状態)を固定する。C 層の規則 (a) は、ここで確かめる。
|
||||
|
||||
段階④ 測定(30分)
|
||||
- 段階③と同じ方法で30分を進める。I0〜I11 の inclusive の区間、observer の自分の費用、path_query_measured を記録する。
|
||||
- tick と tick の間の frame の wall(tick_completed から次の tick_started まで)は、別の欄に記録し、どの phase にも帰属させない。
|
||||
- この段階の中の、状態を変える呼出しは advance_minutes(1) だけ。
|
||||
|
||||
段階⑤ tick の外の S/K/C 検査と内訳の測定(clock は paused のまま)
|
||||
- 測定の前の S/K/C を記録する。そのあと、SPEC §3.3 の N=5 の計測と、使い捨ての scratch の操作を行う。測定の後の S/K/C が、測定の前と完全一致すること(C 層は D2 の規則 (b)(c))。
|
||||
- この段階では、時間を進めない。
|
||||
|
||||
段階⑥ 切断、解放、終了
|
||||
- observer を切断し、各 signal の接続が段階②の接続の前に戻ったことを確かめる。scratch の object を解放し、instance ID が無効になったことを確かめる。
|
||||
- 終了は collector の K1 と同じく get_root().close_requested.emit() で行い、audio の drain の結果を記録する。owned の cleanup は collector の run_private_engine と同じ。
|
||||
|
||||
3 PID の条件の一致
|
||||
- 3つの PID の間で、次のものが一致することを要求する: 入力の SHA、段階①の復元後の S 層の SHA、B0 と B1 の S 層の SHA、K 層(absolute_minute、paused、_pause_request_serial、_skip_next_process、snapshot_version、handler の集合)、C 層の状態、main の _ready の Ops の結果。
|
||||
- 一致しない項目があれば、その事実と値を記録して判断に戻す(3回の比較は成立しないものとして扱う)。時間の値(区間の wall)は、一致を要求せずに比べる。
|
||||
|
||||
worker の裁量(微小な確認ごとに止めないための指示)
|
||||
- 承認された範囲の中の通常の実装上の選択は、worker が判断して、その理由を BLOCKED.md ではなく実装の記録に残して進める。例: 関数の分け方、名前、report の構造、試験の合成データ、await の配置、記録の書式、上に列挙した許可済みの呼出しの使い方。
|
||||
- blocked にしてよいのは、原本の製品の仕様・数値・権限・課金・原本の受入に影響する未確定事項がある場合だけ。その場合は、具体的な箇所と、選択肢を示す。
|
||||
|
||||
その他(SPEC、TASK_INSTRUCTIONS、C1、両 validation、engine・製品変更・全回帰・commit の禁止、測れない項目を理由つきの未測定にすること)は、すべて従来どおり。
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"at_jst": "2026-10-21T06:05:56.265555+09:00",
|
||||
"project": "the-tree-p28-02-diag",
|
||||
"task": "P28-02-DIAG",
|
||||
"state": "implementing",
|
||||
"base": "8c06c3b44235a52f35898b1f6263e8ee064af256",
|
||||
"W": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p28-02-diag/P28-02-DIAG-implement",
|
||||
"S": null,
|
||||
"repairs": 2,
|
||||
"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": "finished",
|
||||
"pid": 51050,
|
||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-diag/runs/b8f62f42be4d4be6a2b38cbdcda8eca4",
|
||||
"started": 1792529753.966966,
|
||||
"finished": 1792529871.348223
|
||||
},
|
||||
{
|
||||
"id": "09ac15a935d249dab2b802780dacdb26",
|
||||
"role": "implementer",
|
||||
"service": "codex",
|
||||
"status": "running",
|
||||
"pid": 54232,
|
||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p28-02-diag/runs/09ac15a935d249dab2b802780dacdb26",
|
||||
"started": 1792530281.642758,
|
||||
"finished": null
|
||||
}
|
||||
],
|
||||
"actual_model": "gpt-6-astra",
|
||||
"root_exec_session": 70311,
|
||||
"actual_Opus_assignment": "Actual Desktop284 retains Astra: both returns were contract questions; same W continuation",
|
||||
"startup_clarification": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p28-02/STARTUP_LIFECYCLE_ACTUAL_OPUS_284.txt",
|
||||
"bytes": 5996,
|
||||
"sha256": "967aebf27ff412f7a16ce771ef7d68abf8cfde0bb76ed19cf6dbf2817ca7acc6"
|
||||
},
|
||||
"D2_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": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_DIAG_STARTUP_REPAIR_DECISION.json",
|
||||
"bytes": 1153,
|
||||
"sha256": "65bd5179a4d5ceb30740323892b322f046b36a52cc41dfe516b281e51c4b055c"
|
||||
},
|
||||
"actual_Opus_conditional_RUN": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/DESKTOP_DIAG_STARTUP_RUN_DECISION.json",
|
||||
"bytes": 2385,
|
||||
"sha256": "6ad2f4d2bcf6d893e178f029ac7d9ffbcac0e609aa21dd9aa29b216ad296f73e"
|
||||
},
|
||||
"normal_REPAIR_input": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/actual-desktop-STARTUP-REPAIR-input/RECORDED.json",
|
||||
"bytes": 2415,
|
||||
"sha256": "f4c2e71c7a80d7575a2694c89b28edf2ec828d2f4f36547def960f0790bc04e2"
|
||||
},
|
||||
"normal_RUN_input": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/actual-desktop-STARTUP-RUN-input/RECORDED.json",
|
||||
"bytes": 3633,
|
||||
"sha256": "d7b007ecc55bfe10da5088c138ab15138e36fd21451df0926dacd149e021b61f"
|
||||
},
|
||||
"actual_context_packet": {
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/diag-startup-owner-run-input/RUN_STARTED.json",
|
||||
"bytes": 920,
|
||||
"sha256": "2d596e3ed42dbaf3d50ec8014d6398cddbe6afbe59a720f7c227803a8f5d6bc6"
|
||||
},
|
||||
"prior_failure_manifests": [
|
||||
{
|
||||
"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"
|
||||
},
|
||||
{
|
||||
"path": "artifacts/original-completion-2026-10-02/p28-02-root-control-r01/diag-repair1-startup-return-b8f62f4-r01/MANIFEST.json",
|
||||
"bytes": 5718,
|
||||
"sha256": "fd384993bbc0bc9ec754251ef0096b541c959aa5294d06f9f17c4ca23318dbab"
|
||||
}
|
||||
],
|
||||
"registered_SPEC_TASK_baseline_unchanged": true,
|
||||
"all_normal_packet_fields_and_bytes_retained_plus_one_actual_Opus_context_key": true,
|
||||
"new_engine_runs": 0,
|
||||
"formal_validation_started": false,
|
||||
"original_credit": 0,
|
||||
"original_completed": 23,
|
||||
"original_total": 88,
|
||||
"packages_completed": 4,
|
||||
"packages_total": 30,
|
||||
"partial_credit": false,
|
||||
"next": "Follow this exact live run/PID/root exec70311. On exact S submit: read actual driver; Root isolated frozenS native import/parse/3PID; fullrawjoin/bundle; normal unit+nativeverify; freshOpus all4 review; normal prepare/candidate qualification/Root existing delegation approval/integration/final. Later OPT wholeunit required before any24th original credit."
|
||||
}
|
||||
Reference in New Issue
Block a user