Compare commits
60
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d2581afd26 | ||
|
|
059c2f743b | ||
|
|
26f60095bf | ||
|
|
93248f4d79 | ||
|
|
7f1920b329 | ||
|
|
447f77a13b | ||
|
|
6c13940cf4 | ||
|
|
9a26f9ab8c | ||
|
|
19fc3f50c7 | ||
|
|
49445d4a4d | ||
|
|
336a8cd0b3 | ||
|
|
56bf5a3e86 | ||
|
|
21b5d3a31a | ||
|
|
0b7727a66c | ||
|
|
55c29f1192 | ||
|
|
baa4f2d563 | ||
|
|
59a1385536 | ||
|
|
d9e4e9bd2f | ||
|
|
f6176d3f19 | ||
|
|
4c8a18aa75 | ||
|
|
03100beabe | ||
|
|
860136f709 | ||
|
|
e01e04c62d | ||
|
|
a2e739396b | ||
|
|
027861b765 | ||
|
|
a025d77684 | ||
|
|
7564423c85 | ||
|
|
d369d1c399 | ||
|
|
7e66b6c753 | ||
|
|
3c65c71494 | ||
|
|
f5f85ae08c | ||
|
|
11ee7b1a6e | ||
|
|
96c17719cc | ||
|
|
0172e523f7 | ||
|
|
5f9d7c49e8 | ||
|
|
fd643f55a2 | ||
|
|
4da2bb492b | ||
|
|
7fe58d83bb | ||
|
|
7297a4c050 | ||
|
|
ebc851c26e | ||
|
|
127f22fa1e | ||
|
|
dbf5cb8f1b | ||
|
|
f7e189c7e4 | ||
|
|
12f04d6e8b | ||
|
|
8d52b20d40 | ||
|
|
78dc82da07 | ||
|
|
47750010b8 | ||
|
|
7e2368f5c4 | ||
|
|
bf2d75c9b0 | ||
|
|
647196f4ca | ||
|
|
7dde98ccb7 | ||
|
|
31aa7706d2 | ||
|
|
4f3b42dfec | ||
|
|
1f0a2bcd53 | ||
|
|
0c5e0022f2 | ||
|
|
d01286360e | ||
|
|
4a17d0e0f5 | ||
|
|
8e3d79d5f2 | ||
|
|
c2b59f04f9 | ||
|
|
7dd450c64c |
@@ -7573,18 +7573,38 @@ func _execute_leave_facility_queue(command: SimulationCommand) -> CommandResult:
|
|||||||
return CommandResult.failed(CommandResult.Code.TRANSACTION_APPLY_FAILED, command.command_id, failure_message)
|
return CommandResult.failed(CommandResult.Code.TRANSACTION_APPLY_FAILED, command.command_id, failure_message)
|
||||||
return CommandResult.succeeded(command.command_id, {&"request_id": request_id, &"reason": &"GUEST_LEFT"})
|
return CommandResult.succeeded(command.command_id, {&"request_id": request_id, &"reason": &"GUEST_LEFT"})
|
||||||
|
|
||||||
func _execute_build_facility(command: SimulationCommand) -> CommandResult:
|
func preview_build_facility(definition_id: StringName, origin: Vector3i, rotation: int) -> Dictionary:
|
||||||
var operations_gate := _operations_construction_investment_gate(command.command_id)
|
var definition := definition_registry.get_facility(definition_id)
|
||||||
|
var failure := _build_facility_precheck(0, {&"definition_id": definition_id, &"origin": origin, &"rotation": rotation})
|
||||||
|
if failure != null and definition == null:
|
||||||
|
var code := String(failure.details.get(&"reason", CommandResult.Code.keys()[failure.code]))
|
||||||
|
return {&"can_build": false, &"error_codes": [code],
|
||||||
|
&"reasons": [{&"code": code, &"message": failure.message, &"cells": [], &"details": failure.details.duplicate(true)}],
|
||||||
|
&"cells": []}
|
||||||
|
var report: Dictionary = construction_service.validate_placement(definition, origin, rotation).to_dictionary()
|
||||||
|
if failure != null:
|
||||||
|
report[&"can_build"] = false
|
||||||
|
var code := String(failure.details.get(&"reason", CommandResult.Code.keys()[failure.code]))
|
||||||
|
var codes: Array = Array(report.get(&"error_codes", []))
|
||||||
|
var reasons: Array = Array(report.get(&"reasons", []))
|
||||||
|
codes.push_front(code)
|
||||||
|
reasons.push_front({&"code": code, &"message": failure.message, &"cells": [], &"details": failure.details.duplicate(true)})
|
||||||
|
report[&"error_codes"] = codes
|
||||||
|
report[&"reasons"] = reasons
|
||||||
|
return report
|
||||||
|
|
||||||
|
func _build_facility_precheck(command_id: int, payload: Dictionary) -> CommandResult:
|
||||||
|
var operations_gate := _operations_construction_investment_gate(command_id)
|
||||||
if operations_gate != null:
|
if operations_gate != null:
|
||||||
return operations_gate
|
return operations_gate
|
||||||
var definition_id := StringName(command.payload.get(&"definition_id", command.payload.get("definition_id", "")))
|
var definition_id := StringName(payload.get(&"definition_id", payload.get("definition_id", "")))
|
||||||
var definition := definition_registry.get_facility(definition_id)
|
var definition := definition_registry.get_facility(definition_id)
|
||||||
if definition == null:
|
if definition == null:
|
||||||
return CommandResult.failed(CommandResult.Code.NOT_FOUND, command.command_id, "Facility definition was not found.")
|
return CommandResult.failed(CommandResult.Code.NOT_FOUND, command_id, "Facility definition was not found.")
|
||||||
if _facility_definition_is_unsupported_vertical_proxy(definition):
|
if _facility_definition_is_unsupported_vertical_proxy(definition):
|
||||||
return CommandResult.failed(
|
return CommandResult.failed(
|
||||||
CommandResult.Code.VALIDATION_FAILED,
|
CommandResult.Code.VALIDATION_FAILED,
|
||||||
command.command_id,
|
command_id,
|
||||||
"Vertical infrastructure topology is not supported.",
|
"Vertical infrastructure topology is not supported.",
|
||||||
{
|
{
|
||||||
&"reason": FacilityInfrastructureProjector.REASON_UNSUPPORTED_VERTICAL_TOPOLOGY,
|
&"reason": FacilityInfrastructureProjector.REASON_UNSUPPORTED_VERTICAL_TOPOLOGY,
|
||||||
@@ -7592,18 +7612,28 @@ func _execute_build_facility(command: SimulationCommand) -> CommandResult:
|
|||||||
&"unchanged": true,
|
&"unchanged": true,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
var origin_value: Variant = _parse_world_cell(command.payload.get(&"origin", command.payload.get("origin", null)))
|
var origin_value: Variant = _parse_world_cell(payload.get(&"origin", payload.get("origin", null)))
|
||||||
if origin_value == null:
|
if origin_value == null:
|
||||||
return CommandResult.failed(CommandResult.Code.INVALID_PAYLOAD, command.command_id, "origin must be Vector3i or [x, y, layer].")
|
return CommandResult.failed(CommandResult.Code.INVALID_PAYLOAD, command_id, "origin must be Vector3i or [x, y, layer].")
|
||||||
var origin: Vector3i = origin_value
|
var origin: Vector3i = origin_value
|
||||||
if definition.id in [&"guest_stairs", &"service_stairs"] and not path_service.has_cell(origin + Vector3i(0, -1, 0)):
|
if definition.id in [&"guest_stairs", &"service_stairs"] and not path_service.has_cell(origin + Vector3i(0, -1, 0)):
|
||||||
return _staff_assignment_failure(command.command_id, &"STAIR_LANDING_MISSING", "先に階段の一つ下の階に通路を作ってください。")
|
return _staff_assignment_failure(command_id, &"STAIR_LANDING_MISSING", "先に階段の一つ下の階に通路を作ってください。")
|
||||||
for shaft: Dictionary in elevators.get_report()[&"shafts"]:
|
for shaft: Dictionary in elevators.get_report()[&"shafts"]:
|
||||||
if _elevator_touches_module(shaft, definition, origin) and _elevator_shaft_busy(shaft):
|
if _elevator_touches_module(shaft, definition, origin) and _elevator_shaft_busy(shaft):
|
||||||
return _staff_assignment_failure(command.command_id, &"ELEVATOR_BUSY", "Wait until the shaft is idle before extending it.")
|
return _staff_assignment_failure(command_id, &"ELEVATOR_BUSY", "Wait until the shaft is idle before extending it.")
|
||||||
var rotation := int(command.payload.get(&"rotation", command.payload.get("rotation", 0)))
|
var rotation := int(payload.get(&"rotation", payload.get("rotation", 0)))
|
||||||
if rotation not in definition.allowed_rotations:
|
if rotation not in definition.allowed_rotations:
|
||||||
return CommandResult.failed(CommandResult.Code.INVALID_PAYLOAD, command.command_id, "The selected rotation is not allowed.")
|
return CommandResult.failed(CommandResult.Code.INVALID_PAYLOAD, command_id, "The selected rotation is not allowed.")
|
||||||
|
return null
|
||||||
|
|
||||||
|
func _execute_build_facility(command: SimulationCommand) -> CommandResult:
|
||||||
|
var failure := _build_facility_precheck(command.command_id, command.payload)
|
||||||
|
if failure != null:
|
||||||
|
return failure
|
||||||
|
var definition_id := StringName(command.payload.get(&"definition_id", command.payload.get("definition_id", "")))
|
||||||
|
var definition := definition_registry.get_facility(definition_id)
|
||||||
|
var origin: Vector3i = _parse_world_cell(command.payload.get(&"origin", command.payload.get("origin", null)))
|
||||||
|
var rotation := int(command.payload.get(&"rotation", command.payload.get("rotation", 0)))
|
||||||
var result := construction_service.start_construction(
|
var result := construction_service.start_construction(
|
||||||
definition,
|
definition,
|
||||||
origin,
|
origin,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
## 現在の対象(2026-10-13・現版監査更新)
|
## 現在の対象(2026-10-13・現版監査更新)
|
||||||
|
|
||||||
2026-10-14 現在の閉鎖対象はP08-03。台帳は正式11/着手25/予定52で、今回の支援登録による加点は0。提出4775001の撤去表示・検証器修正を保持し、Opus 5.5の具体指示で既存案を再利用する共有Runtime支援P08-03-RTPREVIEWを6.1-solで実装中。支援は原88へ加点しない。旧R09は変更前の履歴証跡で、新版受入へ流用しない。関連修正を固め、正確な最終版で通常OS・全必須回帰・独立レビュー・統合を満たす。原30/88と部分点なしを維持し、未完了の条件を完了へ変更しない。容量整理済みで現在7.9GB空き。以下の過去の個別修正上限・容量削除承認待ちの記述は履歴であり、現在の停止理由ではない。
|
2026-10-15 P08-03を正式完了。原30パッケージ/88成果単位、部分点なし。台帳は正式12/着手25/予定51。実行版d369d1c・main統合版027861b。Root局所153・Godot構文313・native196+96・全176回帰20,488厳密チェック、連続通常OS writer21643(58要求)/別PID reader32505(4要求)の全5条件、独立Opus 5.5レビュー、Runner統合・最終確認が全PASS。1,330ソース・必須入力・engine・markerの一致を非改変の適用性記録で確認し、原証跡の記録先訂正も開示済み。軽微2指摘は別記。閉鎖証拠はexecution/p08-03/ACCEPTANCE_CLOSED_D369_027861B.json。終了済み試験プロファイル2,817ファイルのSHA・パス・mtime保持圧縮で実空き約1.79GB回収。Windows同一配布版実機受入と延期済みP23保持ジェスチャーは全体残件として維持。次の1件は実Opus5.5判断71ce1c9eでP23-03「生活の観察」を選定し、現版の表示・実状態対応/同需要動線比較/依存の監査に着手。新ワーカー・重複実装は未起動。
|
||||||
|
|
||||||
|
|
||||||
原30パッケージ/88成果、部分点なし。現在は正式10/着手24/予定54。P24-03は正式完了、MP-01-r02承認用資料は正式統合済みだが原88へ加点しない。P13-03既存最終修正は全7施設/84スロット/6分類が保全済み。P13/RP13の限定追加修正と正式host自己試験は直接許可待ちで、重複実装や無断上限変更をしない。
|
原30パッケージ/88成果、部分点なし。現在は正式10/着手24/予定54。P24-03は正式完了、MP-01-r02承認用資料は正式統合済みだが原88へ加点しない。P13-03既存最終修正は全7施設/84スロット/6分類が保全済み。P13/RP13の限定追加修正と正式host自己試験は直接許可待ちで、重複実装や無断上限変更をしない。
|
||||||
|
|||||||
@@ -3679,6 +3679,39 @@
|
|||||||
"path": "docs/spec/acceptance/P08-02.json",
|
"path": "docs/spec/acceptance/P08-02.json",
|
||||||
"scope": "new standalone mixed suite; native execution pending"
|
"scope": "new standalone mixed suite; native execution pending"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "tests/ui/test_p08_normal_placement_ops.gd",
|
||||||
|
"template": "P08 normal placement: <checks> checks, <failures> failures",
|
||||||
|
"required": true,
|
||||||
|
"fixed_check_count_used": false,
|
||||||
|
"source_sha256_at_schema_audit": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
|
||||||
|
"authority": {
|
||||||
|
"path": "docs/spec/acceptance/P08-03.json",
|
||||||
|
"scope": "normal placement; native and OS pending"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "tests/transport/test_runtime_build_preview.gd",
|
||||||
|
"template": "Runtime build preview: <checks> checks, <failures> failures",
|
||||||
|
"required": true,
|
||||||
|
"fixed_check_count_used": false,
|
||||||
|
"source_sha256_at_schema_audit": "c881b60bce7276047884303a6823da9abfaaf8c1e85dbc5f2c0ff13f0d742449",
|
||||||
|
"authority": {
|
||||||
|
"path": "docs/spec/acceptance/P08-03.json",
|
||||||
|
"scope": "normal placement; native and OS pending"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
,{
|
||||||
|
"test": "tests/ui/test_p23_life_observation.gd",
|
||||||
|
"template": "P23 life observation: <checks> checks, <failures> failures",
|
||||||
|
"required": true,
|
||||||
|
"fixed_check_count_used": false,
|
||||||
|
"source_sha256_at_schema_audit": "750254af7d4b8b00508e25d1ef744837d3a7d14ddebe12398e8014bf5e8c68e8",
|
||||||
|
"authority": {
|
||||||
|
"path": "docs/spec/acceptance/P23-03.json",
|
||||||
|
"scope": "component and read-only observation only; native unexecuted; whole unit blocked"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"unknown_roster_suite_policy": "refuse, explicitly review its source/schema before accepting",
|
"unknown_roster_suite_policy": "refuse, explicitly review its source/schema before accepting",
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import os
|
|||||||
import json
|
import json
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
sys.dont_write_bytecode = True
|
||||||
|
|
||||||
control = Path(os.environ['OWNER_RUNNER_CONTROL']).resolve()
|
control = Path(os.environ['OWNER_RUNNER_CONTROL']).resolve()
|
||||||
sys.path.insert(0, str(control))
|
sys.path.insert(0, str(control))
|
||||||
@@ -305,5 +306,29 @@ if os.environ.get('OWNER_P08_SEMANTIC_REFERENCE_REVIEW') == '7e2368f5':
|
|||||||
module.run(semantic_core)
|
module.run(semantic_core)
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
_runtime_support_verify = Runner.verify
|
||||||
|
def verify_exact_runtime_support(self, task_id, wt, sha, kind):
|
||||||
|
if self.config["project"] == "the-tree-p08-runtime-preview" and task_id == "P08-03-RTPREVIEW" and kind in ("integration", "final"):
|
||||||
|
import importlib.util
|
||||||
|
from runner.core import git, require
|
||||||
|
require(git(wt, "rev-parse", "HEAD") == sha, "exact support candidate")
|
||||||
|
path = Path("/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/runtime_support_proof.py")
|
||||||
|
spec = importlib.util.spec_from_file_location("owner_runtime_support_proof", path)
|
||||||
|
module = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(module)
|
||||||
|
result = module.bind_exact_candidate(Path(wt), Path(self.allocation(task_id)["build_dir"]))
|
||||||
|
self.event(task_id, "exact_native_source_applicability", {"commit": sha, "kind": kind, "executed_native_candidate": result["executed_native_candidate"], "new_native_runs": 0})
|
||||||
|
return _runtime_support_verify(self, task_id, wt, sha, kind)
|
||||||
|
Runner.verify = verify_exact_runtime_support
|
||||||
|
|
||||||
|
if os.environ.get("OWNER_P08_ACCEPTED_INPUT_SCOPE") == "7297a4c":
|
||||||
|
import importlib.util
|
||||||
|
import runner.core as accepted_scope_core
|
||||||
|
adapter = Path("/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/accepted_input_scope.py")
|
||||||
|
spec = importlib.util.spec_from_file_location("owner_accepted_input_scope", adapter)
|
||||||
|
module = importlib.util.module_from_spec(spec)
|
||||||
|
spec.loader.exec_module(module)
|
||||||
|
module.install(accepted_scope_core)
|
||||||
|
|
||||||
from runner.cli import main
|
from runner.cli import main
|
||||||
main()
|
main()
|
||||||
|
|||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"plan_id": "P08-03",
|
||||||
|
"state": "completed",
|
||||||
|
"unit_credit": 1,
|
||||||
|
"original_denominator": {
|
||||||
|
"packages": 30,
|
||||||
|
"delivery_units": 88,
|
||||||
|
"partial_credit": false
|
||||||
|
},
|
||||||
|
"executed_sha": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"integration_sha": "027861b765d55878eaf5b552600c407913dcc485",
|
||||||
|
"traceability": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-03-code/traceability/P08-03.json",
|
||||||
|
"sha256": "15e2de85ccb766662b48f2a0a91c99dcbc5605fc4a102d04666446b76b4459af",
|
||||||
|
"bytes": 8490
|
||||||
|
},
|
||||||
|
"acceptance": {
|
||||||
|
"support_connection": "PASS normal supported reception and lower/upper stairs; unsupported and missing landing refused",
|
||||||
|
"invalid_position_reason": "PASS displayed reason matches Runtime first refusal; full typed state preserved",
|
||||||
|
"demolish_rebuild": "PASS dependent-stair refusal, cancel, actual demolition material refund2 and same-cell rebuild",
|
||||||
|
"pan_zoom_world_identity": "PASS ordinary wheel pan, 0.5..4 zoom clamp, moved pixel selects same world cell and rebuilt instance",
|
||||||
|
"separate_pid_resume": "PASS writer21643 save then separate reader32505 normal load and same-cell overlap refusal"
|
||||||
|
},
|
||||||
|
"checks": {
|
||||||
|
"root_local": 153,
|
||||||
|
"godot_parse": 313,
|
||||||
|
"native_writer": 196,
|
||||||
|
"native_reader": 96,
|
||||||
|
"full_suites": 176,
|
||||||
|
"strict_checks": 20488,
|
||||||
|
"os_writer_requests": 58,
|
||||||
|
"os_reader_requests": 4
|
||||||
|
},
|
||||||
|
"independent_review": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/docs/plans/original-completion-2026-10-02/execution/p08-03/INDEPENDENT_REVIEW_D369D1C.json",
|
||||||
|
"sha256": "560050d8c031a9cfd6de3c458f9d97c9fb92d55248376b36571e75bc89a88435",
|
||||||
|
"bytes": 4591
|
||||||
|
},
|
||||||
|
"integration_final": [
|
||||||
|
{
|
||||||
|
"kind": "integration",
|
||||||
|
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/integration-applicability-027861b765d55878eaf5b552600c407913dcc485-integration.json",
|
||||||
|
"sha256": "77ccd947288846c833ad8e99fb95425e71887e368bd946771c375135fc97df3f",
|
||||||
|
"bytes": 1167995
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "final",
|
||||||
|
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/integration-applicability-027861b765d55878eaf5b552600c407913dcc485-final.json",
|
||||||
|
"sha256": "ac018685e43dd6e5a541b34c989c0a526f9bc640e47291e4803e8925305ed0e5",
|
||||||
|
"bytes": 1167989
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"provenance_correction": "Keep R19 writer-request-0001/recording-path-correction.json and all complete-cua-call-trace.json; old R18 overwritten image history not accepted.",
|
||||||
|
"limits": [
|
||||||
|
"diagnostic setup not natural gameplay",
|
||||||
|
"macOS evidence not Windows acceptance",
|
||||||
|
"nonblocking review findings separately deferred"
|
||||||
|
],
|
||||||
|
"closed_at_jst": "2026-10-15T07:34:36.288317+09:00"
|
||||||
|
}
|
||||||
+44
@@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"project": "the-tree-p08-03-code",
|
||||||
|
"task": "P08-03",
|
||||||
|
"boundary": "127f22fa1e4a74cf475b40399ec54e30a5732509",
|
||||||
|
"accepted_input_commit": "7297a4c050f0293df331c2c51bb32def248bcb6b",
|
||||||
|
"prior_submitted": "47750010b8694c72737f47078f925b2b2e22ce59",
|
||||||
|
"original_base": "12430ba89970bda349781e51157e72e48a4ac06f",
|
||||||
|
"contract_sha256": "f154d94fef21bd15497f94ac418b2ba5c504afb458fa616ffd13220e806d21e3",
|
||||||
|
"baseline_sha256": "5937be7670a3e8334c41d634f910c8187f57fbbc80827e8f2e8ab808d4428cbe",
|
||||||
|
"spec_sha256": "7941da4edbd3c43a636a4a3d834d57c095b56da988fa3a056e55b22d3a5d50e9",
|
||||||
|
"support_integration": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"support_trace": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/traceability/P08-03-RTPREVIEW.json",
|
||||||
|
"conflicts": [],
|
||||||
|
"inherited_noneditable_paths": [
|
||||||
|
"autoload/simulation_runtime.gd",
|
||||||
|
"docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/mana-proposal-continuation-r03/ADOPTION_DECISION_READINESS.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/owner_model_cli.py",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/p18_review_context.py",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/ALL_ARCHIVE_INTEGRITY_CHECK.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/CACHE_RETIREMENT.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/CLOSED_P08_CACHE_NONCACHE_CHECK.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/CONCURRENT_APPSTORE_DOWNLOAD.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/FINAL_CAPACITY_RESULT.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/INITIAL_ARTIFACT_INVENTORY.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/OTHER_STAGE_RETIREMENT.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/README.md",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/RECREATABLE_APP_CACHE_CLEANUP.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/RESTORATION_CHECK.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/STAGE_RETIREMENT.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/STORAGE_ANALYSIS.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/XCODE_DERIVED_CACHE_CLEANUP.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/restore_stage.py",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/retire_other_stages.py",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/storage-20261014/retire_p23_stages.py",
|
||||||
|
"docs/plans/original-completion-2026-10-02/plan_validation.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/progress_snapshot.json",
|
||||||
|
"docs/plans/original-completion-2026-10-02/work_packages.json",
|
||||||
|
"docs/spec/acceptance/P08-03-RTPREVIEW.json",
|
||||||
|
"tests/transport/test_runtime_build_preview.gd",
|
||||||
|
"tests/transport/test_runtime_build_preview.gd.uid"
|
||||||
|
],
|
||||||
|
"original_units_added": 0
|
||||||
|
}
|
||||||
+33
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"controls": {
|
||||||
|
"real_inherited_boundary": {
|
||||||
|
"passed": true,
|
||||||
|
"editable_paths_added": 0
|
||||||
|
},
|
||||||
|
"allowed_UI": {
|
||||||
|
"passed": true,
|
||||||
|
"paths": [
|
||||||
|
"scenes/main/main.gd"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"runtime_edit": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "scope_violation: autoload/simulation_runtime.gd"
|
||||||
|
},
|
||||||
|
"spec_edit": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "scope_violation: docs/spec/acceptance/P08-03.json"
|
||||||
|
},
|
||||||
|
"secret_edit": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "scope_violation: .env"
|
||||||
|
},
|
||||||
|
"inherited_runtime_drift": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "noneditable accepted input changed: autoload/simulation_runtime.gd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"synthetic_denial_inputs": true,
|
||||||
|
"source_files_modified": 0,
|
||||||
|
"contract_unchanged": true
|
||||||
|
}
|
||||||
@@ -0,0 +1,594 @@
|
|||||||
|
# P08-03 condition matrix — implementation submission, not acceptance
|
||||||
|
|
||||||
|
## Repair16 current submission
|
||||||
|
|
||||||
|
Root finalized deletion of the repair13 fixture omitted by the Runner submission.
|
||||||
|
No repair13 fixture remains in the net final diff. Repair14 observations below
|
||||||
|
are historical and superseded; they do not require a native re-run now.
|
||||||
|
|
||||||
|
Environment provenance: the P08_/THE_TREE_ subset is reconstructable and checked
|
||||||
|
by direct equality across started, process-started, ended and the pinned receipt.
|
||||||
|
The full-env environment_sha256 is opaque and checked only by cross-receipt and
|
||||||
|
pin equality; the original os.environ cannot be reconstructed. Receipt bytes and
|
||||||
|
SHA are pinned through the original index and ended receipt. Driver bytes at HEAD
|
||||||
|
and in the working tree must equal R09_COMMIT. Other applicability gates remain.
|
||||||
|
|
||||||
|
Net diff command (executed read-only):
|
||||||
|
`git diff --name-status --no-renames 31aa7706d28a92e313c432d5a62e35d19503dcc3 HEAD`
|
||||||
|
HEAD: **to be bound by Runner**. Output:
|
||||||
|
```text
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/REPAIR12_CONTEXT_GAP.md
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_NATIVE_R09_COLLECTION_PINS.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R09_COLLECTION_AND_PUBLICATION_DIAGNOSIS.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R09_READONLY_IMAGE_DIMENSIONS.json
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/implementation.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/repair13-local-source-manifest.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/repair13-local-validation.json
|
||||||
|
M tools/check_p08_normal_placement_evidence.py
|
||||||
|
M tools/test_p08_normal_placement_evidence.py
|
||||||
|
```
|
||||||
|
Only the two validators and scoped docs; no fixture, Godot, controller, recorder
|
||||||
|
or input changes. Repair16 retains the 107 existing tests and adds eight specific
|
||||||
|
negative controls and one driver-rule positive.
|
||||||
|
Repair16 local validation: `python3 tools/test_p08_normal_placement_evidence.py`
|
||||||
|
ran 116 tests in 80.606s: OK, exit0, no failures or skips. No native/OS/full run.
|
||||||
|
Current validator SHA-256:
|
||||||
|
- checker: 3b2aeb4f064e08e774997b4548dd966d994dc6a07a2ffb2e233b4c9d7aab24a4
|
||||||
|
- tests: 7814ee7a45934ef6929748423c18424478f2634d63dc4979fa056aef3798af4a
|
||||||
|
|
||||||
|
Executed native source commit: 31aa7706d28a92e313c432d5a62e35d19503dcc3.
|
||||||
|
Current candidate commit: **to be bound by Runner**.
|
||||||
|
Executed source/input/engine hashes are recorded separately in
|
||||||
|
implementation.json executed_native_binding; current validator_only_changes
|
||||||
|
never replaces the executed source map. Earlier repair history remains historical.
|
||||||
|
|
||||||
|
All five conditions remain: **Root native evidence collected at 31aa;
|
||||||
|
independent semantic acceptance pending; Root final full175 regression pending;
|
||||||
|
integration pending**. No acceptance or earlier PASS is inherited.
|
||||||
|
|
||||||
|
Strict reuse checks require the R09 ancestor, complete committed and working-tree
|
||||||
|
whitelists, exact inputs and non-whitelisted sources, R09 validator blobs and
|
||||||
|
SHA-pinned runner/OS receipts and engine bytes. The committed R09..HEAD diff
|
||||||
|
contains only validator and scoped documentation changes after Root finalized
|
||||||
|
the fixture deletion. The prior Repair14 fixture-addition finding is superseded.
|
||||||
|
No fixture inputs are excluded.
|
||||||
|
|
||||||
|
JPEG positives use only actual R09 capture bytes, compared to the SHA-pinned
|
||||||
|
original index, measurement, and original OS acknowledgements/role receipts.
|
||||||
|
The structural parser checks referenced DQT/DHT, SOF/SOS component identity,
|
||||||
|
non-empty entropy and EOI; synthetic JPEG data exists only in negative tests
|
||||||
|
inside the Python test module.
|
||||||
|
|
||||||
|
Open semantic findings: preview/runtime stair difference; coordinator runtime
|
||||||
|
acceptance=false; Windows same-distribution/device. Required remaining work:
|
||||||
|
Root R09 positive hash re-check;
|
||||||
|
Root final full175; independent Opus review of all five conditions;
|
||||||
|
integration/current final verification/ledger; Windows same-distribution/device
|
||||||
|
(no Mac substitution). The denominator30/88 and immutable spec are unchanged.
|
||||||
|
Repair counter14 is historical; repair/inference/material limits remain null.
|
||||||
|
|
||||||
|
Historical Repair14 local validation: python3 tools/test_p08_normal_placement_evidence.py:
|
||||||
|
107 tests in 84.026 seconds, exit0, no failures or skips. Two Python AST
|
||||||
|
checks and git diff --check passed. Earlier failed helper-renaming attempts
|
||||||
|
were corrected; no native, Godot, full regression or verify-only run occurred.
|
||||||
|
Focused final controls: 18 tests passed, including actual original capture
|
||||||
|
hashes. Root positive re-check remains required.
|
||||||
|
|
||||||
|
Historical Repair14 validator-only SHA-256:
|
||||||
|
- tools/check_p08_normal_placement_evidence.py: 301098ced37bf83bd580af8b0a73e32f776157737ec6a55513c8cb5f63cd10f6
|
||||||
|
- tools/test_p08_normal_placement_evidence.py: 24a6894d7e944f5819641adc1bf2ce7a2fba5b367f1005bbae83775060498283
|
||||||
|
|
||||||
|
## Repair13 historical status (superseded by Repair14)
|
||||||
|
|
||||||
|
Checker/test-only repair. Product, Runtime, Godot, collector, same31aa and rawR09
|
||||||
|
bytes are unchanged. Root supplied the read-only **post-collection** sips
|
||||||
|
measurement of 138 images; this is not capture-time metadata. All measured
|
||||||
|
screenshots are 1280×752 JPEG despite their .png names. Window content size
|
||||||
|
1280×720 is never used as screenshot dimensions.
|
||||||
|
|
||||||
|
The checker reads every image, checks SOI/EOI and bounded SOF0/SOF2 frame/scan
|
||||||
|
structure, and compares its dimensions and recomputed SHA against the Root
|
||||||
|
measurement and index. This is structural validation, not JPEG pixel decoding.
|
||||||
|
The measurement's original_index_sha256 binds the recomputed index. Exact
|
||||||
|
69-request/138-image membership and before/after dimensions are checked;
|
||||||
|
formal save thumbnails retain their separate existing member checks.
|
||||||
|
|
||||||
|
Collection pins bind the original index, runner receipts and both OS receipts;
|
||||||
|
every indexed original/canonical artifact must be byte-identical. Owner proof
|
||||||
|
is verified at ORIGINAL_ROOT/os-runs/{writer,reader}/teardown/control.json,
|
||||||
|
retaining original absolute varbytes pins without rewriting them.
|
||||||
|
|
||||||
|
Reuse is restricted to same31aa (`31aa7706d28a92e313c432d5a62e35d19503dcc3`):
|
||||||
|
all collected source/input hashes still match, except the two explicitly
|
||||||
|
changed Python validator/test sources and the new synthetic Python image
|
||||||
|
fixture. The old validator/test pins are checked against same31aa git objects;
|
||||||
|
product, GDScript fixtures, engine, recorder, controller and marker pins remain
|
||||||
|
exact. This exception does not confer gameplay or changed-product acceptance.
|
||||||
|
|
||||||
|
Current local Python results and final executed hashes are in
|
||||||
|
`repair13-local-validation.json`, `repair13-local-source-manifest.json` and
|
||||||
|
`implementation.json`. All 88 previous tests remain; 12 additional controls
|
||||||
|
cover baseline/progressive parsing, malformed/truncated/non-JPEG bytes,
|
||||||
|
SOF/measurement disagreement, before/after drift, missing/extra/duplicate
|
||||||
|
entries, extra indexed screenshots, source SHA, stale index, collection pin
|
||||||
|
and original/canonical divergence. Synthetic fixtures have no dependency on
|
||||||
|
operational Root handoff documents.
|
||||||
|
|
||||||
|
All five conditions remain unaccepted. R09 local integrity validation is not
|
||||||
|
the independent R09 re-check. Leave open: stair preview/domain-status
|
||||||
|
disagreement for independent acceptance, Windows same-distribution/device,
|
||||||
|
Root final175 after frozen submission, R09 re-check, independent Opus review,
|
||||||
|
and integration/current verification/ledger. No OS steps were replayed.
|
||||||
|
|
||||||
|
Immutable specification: `docs/spec/acceptance/P08-03.json`, normalized SHA-256
|
||||||
|
`7941da4edbd3c43a636a4a3d834d57c095b56da988fa3a056e55b22d3a5d50e9`.
|
||||||
|
Base HEAD: `12430ba89970bda349781e51157e72e48a4ac06f`. Worker made no commit.
|
||||||
|
This is one existing unit in 30 packages / 88 units, with no partial credit.
|
||||||
|
|
||||||
|
| Condition | Implemented paths / diagnostic cases | Current evidence state |
|
||||||
|
|---|---|---|
|
||||||
|
| support_connection | Normal palette: unsupported standard room; supported/connected reception; supported stair with missing landing; lower/upper stair construction. Real preview and Runtime command results are retained. | Source and synthetic checker controls only; real handler/native/OS pending. |
|
||||||
|
| invalid_position_reason | Reception footprint crosses the boundary from an in-bounds origin; existing reception overlap. Exact displayed Japanese reason and report codes; whole typed before/after preservation. | Source and semantic corruption controls only; actual refusals pending. |
|
||||||
|
| demolish_rebuild | Palette demolition toggle, cell selection, confirmation/cancel, Runtime `demolish_facility`, synchronous/queued results. Lower landing refusal, cancellation, reception removal, same-cell reconstruction. Occupancy, operational/construction instances, costs/refund checked. | Implemented; Godot parsing, actual UI, audio ownership, Runtime results pending. |
|
||||||
|
| pan_zoom_world_identity | Move mode + non-Ctrl wheel; normal wheel zoom, 0.5/4.0 clamps; recomputed local/viewport/screen coordinates and actual selected cell. OS recorder requests CUA only. | Mock bridge/checker controls only; actual OS wheel/screenshot provenance pending. |
|
||||||
|
| separate_pid_resume | Formal four-member save; separate native writer/reader; normal load menu; whole typed/raw presave/formal identity and source-defined post-operation reconstruction, instance ID, cell and overlap judgement. | R02 diagnosed notification difference; repaired candidate requires fresh native/OS collection. |
|
||||||
|
|
||||||
|
## Original-matched diagnostic choices
|
||||||
|
|
||||||
|
`BASELINE.txt` §9.3 names reception/checkout in the lobby; current
|
||||||
|
`data/facilities/reception.tres` is FRONT 4×2, cost read directly from the
|
||||||
|
definition. §10.1 explicitly gives standard room 2×1 FRONT; current
|
||||||
|
`standard_room.tres` matches and is used for unsupported-placement rejection.
|
||||||
|
§8.4 names stairs; current `infrastructure/guest_stairs.tres` and
|
||||||
|
`tests/transport/test_runtime_stairs.gd` expose ordinary two-floor stair
|
||||||
|
construction and `STAIR_LANDING_MISSING` / `STAIR_LANDING_IN_USE`.
|
||||||
|
All three IDs are in Main's existing normal palette and Runtime registry.
|
||||||
|
These choices establish this diagnostic slice, never all30 acceptance.
|
||||||
|
|
||||||
|
The handler fixture computes any diagnostic resource top-up from the four
|
||||||
|
planned positive construction definitions. It emits an initial formal save
|
||||||
|
and a budget report explicitly tagged diagnostic. No production costs,
|
||||||
|
services, balance values or definitions are changed. New art is unnecessary;
|
||||||
|
the demolition button reuses Main's existing styling and audio.
|
||||||
|
|
||||||
|
## r01 fixture repair (retained earlier submission)
|
||||||
|
|
||||||
|
The only failure authorities used are `NATIVE_R01_FAILURE_AND_SCOPE.json`
|
||||||
|
and `native-r01-writer-stderr.log`. The r01 writer failed 13 expectations;
|
||||||
|
its full SaveService return Dictionaries were not captured and remain absent.
|
||||||
|
No past Dictionary was reconstructed and no historical raw evidence was edited.
|
||||||
|
|
||||||
|
The handler now changes a toggle button's pressed state, emitting the real
|
||||||
|
production `toggled` connection before `pressed`. Repeated `choose(id)` leaves
|
||||||
|
an already selected ID active. Production wiring is unchanged.
|
||||||
|
Initial and normal saves use private `user://saves/p08_initial` and
|
||||||
|
`user://saves/manual_ui`; separate handler readers SHA-copy the exported input
|
||||||
|
into their own private profile before normal-menu load. The initial diagnostic
|
||||||
|
package seeds the normal slot, so the actual normal save creates its backup.
|
||||||
|
Exports retain all four members, the backup, and verbatim manifest slot
|
||||||
|
metadata with SHA/byte lengths and actual paths. An absent initial backup is
|
||||||
|
explicitly recorded. Every observed Runtime save/load result and direct
|
||||||
|
SaveService diagnostic return is recorded as typed JSON and SHA-pinned raw
|
||||||
|
Variant, with PID, requested/absolute paths and user-data directory.
|
||||||
|
|
||||||
|
The earlier 35 local checker tests remain synthetic controls. Their negative cases
|
||||||
|
also cover missing backup members, slot metadata SHA, failed actual returns,
|
||||||
|
and saves outside private profiles. The mock collector supplies a controlled
|
||||||
|
disk-space input; the production disk-admission gate is unchanged.
|
||||||
|
Current native/OS/full regression/review/integration remain pending.
|
||||||
|
|
||||||
|
## r02 whole-model operation repair (retained earlier submission)
|
||||||
|
|
||||||
|
The retained submitted HEAD is `c2b59f04f94dda0a61991ec3bb7f0e946196f995`.
|
||||||
|
`NATIVE_R02_READER_OPERATION_DELTA.json` and `native-r02-reader-stderr.log`
|
||||||
|
are supplied historical evidence: reader PID 58430 failed the old whole
|
||||||
|
postsave/postload equality assertion. Their observed 161/162 counts are
|
||||||
|
diagnostic observations, never constants in the checker or scenario.
|
||||||
|
|
||||||
|
The fixture captures the complete writer model immediately before the normal
|
||||||
|
save, leaves `writer-checkpoint.var` as the complete postsave snapshot, and
|
||||||
|
uses `SaveService.inspect_snapshot` to decode the formal world read-only.
|
||||||
|
Both writer and reader retain inspection returned Dictionaries and complete
|
||||||
|
typed/raw formal models. The presave and formal models must match in full;
|
||||||
|
the reader formal model must match the writer formal model in full.
|
||||||
|
|
||||||
|
For each role, the expected complete model starts from that formal model.
|
||||||
|
Only one `source_defined_notification` is constructed using Runtime lines
|
||||||
|
4680–4720, `StableIdGenerator.next_id`, `SimulationDomainEvent.to_dictionary`
|
||||||
|
and `DomainEventStream.publish/create_snapshot`. The payload is recomputed
|
||||||
|
from the actual returned Dictionary, including optional selected/manifest
|
||||||
|
fields and all timing fields. Event envelope, next ID, counter increment,
|
||||||
|
sorted published IDs, existing history and the source's recent-event limit
|
||||||
|
are derived independently. No fields or Runtime effects are removed,
|
||||||
|
normalized away or copied from the observed notification as an expectation.
|
||||||
|
The complete typed expectation and raw expected Variant must match the
|
||||||
|
complete postsave/postload checkpoint. Read-only inspection must also leave
|
||||||
|
the whole live model unchanged.
|
||||||
|
|
||||||
|
Each role exports `*-expected-operation`, `*-operation-actual` and
|
||||||
|
`*-operation-comparison.json` alongside unchanged-format raw checkpoints,
|
||||||
|
formal models and returned-result records. On unknown drift, these complete
|
||||||
|
raw inputs remain and the checker reports the precise typed difference paths.
|
||||||
|
No new native difference was observed by this worker; fresh native execution
|
||||||
|
is pending, so the supplied R02 trace is not a PASS for these changed sources.
|
||||||
|
|
||||||
|
The current Python suite retains all 35 earlier tests and adds 14 semantic
|
||||||
|
tests, including every notification payload/envelope field, type drift,
|
||||||
|
counter/published-ID errors, extra or rewritten history, unrelated/unknown
|
||||||
|
model drift, read-only formal mismatch and a non-trace-derived count with
|
||||||
|
the source's history-limit behavior. These are synthetic controls only.
|
||||||
|
Exact executed source/input SHAs and the current 49-test result are recorded
|
||||||
|
in `local-validation.json` and `implementation.json`.
|
||||||
|
|
||||||
|
## Evidence boundary
|
||||||
|
|
||||||
|
`placement.gd` contains the shared finite scenario and handler endpoints.
|
||||||
|
`passive_placement.gd` overrides **all** input/setup/progression endpoints:
|
||||||
|
button, reveal, click, wheel, load_menu, complete_build, setup,
|
||||||
|
diagnostic_budget, save_initial_fixture, archive_formal. Its reachable
|
||||||
|
scenario neither calls product handlers nor emits their signals, advances
|
||||||
|
the clock, submits commands, resets Runtime or restores models. It reads
|
||||||
|
snapshots/reports and archives evidence. Root performs all OS gameplay.
|
||||||
|
Constructing/freeing the Main scene uses the existing ordinary cleanup helper.
|
||||||
|
|
||||||
|
The passive executable has a separate completion line. Only the handler UI
|
||||||
|
suite adds one entry to the strict marker contract and one source-pinned
|
||||||
|
ordinary cleanup policy. All previous marker/policy entries are retained.
|
||||||
|
The native OS collector never routes its process through the headless gate.
|
||||||
|
|
||||||
|
Checker controls are synthetic, including fabricated engine, PID, typed-byte
|
||||||
|
stand-ins, screenshots and weak-reference records. A positive local test
|
||||||
|
validates the checker, not the game or OS. Controller tests replace Popen,
|
||||||
|
engine probes, profiles and owner gate with mocks and launch no engine.
|
||||||
|
See `local-validation.json` and `implementation.json` for the actual final
|
||||||
|
executed source/input hashes and results.
|
||||||
|
|
||||||
|
## Still required from Root / independent review
|
||||||
|
|
||||||
|
Freeze a clean exact candidate; collect guarded native handler and real CUA
|
||||||
|
OS writer/reader evidence; run verify-only against that candidate; perform
|
||||||
|
impact checks and final full regression after related sources are frozen;
|
||||||
|
obtain independent Opus review of all five conditions; integrate and verify
|
||||||
|
the current final source, then update the authoritative ledger.
|
||||||
|
No reused P08-02 PASS is claimed for changed sources. P08-01 and the whole
|
||||||
|
P08 package remain open. Windows same-distribution/device evidence remains
|
||||||
|
open; Mac/Linux results cannot substitute for it. No outside-scope service
|
||||||
|
defect or required permission change has been demonstrated by this worker.
|
||||||
|
|
||||||
|
## r04 initial OS load oracle repair (retained earlier submission)
|
||||||
|
|
||||||
|
The supplied OS_R04_INITIAL_LOAD_ORACLE_FINDING.json and
|
||||||
|
os-r04-writer-engine.log identify the bootstrap-only simple equality failure.
|
||||||
|
The registered build contains 2153 files; its complete read-only inventory is
|
||||||
|
recorded in registered-r04-evidence-manifest.json. Historical raw/PASS evidence
|
||||||
|
is unchanged and no changed-source acceptance is inherited.
|
||||||
|
|
||||||
|
Passive setup now uses the existing verify_operation oracle with bootstrap-
|
||||||
|
prefix. Complete typed JSON and raw Variant formal, checkpoint (postload),
|
||||||
|
returned Dictionary, expected-operation and operation-actual files, plus a
|
||||||
|
separate comparison JSON, remain distinct from writer/reader final proofs.
|
||||||
|
The same source-defined notification logic checks all state, previous events,
|
||||||
|
next event ID/counter and every payload field; no event masking or omissions.
|
||||||
|
The checker binds bootstrap formal/returned models to the recorded read-only
|
||||||
|
inspection and first Runtime return, reconstructs the expectation and checks
|
||||||
|
whole typed state and raw expected/actual identity.
|
||||||
|
|
||||||
|
Static inspection within the allowed fixture/recorder scope found no other
|
||||||
|
postload-versus-formal simple equality oracle. Remaining exact comparisons
|
||||||
|
check presave/formal identity or read-only preservation and are intentional.
|
||||||
|
Seven added semantic controls cover missing/extra notifications, counter,
|
||||||
|
payload and unknown-field drift, missing raw and overwritten bootstrap raw;
|
||||||
|
all 49 earlier tests remain. Final actual results and exact source/input
|
||||||
|
hashes are recorded in local-validation.json and local-source-manifest.json.
|
||||||
|
Only pure Python validation uses the ordinary 900-second subprocess timeout.
|
||||||
|
|
||||||
|
Root native/OS collection for this candidate, final full regression after
|
||||||
|
freeze, separate Opus review and integration/current final verification remain
|
||||||
|
open. All five conditions and the 30/88 denominator are unchanged. No Runtime,
|
||||||
|
UI, SaveService, collector, specification or historical evidence edits.
|
||||||
|
|
||||||
|
## R05 consolidated repair (historical submission)
|
||||||
|
|
||||||
|
The supplied ROOT_CHECKER_R05_INFRASTRUCTURE_ORACLE.json and
|
||||||
|
ROOT_OS_R05_GUIDE_INTERCEPTION.json are failure authorities, not acceptance.
|
||||||
|
The original failed OS request and all supplied raw files remain untouched.
|
||||||
|
The complete gzipped reader checkpoint is copied byte-for-byte into the fixture
|
||||||
|
suite with its provenance. Tests verify the decompressed 2120352 bytes and
|
||||||
|
SHA `304d97de8051d5e74c6e32c4482a3cb183b0172d7671088fdc40469cc3448c0d`.
|
||||||
|
It is actual native input from candidate 4a17d0e0f589fa76d81f1d4630ec45c63bac21ab,
|
||||||
|
not proof of acceptance for the changed candidate.
|
||||||
|
|
||||||
|
Runtime _on_facility_completed and FacilityInfrastructureProjector define the
|
||||||
|
split: ordinary construction instances require operational membership; supported
|
||||||
|
schema proxies require exact infrastructure membership. The checker preserves
|
||||||
|
completed-job, occupation, demolition and refusal invariants, and now checks
|
||||||
|
projection identity/cells/definition/fingerprint, managed ROUTE and connector
|
||||||
|
membership, exact stair connector fields and lower landing, and projected
|
||||||
|
walkable/path topology. Actual checkpoint corruption tests exercise missing,
|
||||||
|
extra and incorrect topology, ordinary facility loss and proxy occupation loss.
|
||||||
|
Whole-checker synthetic controls now represent stairs in the infrastructure
|
||||||
|
projector and retain every earlier test.
|
||||||
|
|
||||||
|
The handler unsupported target is (4,4,0). The passive observer independently
|
||||||
|
chooses a visible cell with the unchanged UNSUPPORTED predicate outside the
|
||||||
|
opening guide rectangle after normal palette selection. It reads bounds,
|
||||||
|
preview and guide geometry; it does not suppress the guide or mutate models.
|
||||||
|
Cell requests include viewport-to-screen affine mapping derived from existing
|
||||||
|
Godot transforms and current guide geometry. The engine matrix is separate
|
||||||
|
from physical stretch and screenshot/window translation (R06 correction). The checker recomputes the mapping and rejects guide interception.
|
||||||
|
Root must retain actual CUA coordinates, screenshots and raw receipts and check
|
||||||
|
the mapping against the real window; no OS success is claimed by this worker.
|
||||||
|
|
||||||
|
Bootstrap repair, all five facets, product UI and driver progress are preserved.
|
||||||
|
Python syntax/checker execution and exact source/input manifests are recorded in
|
||||||
|
local-validation.json and implementation.json. Godot parsing, fresh native and
|
||||||
|
OS collection, final full regression, independent review, integration/current
|
||||||
|
verification and Windows device evidence remain pending. No context gap or
|
||||||
|
outside-scope service defect has been demonstrated in this batch.
|
||||||
|
|
||||||
|
## R06 targeted repair (preserved repair)
|
||||||
|
|
||||||
|
Only the OS per-child total wait changes from 900 to 2400 seconds, with
|
||||||
|
truthful start/end receipt provenance. Per-request 300, provider 900, validation
|
||||||
|
180 and every source/acceptance guard remain unchanged. Product and fixtures
|
||||||
|
are unchanged. Historical R06 native passes do not establish changed-source PASS.
|
||||||
|
|
||||||
|
R06 calibration correction (ROOT_NATIVE_R06_OS_TIMEOUT.json): the engine
|
||||||
|
viewport_to_screen affine matrix [a,b,c,d,tx,ty] maps viewport (x,y) to
|
||||||
|
(a*x+c*y+tx, b*x+d*y+ty) in engine coordinates. It reports identity in the
|
||||||
|
real window and does not include physical stretch or the screenshot titlebar.
|
||||||
|
Keep 1440x810 virtual coordinates separate from 1280x720 window content and
|
||||||
|
1280x752 screenshot coordinates. For this measured window, apply scale 8/9
|
||||||
|
(approximately 0.8889), then add 32 pixels to screenshot y for the titlebar.
|
||||||
|
For modal controls, first apply the dialog offset reported by Godot, then
|
||||||
|
physical stretch and titlebar. Desktop CUA coordinates additionally require
|
||||||
|
the observed screenshot/window origin. Retain actual CUA coordinates, raw
|
||||||
|
screenshots and window geometry; recalibrate whenever geometry changes.
|
||||||
|
guide_rect remains in viewport coordinates. Preserve historical failed
|
||||||
|
evidence: R06 request 33 was unacknowledged after PID 17863 ended and cannot
|
||||||
|
count as evidence. Fresh guarded native/OS collection, full regression,
|
||||||
|
independent review and integration remain pending.
|
||||||
|
|
||||||
|
Historical R06 local validation: syntax passed; 75 checker tests ran with one failure.
|
||||||
|
The existing OS mock expects 900 rather than 2400. Blocked pending authority
|
||||||
|
to update only that mock expectation in tools/test_p08_normal_placement_evidence.py
|
||||||
|
and rerun local checks. No test was disabled or changed.
|
||||||
|
|
||||||
|
## R06 authorized mock synchronization (current submission)
|
||||||
|
|
||||||
|
The independent literal expected2400 is asserted against the driver constant,
|
||||||
|
actual wait argument and actual started/ended receipts for both writer and
|
||||||
|
reader. The timeout case also checks its writer receipts and preserves owned
|
||||||
|
child cleanup, project restoration and existing protection controls. All 75
|
||||||
|
checker tests are retained. Final local syntax/test results and exact source
|
||||||
|
and input SHAs are recorded in local-validation.json, local-source-manifest.json
|
||||||
|
and implementation.json. These are mocked Python controls, not native or OS
|
||||||
|
acceptance. Root native, OS, final full regression, independent review and
|
||||||
|
integration/current verification remain pending, including Windows device
|
||||||
|
acceptance. Existing driver2400, calibration and earlier repair work is retained.
|
||||||
|
|
||||||
|
## R07 actual-input observer repair (current submission)
|
||||||
|
|
||||||
|
Authority: ROOT_OS_R07_SELECTED_CELL_READBACK.json and its supplied raw writer
|
||||||
|
actions/observations and screenshot. These historical failures remain unchanged:
|
||||||
|
writer exit1, reader not started, and request64 is not current acceptance proof.
|
||||||
|
The five condition records and acceptance denominator remain unchanged.
|
||||||
|
|
||||||
|
The passive read-only observer captures left-press viewport coordinates in
|
||||||
|
_input before GUI side effects, inverse local coordinates, the actual converted
|
||||||
|
world cell, bounds, cell dimensions, map origin, pan/zoom and both affine
|
||||||
|
transforms. It also records the prior selection/occupant as separate dispatch
|
||||||
|
fields. The action records the post-input selected entity and cell occupant
|
||||||
|
separately. Later mouse-getter reads remain diagnostic only. The checker binds
|
||||||
|
the action to the actual pressed event, independently recomputes its cell and
|
||||||
|
transforms, and checks camera selection against complete-model occupancy.
|
||||||
|
Requested center pixels remain distinct from actual event pixels; a press
|
||||||
|
elsewhere within the same cell is valid.
|
||||||
|
|
||||||
|
All old tests remain; new whole-checker semantic controls cover missing dispatch,
|
||||||
|
wrong actual cell, mismatched event coordinates, transform drift, wrong selected
|
||||||
|
entity/occupancy and bypassed selection. A positive control demonstrates that
|
||||||
|
a later diagnostic getter cannot change acceptance. Final syntax, test counts
|
||||||
|
and source/input hashes are recorded in repair-r07-local-validation.json and
|
||||||
|
repair-r07-local-source-manifest.json, referenced by implementation.json.
|
||||||
|
|
||||||
|
No product changes, Godot/native/OS/full regression, git writes, Runner actions
|
||||||
|
or integration were performed by this worker. Driver receipt values remain
|
||||||
|
2400 seconds and all timeout cleanup guards remain. Root must collect actual
|
||||||
|
native and OS evidence on the final candidate, perform verify-only and final
|
||||||
|
full regression, then obtain a separate independent review of all five facets.
|
||||||
|
Any proposed historical reuse requires exact source/input applicability and
|
||||||
|
independent review; no changed-source PASS is inherited here.
|
||||||
|
|
||||||
|
## Repair10 facility-only palette (current submission)
|
||||||
|
|
||||||
|
R07 candidate 1f0a2bcd failed test_main_dashboard.gd:132 after 147 suites passed;
|
||||||
|
this historical run stopped strictly and is not final full-175 acceptance.
|
||||||
|
ROOT_FULL_R07_* and ROOT_FULL_REGRESSION_R07_* raw proof files remain unchanged.
|
||||||
|
BuildPalette now contains only the 23 registered facility buttons, with 23
|
||||||
|
columns. A single HBox is the scroll content; DemolitionButton is its sibling.
|
||||||
|
The new semantic suite checks every facility membership, scroll/HBox topology,
|
||||||
|
ordinary opening and scroll reachability. Existing operation/cleanup checks and
|
||||||
|
the one strict completion marker are retained. No Runtime/domain/assets changes.
|
||||||
|
|
||||||
|
Exact current source and input hashes are in repair10-local-source-manifest.json
|
||||||
|
and implementation.json; actual Python results are in repair10-local-validation.json.
|
||||||
|
These local controls establish no Godot or OS acceptance. Root must first rerun
|
||||||
|
test_main_dashboard and test_p08_normal_placement_ops natively, then freeze the
|
||||||
|
final candidate for native writer/reader, real OS collection, verify-only and
|
||||||
|
full-175 regression, followed by separate Opus review and integration/current
|
||||||
|
verification/ledger. All five facets remain pending. Windows device acceptance
|
||||||
|
remains open. All repair/inference/material caps stay null. No git writes,
|
||||||
|
Runner operations, agents, integration or engine runs by the worker.
|
||||||
|
|
||||||
|
Final repair10 SHA-256 pins (local controls only):
|
||||||
|
|
||||||
|
- `scenes/main/main.gd`: `36316f9edc170ba965eb2f595a740ae7fcc8914e4090f0351c0cec181d6a7431`
|
||||||
|
- `tests/ui/test_p08_normal_placement_ops.gd`: `d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e`
|
||||||
|
- `tests/fixtures/p08-03/placement.gd`: `1ebaaa80784905d661954e255bfb8a96a3a963a57b9a38b19e7f91b90fb628b3`
|
||||||
|
- `docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json`: `9eab2b529e11d00bb00a415f29135b5fe7d8df2a282564ecc37292c8bda64010`
|
||||||
|
- `tools/regression/suite-policy.json`: `a74dc701155b6207bc23095296d723928f62719fce14fda392b12f9947007fb1`
|
||||||
|
- Complete source/input manifest: `9f3e7ddb8cecf53d668dd4556f504e4fba26b29fb81dfe4b583ab060c6e6a9c8`
|
||||||
|
- Final local validation: `ef88dee24a9796600d6d90c6a0ae563c8d06f039231dae6db01d1f96ede2055b` (83 checker tests / 0 failures; four Python syntax checks passed).
|
||||||
|
|
||||||
|
## Repair11 nullable RefCounted observer (current submission)
|
||||||
|
|
||||||
|
R08 writer PID 75240 failed before the initial manual load; its real palette click and raw failure proof are retained as historical diagnostics only. InputObserver.endpoint now accepts the RefCounted passive recorder and retains its null guard. Modal observers explicitly keep endpoint null, record null_modal_receipts_only in observed.json, queue_free and restore the root observer. No modal cell dispatch or product handler calls were added. Both placement fixtures were reread for typed assignments; no further Node/RefCounted mismatch was found by local inspection. Godot parsing remains pending.
|
||||||
|
|
||||||
|
Final source/input pins are in repair11-local-source-manifest.json and implementation.json. Only passive_placement.gd and the Python test source changed since Repair10. The passive fixture input SHA change invalidates native/OS evidence whose input map includes it; recollect the full5 set. R08 palette/UI4 proof is retained and may be reused only after exact actual source/input/engine/marker applicability checks; no blanket inherited PASS.
|
||||||
|
|
||||||
|
Root order: actual native startup with initial manual menu load, profile JSON and no SCRIPT ERROR; then full5 native/OS writer and reader with distinct PIDs; then mandatory frozen full175 regression. Separate Opus review, integration/current verification/ledger and Windows platform acceptance remain pending. All five conditions remain unaccepted. No Godot, native, full regression, git writes, Runner operations or agents were performed by this worker. Local Python syntax and checker results are recorded in repair11-local-validation.json.
|
||||||
|
|
||||||
|
Repair11 final pins and local results:
|
||||||
|
|
||||||
|
- passive_placement.gd: `cdbd9a09b535d00a79aec7e2b7219f4daa4cf235449602b3cd02c6f12d9df88c`
|
||||||
|
- test_p08_normal_placement_evidence.py: `b8189b2b4bf15933d7e3e760495928b6a5a7ec5b0400a1c5198427d1cb0a3408`
|
||||||
|
- Complete source/input manifest: `0d33515d9ef33656fe13aab3f417a18a2b602047d6eb013b3f6b896f0330edf6`
|
||||||
|
- Local validation: `188d61cb4e23211646cc9808bfb924bc56fe66f1fb7ef0534584740dcfcd9561`; 88 tests, 0 failures; four syntax checks passed. These controls establish no gameplay acceptance.
|
||||||
|
|
||||||
|
## Repair13 final executed local pins
|
||||||
|
|
||||||
|
Final execution: 100 Python tests, 0 failures; 3 syntax checks passed.
|
||||||
|
Actual R09 --verify-only: integrity pass, acceptance pending.
|
||||||
|
|
||||||
|
- tools/check_p08_normal_placement_evidence.py: 73bff1e00c319b8e681953fe64497eefb53ece168d2d18e0b60951e65f66279d
|
||||||
|
- tools/test_p08_normal_placement_evidence.py: 7e708a4429603166485b6f3267d887561d23bcf25b564d002473094e388476ca
|
||||||
|
- tests/fixtures/p08-03/repair13_images.py: 248a8d73ece3a60e601421fdd2ad53f8f8e971184fb1328c7155a71b8ed4ca53
|
||||||
|
- repair13-local-validation.json: f249c76c6d4c044c1a3c33ea09abc99f09a8c0ea6b0ade470d2af205eb4d89af
|
||||||
|
- repair13-local-source-manifest.json: 7d5a62155b7053398a5bc55879c9a92a07dcb3c5a0603e92d6f38eefba122ca1
|
||||||
|
|
||||||
|
## Repair17 revision 2 — submitted, no acceptance claimed
|
||||||
|
History above and all R09 evidence/pins remain historical and unrewritten.
|
||||||
|
(1) support_connection is NOT satisfied: blocked pending Root reconciliation and application of runtime-preview-proposal/runtime_preview.patch. See proposal for the additional Main display premise gap.
|
||||||
|
(2)–(5) are not verified. The earlier reviewer raw-proof read refusal remains historical. The reviewer now has the permitted task build via --add-dir (while --restricted, Read/Grep/Glob and outer sandbox remain); future independent checking with raw-proof access is required.
|
||||||
|
Native/OS proof for changed demolition status and support display is invalidated. Root must recollect after all product fixes, including the reconciled Runtime proposal, are combined. No applicability or acceptance is claimed.
|
||||||
|
Limits for repair, inference and material remain null. No 500k compression; low findings (empty cell, audio, idempotency, English Runtime messages) remain deferred. Denominator remains one existing unit among 30 packages / 88 units, no partial credit.
|
||||||
|
New HEAD: to be bound by Runner. No worker commit or branch change.
|
||||||
|
Validation: 128 Python tests passed (85.953s, exit0) after one targeted-test correction; py_compile passed with an in-scope cache directory after default-cache PermissionError; JSON load and git apply --check passed. placement.gd and proposed GDScript test are not run. Placement fixture requires Root's complete applied fix.
|
||||||
|
Pending:
|
||||||
|
- Root reconciliation and application of Runtime preview patch (including Main display premise gap)
|
||||||
|
- Root native/OS recollection for changed demolition and support UI after all fixes are combined
|
||||||
|
- Root final full175
|
||||||
|
- Independent Opus review of all 5 conditions with raw-proof access
|
||||||
|
- Integration / current final verification / ledger
|
||||||
|
- Windows same-distribution/device (no Mac substitution)
|
||||||
|
|
||||||
|
Net committed diff, from git diff --name-status --no-renames 31aa7706d28a92e313c432d5a62e35d19503dcc3 HEAD:
|
||||||
|
```text
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/REPAIR12_CONTEXT_GAP.md
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_NATIVE_R09_COLLECTION_PINS.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R09_COLLECTION_AND_PUBLICATION_DIAGNOSIS.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R09_READONLY_IMAGE_DIMENSIONS.json
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/implementation.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/repair13-local-source-manifest.json
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/repair13-local-validation.json
|
||||||
|
M tools/check_p08_normal_placement_evidence.py
|
||||||
|
M tools/test_p08_normal_placement_evidence.py
|
||||||
|
```
|
||||||
|
Working changes (plus new proposal files):
|
||||||
|
```text
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md
|
||||||
|
M docs/plans/original-completion-2026-10-02/execution/p08-03/implementation.json
|
||||||
|
M scenes/main/main.gd
|
||||||
|
M tests/fixtures/p08-03/checker_fixture.py
|
||||||
|
M tests/fixtures/p08-03/placement.gd
|
||||||
|
M tools/check_p08_normal_placement_evidence.py
|
||||||
|
M tools/test_p08_normal_placement_evidence.py
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/runtime-preview-proposal/RUNTIME_PREVIEW_PROPOSAL.md
|
||||||
|
A docs/plans/original-completion-2026-10-02/execution/p08-03/runtime-preview-proposal/runtime_preview.patch
|
||||||
|
```
|
||||||
|
Exact validation commands and initial/retry results are recorded in implementation.json repair17.validation. No Godot/native/full execution or recollection was performed.
|
||||||
|
|
||||||
|
## Repair19 — submitted, no acceptance
|
||||||
|
|
||||||
|
Input M: fd643f55a271e63c554b94681454d357117c0678. Verify-only failure:
|
||||||
|
8ee0765cdd0a438dbf0ddc0f67ebbc70. New HEAD: **to be bound by Runner**.
|
||||||
|
The R15 diagnosis was an unverified palette reveal followed by a possibly clipped
|
||||||
|
button click; deferred quit also allowed requests and secondary failures after
|
||||||
|
an ACK timeout or identity/hash failure. The Root31 ACK is invalid. R15 earns no
|
||||||
|
credit. No acceptance or changed-source evidence reuse is claimed.
|
||||||
|
|
||||||
|
Repair19 changes only the passive endpoint, additive checker gates, synthetic
|
||||||
|
positive/negative specimens and these handoff records. Repair18 and all R09 pins
|
||||||
|
remain history without rewriting. Runtime, product UI, the ACK deadline, spec,
|
||||||
|
scope and denominator remain unchanged.
|
||||||
|
|
||||||
|
### Source-map applicability
|
||||||
|
|
||||||
|
The four changed executable/source inputs and their SHA256 at M and in the
|
||||||
|
worktree are listed in implementation.json `repair19.source_map`. The two changed
|
||||||
|
handoff documents are also listed there at M; their final byte SHA256 are reported
|
||||||
|
with submission, outside the documents to avoid a self-referential hash.
|
||||||
|
|
||||||
|
Read-only rg and preload/load tracing found these consumers:
|
||||||
|
|
||||||
|
- docs recorder `passive_os_placement_recorder.gd:2` preloads passive_placement.gd,
|
||||||
|
which extends placement.gd. Its `run` drives the writer/reader OS pair.
|
||||||
|
- `tests/ui/test_p08_normal_placement_ops.gd:2` preloads placement.gd directly.
|
||||||
|
That parent is unchanged by repair19; it loads main.tscn and the existing codec
|
||||||
|
and audio cleanup helpers. The passive subclass is not loaded by this UI suite.
|
||||||
|
- `tools/run_p08_normal_placement.py:145,210,227` loads the checker for initial
|
||||||
|
input fingerprinting, OS input mapping and final evidence verification. Its
|
||||||
|
import/parse stages precede handler writer/reader stages using the UI suite,
|
||||||
|
and its OS stage uses the docs recorder.
|
||||||
|
- `tools/test_p08_normal_placement_evidence.py:28-30,55-56` loads the checker,
|
||||||
|
checker_fixture.py and collector, and reads both GDScript fixture sources.
|
||||||
|
- `tools/run_all_tests.py:roster` discovers the UI suite; `source_refs` includes
|
||||||
|
tests and tools in the whole-source fingerprint. Import/parse/native and final
|
||||||
|
regression applicability therefore requires the actual complete fingerprint.
|
||||||
|
The checker also imports the prior typed codec and standard runner directly.
|
||||||
|
|
||||||
|
Every OS/native collection and regression whose inputs include a changed file
|
||||||
|
is not applicable and must rerun on the final frozen revision: the complete
|
||||||
|
p08-normal-placement OS/native pair, checker tests, the UI suite when its actual
|
||||||
|
input fingerprint includes a changed fixture, and exactly one final all-suite
|
||||||
|
regression on the roster Root derives at the final revision. No roster count is
|
||||||
|
assumed. A prior native/import stage may be reused only on an exact fingerprint
|
||||||
|
match; no reuse is claimed where source changed. The UI suite is included in the
|
||||||
|
fresh pair and final roster regardless of its unchanged direct parent fixture.
|
||||||
|
|
||||||
|
Neither completion_marker_contracts.json nor suite-policy.json changed: no pinned
|
||||||
|
print line, suite source SHA or cleanup policy changed in repair19.
|
||||||
|
|
||||||
|
Still pending: Root first inspects normal scrollbar operation in a short disposable
|
||||||
|
diagnostic, then freezes source and runs a fresh contiguous long OS/native attempt;
|
||||||
|
exactly one final all-suite regression on the derived roster; independent Opus
|
||||||
|
review of all five conditions with raw-proof access; integration, current final
|
||||||
|
verification and ledger. Windows same-distribution/device remains open with no
|
||||||
|
Mac substitution. Local command outcomes are recorded in implementation.json.
|
||||||
|
|
||||||
|
## Repair18 — submitted, no acceptance
|
||||||
|
|
||||||
|
7297a4c050f0293df331c2c51bb32def248bcb6b
|
||||||
|
|
||||||
|
['4775001', '127f22f']
|
||||||
|
|
||||||
|
dbf5cb8 / native source 12f04d6; target/stairs/construction/pointer passes; 8 unchanged state pairs; Opus pass; final-validation pass (historical support trace, no current applicability claimed)
|
||||||
|
|
||||||
|
Every path in diff(M..worktree) must be inside allowed_paths; every path outside allowed_paths must equal its blob at 127f22f. Inherited Runtime is read-only.
|
||||||
|
|
||||||
|
runtime_preview.patch was superseded by the integrated helper and was not applied; retained as history.
|
||||||
|
|
||||||
|
to be bound by Runner
|
||||||
|
|
||||||
|
(1) pending Root native/OS; (2)-(5) remain pending
|
||||||
|
|
||||||
|
not claimed
|
||||||
|
|
||||||
|
['Root freeze then normal OS and native recollection including changed preview and demolition UI', 'exactly one final all-suite regression on roster derived by Root', 'independent Opus review of all 5 conditions with raw-proof access', 'integration, current final verification and ledger', 'Windows same-distribution/device open; no Mac substitution']
|
||||||
|
|
||||||
|
R09 history and pins remain unrewritten. Low findings (empty cell, audio, idempotency, English Runtime messages) remain deferred.
|
||||||
|
|
||||||
|
Repair18 local validation: python3 -B tools/test_p08_normal_placement_evidence.py ran 131 tests in 88.476s, exit 1: one existing R09 raw-proof read PermissionError; no weakening. py_compile initially failed on default cache permissions, then passed with PYTHONPYCACHEPREFIX inside allowed fixture scratch. JSON load and git diff --check passed. Scope adapter passed including boundary equality. Exact commands and source SHA256 are in implementation.json repair18. Root/Runner raw-proof access remains required.
|
||||||
|
|
||||||
|
## Repair20 — submitted candidate
|
||||||
|
|
||||||
|
Frozen input f5f85ae08c1c6c9c1ec511f13a7215170d7d8d49; registered validate failure f2d59df6a3c34c0e93b15b1a05cfa533. Historical pins selected the R09 route for fresh proof; the checker now selects from the explicit index commit, retaining R09 applicability and fresh HEAD/source/input checks. Both routes bind screenshot paths to the request; fresh proof uses strict PNG/JPEG magic dispatch and equal positive dimensions. Historical R09 pins, dimensions and runtime_preview.patch remain unchanged.
|
||||||
|
|
||||||
|
Root full176 was interrupted after 13 PASS, at phase013, guards 0: an interruption, not a product defect and not acceptance. No OS collection was started. New HEAD: to be bound by Runner. Conditions (1)-(5) remain pending Root native/OS.
|
||||||
|
|
||||||
|
Pending: Root exact-final local/native/checker applicability; one complete final full regression on the derived roster; fresh contiguous all-5 normal OS plus native collection; independent Opus review of all five conditions; integration/current final verification/ledger; Windows same-distribution/device, with no Mac substitution.
|
||||||
|
|
||||||
|
Local verification: final Python rerun 153 tests / 127.709s, 152 passed, one existing R09 original raw-proof PermissionError (exit 1); all 11 repair20 cases passed. py_compile failed on default external cache permission (exit 1). JSON load, diff whitespace and scope self-check passed. No test skipped or weakened; Root must rerun with required evidence/cache access.
|
||||||
+38
-18
@@ -1,28 +1,24 @@
|
|||||||
{
|
{
|
||||||
"plan_id": "P08-03",
|
"plan_id": "P08-03",
|
||||||
"status": "in_progress",
|
"status": "in_progress",
|
||||||
"candidate": "47750010b8694c72737f47078f925b2b2e22ce59",
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
"executed_native_source": "31aa7706d28a92e313c432d5a62e35d19503dcc3",
|
"executed_native_source": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
"formal_acceptance": false,
|
"formal_acceptance": false,
|
||||||
"independent_review": "INDEPENDENT_SEMANTIC_REVIEW_7E2368F5.json",
|
"independent_review": "INDEPENDENT_SEMANTIC_REVIEW_7E2368F5.json",
|
||||||
"review_status": "changes_requested",
|
"review_status": "changes_requested",
|
||||||
"missing": [
|
"missing": [
|
||||||
"shared readonly Runtime precheck and placement preview/command agreement",
|
"Complete contiguous ordinary OS evidence for all5 on fd643",
|
||||||
"Main must display real rejection reason consistently",
|
"Independent raw-proof review of all5",
|
||||||
"Opus recorded scope reconciliation for necessary Runtime/test changes",
|
"Integration, final verification and ledger closure"
|
||||||
"changed-product native/OS recollection after batch freezes",
|
|
||||||
"all mandatory regression suites on exact final candidate; derive actual roster after added targeted test",
|
|
||||||
"independent raw-proof read and all-five-condition review",
|
|
||||||
"integration, current final verification and ledger closure"
|
|
||||||
],
|
],
|
||||||
"next_unit": "P08-03",
|
"next_unit": "P08-03",
|
||||||
"denominator_packages": 30,
|
"denominator_packages": 30,
|
||||||
"denominator_units": 88,
|
"denominator_units": 88,
|
||||||
"completed_delta": 0,
|
"completed_delta": 0,
|
||||||
"formal_validator": "7e2368f5 only historical after changed Main/checker; current 4775001 not accepted",
|
"formal_validator": "Pending for fd643; historical reviews are not acceptance for changed candidate.",
|
||||||
"next_action": "One actual 6.1-sol worker fixes test initialization; preserve Runtime refactor and original P08 submitted 4775001",
|
"next_action": "Pure JPEG/PNG geometry preflight passed against actualR13 andR14 images. Prepare existing Python ACK bridge before freshR15 spawn. Reuse R10 native and full176 unchanged evidence, then all5 OS, independent Opus and integration.",
|
||||||
"semantic_triage": "OPUS_PRE_FULL_SEMANTIC_TRIAGE_7E2368F5.json (read-only, no acceptance)",
|
"semantic_triage": "OPUS_PRE_FULL_SEMANTIC_TRIAGE_7E2368F5.json (read-only, no acceptance)",
|
||||||
"capacity": "cleanup complete: 7.94GB free; 580 closed stages archived losslessly; current R09 retained; no cleanup permission pending",
|
"capacity": "Followup complete: 10.32GB (9.61GiB) free; 42967 files byte-preserved; errors0. See ../storage-20261014/FOLLOWUP_FINAL_RESULT.json. No permission pending.",
|
||||||
"implemented_not_accepted": [
|
"implemented_not_accepted": [
|
||||||
"readable demolition outcome/refund from real result",
|
"readable demolition outcome/refund from real result",
|
||||||
"checker rejects preview/command disagreement; 128 local Python controls executed"
|
"checker rejects preview/command disagreement; 128 local Python controls executed"
|
||||||
@@ -30,14 +26,38 @@
|
|||||||
"support_task": {
|
"support_task": {
|
||||||
"id": "P08-03-RTPREVIEW",
|
"id": "P08-03-RTPREVIEW",
|
||||||
"project": "the-tree-p08-runtime-preview",
|
"project": "the-tree-p08-runtime-preview",
|
||||||
"state": "implementing test-only repair1",
|
"state": "completed supporting component; adds0 original units",
|
||||||
"base": "d4747dd7e12e8fd19e404ad444bdc1e56d03f088",
|
"base": "d4747dd7e12e8fd19e404ad444bdc1e56d03f088",
|
||||||
"counting_scope": "zero additional original units",
|
"counting_scope": "zero additional original units",
|
||||||
"reuse": "4775001 unapplied Runtime/test proposal, reviewed by actual Opus",
|
"reuse": "4775001 unapplied Runtime/test proposal, reviewed by actual Opus",
|
||||||
"actual_pid_at_start": 9155,
|
"actual_pid_at_start": 9155,
|
||||||
"submitted": "78dc82da077dabbdb92ebcf475cd81c5d619bcf6",
|
"submitted": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
"repairs": 1,
|
"repairs": 2,
|
||||||
"native_result": "import/parse passed; first targeted suite failed eager autoload reference; owned engine ended and source/default guards preserved",
|
"native_result": "four guarded suites pass 80/67/105/50, all eight native purity pairs unchanged",
|
||||||
"next": "test initialization repair then exact target/impact validation"
|
"next": "Supporting component already completed; continue original P08 UI OS evidence, mandatory176 regression and independent all-five review.",
|
||||||
}
|
"review": "INDEPENDENT_RUNTIME_SUPPORT_REVIEW_12F04D6.json",
|
||||||
|
"integration": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3"
|
||||||
|
},
|
||||||
|
"accepted_input_commit": "7297a4c050f0293df331c2c51bb32def248bcb6b",
|
||||||
|
"repair_attempt": 18,
|
||||||
|
"editable_paths_added": 0,
|
||||||
|
"worker_state": "terminal_submitted; gpt-6.1-sol repair18 ended; no worker restarted",
|
||||||
|
"local_tests": "131 passed; local tests do not close original unit",
|
||||||
|
"native_handler_evidence": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r10/index.json",
|
||||||
|
"os_partial_evidence": "R13 acknowledged33 and R14 acknowledged0; both failed incomplete history. All source/default guard errors0; no OS process alive.",
|
||||||
|
"full_regression": {
|
||||||
|
"state": "passed",
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-fd643f5-r01",
|
||||||
|
"roster_count": 176,
|
||||||
|
"owner_pid": 47603,
|
||||||
|
"tool_session": 50241,
|
||||||
|
"engine_sha256": "c7cccbf8fb143e34e02fd6521e09be2c2b974f0d5db080b19071c9c570718ccf",
|
||||||
|
"suite_policy_sha256": "a74dc701155b6207bc23095296d723928f62719fce14fda392b12f9947007fb1",
|
||||||
|
"source_map_sha256": "5b71b83e36a5e26f20cfbe2ea332aa4319011b036e319a4f58f1847f9b59b0ef",
|
||||||
|
"heavy_concurrency": 1,
|
||||||
|
"new_per_suite_source_copies": 0,
|
||||||
|
"strict_accepted_checks": 20488
|
||||||
|
},
|
||||||
|
"commander_direction": "OPUS_FROZEN_REGRESSION_OS_DIRECTION_FD643.json"
|
||||||
}
|
}
|
||||||
|
|||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"original_unit_credit": 0,
|
||||||
|
"Root_integrity_deficits": [],
|
||||||
|
"registered_validation": "pass",
|
||||||
|
"independent_review": {
|
||||||
|
"status": "pass",
|
||||||
|
"job": "ad6828d3170344f9a8b1b5b75fdd6a78",
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-03-code/runs/ad6828d3170344f9a8b1b5b75fdd6a78/result.json",
|
||||||
|
"sha256": "560050d8c031a9cfd6de3c458f9d97c9fb92d55248376b36571e75bc89a88435"
|
||||||
|
},
|
||||||
|
"OS_phases": [
|
||||||
|
{
|
||||||
|
"role": "writer",
|
||||||
|
"actual_pid": 21643,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"error": null,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"role": "reader",
|
||||||
|
"actual_pid": 32505,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"error": null,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"passed": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"writer_requests": 58,
|
||||||
|
"reader_requests": 4,
|
||||||
|
"conditions": [
|
||||||
|
"support_connection",
|
||||||
|
"invalid_position_reason",
|
||||||
|
"demolish_rebuild",
|
||||||
|
"pan_zoom_world_identity",
|
||||||
|
"separate_pid_resume"
|
||||||
|
],
|
||||||
|
"original_index_sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b",
|
||||||
|
"evidence_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||||
|
"evidence_recording_correction": "First current writer capture bytes were initially written under R18 by a stale helper closure, then copied byte-identically to R19 with explicit mapping. No old R18 PID16041 gameplay was reused. Original R18 first capture files are invalid as original R18 evidence after this overwrite. Root disclosed the error, and subsequent helpers use self-owned root/app properties.",
|
||||||
|
"full_call_trace": "All requests carry supplemental actual session call IDs/arguments, including property-based reader app calls omitted by the narrower original receipt collector. Original receipts unchanged.",
|
||||||
|
"Root_full176": "FULL_REGRESSION_D369D1C_R01_PASS.json",
|
||||||
|
"Root_local153": "REPAIR20_ROOT_VERIFICATION_D369D1C.json",
|
||||||
|
"remaining": [
|
||||||
|
"independent all-five semantic review result",
|
||||||
|
"honest executed-vs-integration binding preserving original raw files",
|
||||||
|
"integration and final verification",
|
||||||
|
"original unit ledger closure",
|
||||||
|
"global Windows same-distribution physical acceptance remains open"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
"scope_relationship": "RP24 bounded-shell acceptance is independent; not a dependency of Codex functional implementation"
|
"scope_relationship": "RP24 bounded-shell acceptance is independent; not a dependency of Codex functional implementation"
|
||||||
},
|
},
|
||||||
"Claude_auth": "existing native subscription client automatically renewed; actual authenticated request success, no user login wait or API fallback",
|
"Claude_auth": "existing native subscription client automatically renewed; actual authenticated request success, no user login wait or API fallback",
|
||||||
"P08_03_next": "Exact4a17 native complete; real OS bootstrap/full actions remain pending and require capacity500MiB before spawn",
|
"P08_03_next": "Frozen176 passed all20488 strict checks. Prepare calibrated completeOS attempt before spawn; no worker restarted. R13/R14 incomplete, not acceptance.",
|
||||||
"current_game_sources_changed": false,
|
"current_game_sources_changed": false,
|
||||||
"permission_request": "still pending and not applied; independent source work does not require marker command",
|
"permission_request": "still pending and not applied; independent source work does not require marker command",
|
||||||
"UI_worker_method": "Codex functional implementation selected by actual Opus; Antigravity read-only visual review",
|
"UI_worker_method": "Codex functional implementation selected by actual Opus; Antigravity read-only visual review",
|
||||||
@@ -130,5 +130,12 @@
|
|||||||
"session": 3533,
|
"session": 3533,
|
||||||
"submitted": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
|
"submitted": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
|
||||||
"local_tests": 56
|
"local_tests": 56
|
||||||
}
|
},
|
||||||
|
"latest_candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"current_worker_state": "terminal_submitted; no active worker",
|
||||||
|
"latest_model": "gpt-6.1-sol",
|
||||||
|
"original_unit_completed_delta": 0,
|
||||||
|
"current_storage_work": "Completed; FOLLOWUP_FINAL_RESULT.json records 10.32GB free after byte-preserving compression.",
|
||||||
|
"historical_records_note": "Earlier run fields below are retained history. latest_candidate/current_worker_state/P08_03_next govern current continuation.",
|
||||||
|
"latest_full_regression_session": null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"historical_builds_preserved": [
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r05-4a17d0e0",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r05-4a17d0e0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r08-4f3b42df",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r08-4f3b42df"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r07-0c5e0022",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r07-0c5e0022"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r01-7dd450c6",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r01-7dd450c6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r04-8e3d79d5",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r04-8e3d79d5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r06-d0128636",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r06-d0128636"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/p08-normal-placement-evidence"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/historical-native-r02-c2b59f04",
|
||||||
|
"preserved": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/evidence-archive/pre-d369/historical-native-r02-c2b59f04"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"validation_alias": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||||
|
"original_raw_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||||
|
"after_validation": "Materialize byte-identical proof in registered build for complete independent review; raw original paths remain readable and immutable."
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"runtime": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03",
|
||||||
|
"roots": [
|
||||||
|
{
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||||
|
"pin_file": "index.json",
|
||||||
|
"sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17",
|
||||||
|
"pin_file": "index.json",
|
||||||
|
"sha256": "16c3577ca226173fea65df8595ab42a8b257ba50166da1a8564e6eda126694a1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-d369d1c-r01",
|
||||||
|
"pin_file": "runner-ended.json",
|
||||||
|
"sha256": "0dbe71e589113088bd37be42fef583b8f6da86a15542f4900ed97fa957fc1264"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"permission": "read-only exact same-task synthetic game proof; no write rules changed; no personal/auth data",
|
||||||
|
"owner_scope": "existing user-directed multi-agent implementation and independent review with complete raw evidence"
|
||||||
|
}
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"state_after_registered_validation": "review_pending",
|
||||||
|
"raw_index_sha256": "fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b",
|
||||||
|
"mirror_bytes_verified": 925,
|
||||||
|
"raw_original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-d369d1c-r19-calibrated",
|
||||||
|
"materialized_build_root": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||||
|
"no_raw_mutations": true
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"blocking_findings": 0,
|
||||||
|
"deferred": [
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "In `completion_marker_contracts.json`, the new entry for `tests/transport/test_runtime_build_preview.gd` has the wrong authority. It points to `docs/spec/acceptance/P08-03.json` with scope \"normal placement; native and OS pending\", but that suite belongs to the support task P08-03-RTPREVIEW. The registration itself is needed, but the authority and scope text should name the RTPREVIEW spec."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "`main.gd` `_preview_demolition` opens the confirmation dialog even when the clicked cell has no facility; the dialog shows an empty facility ID. Confirming then sends `demolish_facility` with an empty `instance_id`, and the Runtime refuses it. The game state stays correct, but the UX could tell the user no facility is selected instead of opening the dialog."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"reason": "Independent review PASS; nonblocking metadata/empty-cell demolition UX; preserve exact accepted source and do not broaden current unit."
|
||||||
|
}
|
||||||
+1365
File diff suppressed because it is too large
Load Diff
+1351
File diff suppressed because it is too large
Load Diff
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"commit": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"status": "pass",
|
||||||
|
"summary": "The single acceptance item P08-03 and all five required conditions are met for candidate d369d1c. The evidence was collected at that exact candidate:\n- Real macOS OS input: writer PID 21643 (58 requests) and reader PID 32505 (4 requests).\n- Native runs r17.\n- Full regression: 176 suites passed.\n- The registered `check_p08_normal_placement_evidence.py --verify-only` run passed with no deficits.\n\n**support_connection:** Two positive cases built through the normal palette and completed: `reception` at (-8,0) with a CONNECTED path, and the lower/upper `guest_stairs` at (4,1)/(4,2). Two rejection cases were refused with no command submitted: `standard_room` unsupported at (10,4) (`UNSUPPORTED`), and `guest_stairs` with no landing below at (-8,2) (`STAIR_LANDING_MISSING`). The preview now uses the shared Runtime precheck (`preview_build_facility`), so preview and command give the same result.\n\n**invalid_position_reason:** The out-of-bounds case at (12,0) returns `OUT_OF_BOUNDS` first and shows \"世界の範囲外です\". The overlap case returns `OVERLAP` and shows \"重なります\". In every rejection the displayed status matches the first error code or the Runtime message. The checker's `preserve()` compares the full typed state and allows no difference except the command envelope.\n\n**demolish_rebuild:** A demolition entry, confirmation dialog and cancel were added to the normal palette, and they call the existing `demolish_facility` Runtime command.\n- Refused demolition of the supporting stair returns `STAIR_LANDING_IN_USE`, and its message is shown.\n- Cancel submits no command, and the state is unchanged.\n- The real demolition removes only `facility_00000001`; the refund (資材 2) matches the resource change.\n- Rebuilding on the same cell (-8,0) creates `facility_00000004`.\n\n**pan_zoom_world_identity:** Panning used move mode with an ordinary wheel and no Ctrl. Zoom steps clamp at 0.5 and 4.0, which matches the existing `clampf(value, 0.5, 4.0)` in `world_preview.gd`. The same world cell (-8,0,0) was selected at a moved pixel position (290,483 → 547,516), and the selected entity is `facility_00000004`.\n\n**separate_pid_resume:** The formal save was written by the writer process. A separate reader process resumed it, `facility_00000004` still occupies (-8,0,0), and the same cell is refused as `OVERLAP` through the normal palette.\n\n**Scope:** Product changes are limited to `main.gd` and `world_preview.gd`. The Runtime change comes from the separately reviewed and integrated support task P08-03-RTPREVIEW (dbf5cb8). The `suite-policy.json` change only adds the source-SHA-pinned ordinary cleanup policy for the new suite. No tests were deleted or disabled.\n\n**Still open (Root's responsibility, not this review):** integration, final verification on the merged result, and the ledger update. Windows same-distribution/device acceptance stays open at the global platform level, and the Mac evidence is not counted for Windows. The fixture is tagged as diagnostic setup, not natural play. The 30-package/88-unit denominator is unchanged.",
|
||||||
|
"acceptance_ids": [
|
||||||
|
"P08-03"
|
||||||
|
],
|
||||||
|
"findings": [
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "In `completion_marker_contracts.json`, the new entry for `tests/transport/test_runtime_build_preview.gd` has the wrong authority. It points to `docs/spec/acceptance/P08-03.json` with scope \"normal placement; native and OS pending\", but that suite belongs to the support task P08-03-RTPREVIEW. The registration itself is needed, but the authority and scope text should name the RTPREVIEW spec."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "`main.gd` `_preview_demolition` opens the confirmation dialog even when the clicked cell has no facility; the dialog shows an empty facility ID. Confirming then sends `demolish_facility` with an empty `instance_id`, and the Runtime refuses it. The game state stays correct, but the UX could tell the user no facility is selected instead of opening the dialog."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "Collection note in `P08-03_INDEPENDENT_REVIEW_CONTEXT.json`: a helper first wrote the writer's current screenshots to an old directory, and Root then moved them with a SHA mapping (`recording-path-correction.json`, `complete-cua-call-trace.json`). The checker re-verified the bytes and request bindings and passed. The integration reviewer should keep this record with the evidence."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"commit": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"status": "pass",
|
||||||
|
"summary": "Checked against the original acceptance item P08-03-RTPREVIEW only (internal shared-runtime proof; does not add or close original P08-03/88 units, the UI hunk, or Windows acceptance). Scope: the diff touches only the three allowed files. No construction service, data, spec or main/UI code is edited, and no tests are deleted or disabled.\n\n(1) One shared read-only precheck: _build_facility_precheck(command_id, payload) is called by both preview_build_facility and _execute_build_facility. Its order is unchanged from base 7576-7615: operations gate, then NOT_FOUND, unsupported vertical, origin INVALID_PAYLOAD, STAIR_LANDING_MISSING, ELEVATOR_BUSY, and rotation INVALID_PAYLOAD. Codes and messages are byte-identical; only command.command_id was replaced by the command_id parameter. The execute path re-derives definition, origin and rotation the same way after the precheck passes.\n\n(2) Unknown definition: if the precheck fails and the definition is null, preview returns a 4-key summary (can_build=false, a single code/reason, cells=[]) without calling validate_placement. That covers both NOT_FOUND and an operations gate that fails before NOT_FOUND (UNPAID_EXPENSES with a null definition), which resolves Commander finding 2. For known definitions, the precheck reason is pushed to the front and the PlacementReport schema (code, message, cells, details) is kept. ConstructionService.validate_placement (construction_service.gd:56-108) only builds a report.\n\n(3) Purity: the test compares var_to_bytes(create_snapshot()), CommandQueue snapshot bytes, accepted/processed counts and domain event count before and after each preview. The guarded native log shows identical SHA-256 values and counts for all 8 observations.\n\n(4) Agreement: for every reachable precheck case (NOT_FOUND, operations with null and known definitions, unsupported vertical, landing, elevator before rotation, invalid rotation), the test asserts that preview's first code, message and details match the submit result. The positive case also agrees: preview can_build=true and the command succeeds after real lower stairs are completed. Origin INVALID_PAYLOAD is explicitly noted as unreachable through the Vector3i preview API, as the Commander direction allowed.\n\nThe Commander findings were addressed: the existing UNPAID_EXPENSES reason replaces the invented ARREARS_REMAIN, the required cases were added, the null guard was added, and the UID uses valid characters.\n\nEvidence: the root native run passed (80/0) for test_runtime_build_preview. Impact tests also passed: test_runtime_stairs 67/0, test_construction_service PASS 105, test_original_build_pointer 50/0. stderr is empty, there are no guard or cleanup errors, and the four proof negative controls were rejected. The runner validation re-checked the integrity of the proof JSON against the pinned source SHAs (exit 0).",
|
||||||
|
"acceptance_ids": [
|
||||||
|
"P08-03-RTPREVIEW"
|
||||||
|
],
|
||||||
|
"findings": [
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "The unsupported-vertical and operations precedence cases depend on test-only subclass overrides (block_vertical, block_operations). FacilityInfrastructureProjector.UNSUPPORTED_VERTICAL_KINDS is currently empty, so this branch cannot be reached with real data. The operations gate itself is real (enable_production_operations is called and the reason comes from the actual gate), so this is acceptable, but it should be retested if real unsupported kinds are added later."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "When a precheck fails for a known definition, preview still adds the PlacementReport errors after the precheck reason (for example [\"STAIR_LANDING_MISSING\",\"UNSUPPORTED\"]), while submit returns only the precheck failure. The first code, message and details agree as required. Downstream UI/WorldPreview code must keep using error_codes[0]/reasons[0], as the Commander direction already specifies for repair 18."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"severity": "low",
|
||||||
|
"message": "The UID uid://dqx7m2k8n4vsa was hand-written. It uses only valid Godot UID characters, and the native import and parse showed no UID warnings, but it was not generated by the engine."
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+24
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"time": "2026-10-14T22:45:10.245751",
|
||||||
|
"sleep": 0,
|
||||||
|
"displaysleep_minutes": 180,
|
||||||
|
"currentHost_screensaver_idleTime": 0,
|
||||||
|
"screensaver_password_preferences": "keys absent; not interpreted as password disabled",
|
||||||
|
"data_source": "pmset -g custom and defaults readonly queries",
|
||||||
|
"tool_error": "Automatic unlock paused after detected physical input; Mac locked",
|
||||||
|
"after_manual_unlock": {
|
||||||
|
"window_size": [
|
||||||
|
1920,
|
||||||
|
842
|
||||||
|
],
|
||||||
|
"screen_scale": 2,
|
||||||
|
"screenshot_pixels": [
|
||||||
|
3840,
|
||||||
|
1748
|
||||||
|
],
|
||||||
|
"logical_titlebar_inset": 32,
|
||||||
|
"screenshot_titlebar_pixels": 64
|
||||||
|
},
|
||||||
|
"root_cause": "Not proved. Settings above alone do not explain the short interruption.",
|
||||||
|
"mitigation": "Owned-process caffeinate -di assertion only; no lock/auth/security policy changes. Rebind CUA after unlock; reject stale geometry."
|
||||||
|
}
|
||||||
+88
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"candidate": "f5f85ae08c1c6c9c1ec511f13a7215170d7d8d49",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"unit_credit": 0,
|
||||||
|
"scope": "actual standard import/parse and handler writer/reader; ordinary OS all-five still required",
|
||||||
|
"phases": [
|
||||||
|
{
|
||||||
|
"phase": "import",
|
||||||
|
"actual_pid": 87856,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": null,
|
||||||
|
"reported_failures": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "parse",
|
||||||
|
"actual_pid": 87957,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": 313,
|
||||||
|
"reported_checks": null,
|
||||||
|
"reported_failures": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "writer",
|
||||||
|
"actual_pid": 87991,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": 196,
|
||||||
|
"reported_failures": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "reader",
|
||||||
|
"actual_pid": 88024,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": 96,
|
||||||
|
"reported_failures": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"collection_error": null,
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"all_owned_ended": true,
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/index.json",
|
||||||
|
"sha256": "2cbb251414ce5bff46538c9fc59c7eed82b83324f4e24a293d53cd71744fe10c",
|
||||||
|
"bytes": 209920
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runner-input.json",
|
||||||
|
"sha256": "b326873176f49c85fb3cbfad87d1cdf1109edc53153486521eed9b191d9e0e20",
|
||||||
|
"bytes": 316332
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runner-ended.json",
|
||||||
|
"sha256": "6dcc869ef2cb2f40ce168cd5a03cfeabc6c8dab3ae0ebd73277d1428e4d31635",
|
||||||
|
"bytes": 3196
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runs/import/import-receipt.json",
|
||||||
|
"sha256": "582b01a9aad297030f8f94d42458a809f0c1e017b1ad003049ba0b1655f8735d",
|
||||||
|
"bytes": 9628
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runs/parse/parse-receipt.json",
|
||||||
|
"sha256": "d9e531cf3f6434bbe59264283d6c06eb6d6424e262123cdd18b8d9b5b3d75c73",
|
||||||
|
"bytes": 12874
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runs/writer/writer-receipt.json",
|
||||||
|
"sha256": "013d3e4999a5569fa1ee81b4ae428050ffbebe1f762471acef78fba26344102a",
|
||||||
|
"bytes": 28158
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-f5f85ae-r16/runs/reader/reader-receipt.json",
|
||||||
|
"sha256": "885054d5e3a90dbde6434e1c5457eb499a5ee13f979f679a0bb7fe5ff9f3420b",
|
||||||
|
"bytes": 26061
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+7
File diff suppressed because one or more lines are too long
+13
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"run": "edcc2ef525654d088cd727e58a0964a6",
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"result_sha256": "6c554aa6ed3054af59f798f24e6b78aae598bb6e7cc588c52f0c1aa74a1cff49",
|
||||||
|
"decision": {
|
||||||
|
"action": "validate",
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"reason": "Continue P08-03 on the same frozen source, fd643f55a271e63c554b94681454d357117c0678 (repair18 submitted). No source change. The task stays at 0/1. The spec (7941da4e…), the denominator (1 unit of 30 packages/88 units, no partial credit), the timeouts, the policies and the lock/security settings all stay as they are.\n\n**Why validate and not repair:** R13 stopped at request 34 because of the environment. The macOS screen lock interrupted the run. After the manual unlock, the display came back at retina 3840 and the camera/panel had changed. The request then passed the 300 s per-request deadline, and PID 37384 exited 1 with guard_errors 0 and cleanup_errors 0. None of this proves a product defect, so no repair or reimplementation is sent. Record R13 as a failed, incomplete OS attempt. Its requests 1-33 are diagnostic history only. Do not splice them into a complete writer/reader proof or count them as acceptance.\n\n**Exact next steps for Root (validation p08-normal-placement):**\n\n1. **Reuse the R10 stage.** Reuse the existing exact-source R10 import/stage at fd643f5. First recheck that the source tree, spec, input, config, environment and engine version/hash fingerprints match exactly. Do not make a new source-stage copy (storage is limited; 10.32 GB was recovered). If any fingerprint differs, re-stage once and record why.\n\n2. **Run the frozen 176-suite regression now, exactly once.** It can run now because it does not depend on the OS collection. The roster comes from actual discovery at fd643f5, so confirm the count is 176 and do not assume it. Run it while the display is idle, not at the same time as the OS collection. It can be reused for acceptance only if:\n - the source, inputs, config and environment stay unchanged through the final OS run;\n - its applicability (source sha, roster, suite-policy sha, engine) is recorded explicitly.\n\n Any change to the source or inputs makes it invalid and requires one new run.\n\n3. **Fresh, complete OS collection on the same frozen source.** Run it with the existing driver tools/run_p08_normal_placement.py --input-mode native_os on fd643f5:\n - **Before starting:** set display sleep, screen saver and auto-lock off for this session only through a temporary per-session caffeinate assertion. Do not change the security/lock policy.\n - **Calibrate the display at startup** instead of using the old fixed 1x mapping. Read the backing scale factor, the window content bounds and the titlebar inset from the live window. Derive the screenshot-pixel ↔ logical-point mapping from that, and record the calibration in the raw evidence.\n - **Recalibrate after any display or geometry change.** If the scale or window bounds change during the run (as they did after the unlock), abort the run as incomplete. Do not keep clicking with stale coordinates.\n - **Collect the whole flow in one fresh, contiguous attempt, not a resume from request 34.** It must cover all five conditions:\n - support positives and negatives, plus the missing lower path and the valid lower+upper stairs;\n - bounds/overlap refusals with no partial application;\n - demolition: refusal of the supporting stairs, cancel, actual demolition with the refund, and a rebuild on the same world cell;\n - pan using move mode plus the wheel without Ctrl, and normal wheel zoom including the clamp boundaries, with the same world cell at the transformed pixels;\n - a formal save, then a separate-PID reader resume that preserves the target cell, facility ID, occupancy and judgement, and is then operated from the normal UI.\n - **Run the checker** on the new index: tools/check_p08_normal_placement_evidence.py --verify-only.\n - **If it is interrupted again:** record it as another incomplete attempt and retry it whole. Do not widen the deadlines.\n\n4. **Review, then integration:**\n - An independent Opus review of all five conditions with access to the raw proof, on the frozen source and the new evidence.\n - Then prepare-integration, current final verification and the ledger.\n\n**Still open:** Windows same-distribution/device verification, with no Mac substitution.",
|
||||||
|
"codex_model": "gpt-6.1-sol",
|
||||||
|
"codex_model_reason": "I kept the default, gpt-6.1-sol. No worker is dispatched now: this step is a Root native/OS validation on frozen source fd643f5, and the R13 interruption came from the environment (screen lock and display change), not from a product defect. If a later repair is ever needed, it would be a bounded UI/checker edit, which does not justify the extra time and usage of gpt-6-astra."
|
||||||
|
},
|
||||||
|
"root_interpretation": "Run full176 once before recollection and reuse only exact applicability. Caffeinate may prevent idle display/system sleep only; never disable lock/auth/security policy. R13 is incomplete history only."
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"decision": {
|
||||||
|
"action": "prepare-integration",
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"reason": "Read-only design review of the Root integration adapter for P08-03 at E=d369d1c, checked against direction 910bbd05 and tools/check_p08_normal_placement_evidence.py at E. This is a planning decision only. I do not run prepare-integration myself, and no worker is dispatched.\n\n**Verdict:** no defect blocks the adapter. Each requirement you listed is covered as follows.\n\n1. **All 5 conditions remain required.** The adapter calls the unchanged checker on the executed tree, gate.check(W, PROOF), and requires an empty deficit list.\n - check() at :633-1021 still enforces `index['conditions'] == CONDITIONS` (all 5) at :639.\n - It also checks source and input freshness (:653-654), the spec sha (:655), the marker (:656), and the commit against HEAD of W, which equals E (:659).\n - It also checks the raw native and OS PIDs, lifecycle, profile guard, strict marker, screenshots and transformed cells (:669-1016).\n - check() catches its errors and returns them as a list (:1020-1021), so `need(deficits == [])` is the right gate.\n2. **Source and inputs equal except progress line 3.**\n - `sources == idx['source_map']` is computed on the final tree with the checker's own runner.source_refs.\n - input_map(wt) must have the same roster as at E, and every value except PLAN must be equal. input_map (:143-149) includes the spec, marker contract, AGENTS, recorder, BASELINE and all of tests/fixtures/p08-03.\n - For PLAN: the line count must match, lines 1-2 and lines 4 onward must be byte-identical, and line 3 must start with '> ' in both versions. `a[2]` is line 3, so the indexing is correct.\n3. **Raw evidence stays immutable.**\n - The adapter checks the pinned INDEX_SHA and that `index.commit == E`.\n - It rehashes every artifact for size and sha, rejecting symlinks and paths that escape PROOF.\n - It only reads from PROOF and FULL. Its single write goes to the build directory, and that write is idempotent: it must match any existing file byte for byte.\n4. **Full 176-suite source equality.**\n - runner-input `selected_source_map == sources` (the final tree's map, which equals the E map).\n - runner-ended requires passed, engine_ended, 176 suites, 20488 strict checks, and no errors, failures, unexecuted tests or missing markers.\n - The receipt pins are rehashed.\n - The engine sha256 must match both the native run's engine sha256 and a fresh hash of the engine binary.\n5. **No fabricated reruns.** The report records `new_native_runs: 0`, `new_os_runs: 0` and `raw_evidence_modified: false`, and records E and F separately.\n6. **No false relabelling of the candidate.**\n - The final tree must equal Git's ordinary `merge-tree --write-tree` of main_base and E, so there are no hand edits in the merge.\n - The merge must have exactly two parents, with parents[1] == E.\n - For kind=integration, main must be at main_base. For kind=final, the registered candidate and main_base must match.\n - The scope stays macOS-only, and Windows stays open.\n - The adapter only intercepts the Runner's verify step for this project, this task and kind integration or final. Every other kind falls through to the original verify.\n\n**Non-blocking notes**\n- (a) The adapter ignores what `runner.has_evidence(...)` returns. If that function returns a bool rather than raising, both calls are no-ops. Wrap them as `need(runner.has_evidence(...), 'executed validation/review evidence')`.\n - Practical risk is low: the task is already reviewed at E, so that evidence exists.\n - I could not read the Runner core (verify, prepare, integrate, has_evidence) because file access is limited to the worktree. This is a context gap; Root should confirm this point there.\n- (b) `git merge-tree --write-tree` needs Git 2.38 or later.\n- (c) The source-map equality covers only the inventoried source. Paths outside it, such as docs or other tasks' files, can come from main. That is acceptable because the merge-tree equality forbids any manual merge edits.\n\n**Still pending after this step:** Runner integration and the current final verification under this adapter, the ledger, the main update through the Runner, and Windows same-distribution/device acceptance (stays open, with no Mac substitution). No change to the spec, denominator, budget or acceptance.",
|
||||||
|
"codex_model": "gpt-6.1-sol",
|
||||||
|
"codex_model_reason": "No Codex worker is dispatched by this decision; this is a Runner integration step only. I keep the default, gpt-6.1-sol, recorded for continuity. Nothing here needs implementation work or debugging across components, so Astra would cost more time and usage for no quality gain."
|
||||||
|
},
|
||||||
|
"root_followup": [
|
||||||
|
"Actual plan line3 is plain Japanese dated progress summary, not Markdown blockquote; strict prefix assertion corrected to the existing P08-03 progress phrase. All other lines must be byte equal.",
|
||||||
|
"Runner.has_evidence raises GateError on missing records; confirmed core source, no boolean no-op.",
|
||||||
|
"No worker dispatched; existing user main update authorization applies."
|
||||||
|
]
|
||||||
|
}
|
||||||
+13
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+12
File diff suppressed because one or more lines are too long
+12
File diff suppressed because one or more lines are too long
+7
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"action": "request-repair",
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"reason": "Root cause is in the test fixture, not Runtime. Runtime._build_facility_precheck (autoload/simulation_runtime.gd:7619) only checks path_service.has_cell for the stair landing. The test's diagnostic path injection at tests/transport/test_runtime_build_preview.gd:62-64 satisfies that check. Preview and command then both call ConstructionService.validate_placement (scripts/construction/construction_service.gd:56-108). That function runs _validate_cell_constraints (zone/layer/excavation/occupant) and _validate_support through world.validate_support. A path-only node at (-8,1,0) creates no world structural support, and (-8,2,0) is not shown to be a valid zone or excavated cell. So the precheck passes while validate_placement fails for both preview and command. Shared precheck behaviour is consistent, so there is no evidence of a production defect.\n\nRepair, confined to tests/transport/test_runtime_build_preview.gd (Runtime unchanged, no new values):\n(1) Replace the path_service.rebuild_graph injection at lines 61-64 with an actual structural fixture that mirrors tests/transport/test_runtime_stairs.gd:24-25,129-143. After _reset, submit a real build_facility for guest_stairs at (4,1,0). Then advance the clock by the registered definition_registry.get_facility(&\"guest_stairs\").build_minutes, read from the registry and not hard-coded. Assert that the facility exists at that origin. Then run the positive preview and command for guest_stairs at (4,2,0), rotation 0. If any budget is needed, take it from the registered construction_cost and the real fixture gold. Do not invent values.\n(2) On the positive case, add bounded failure diagnostics: one line with can_build, error_codes, the first reason code/message, the command code (details.reason or Code key) and the command message.\n(3) In _pure_preview, print one mandatory, bounded stdout line per preview for Root's registered proof. It must contain the case id/cell/rotation; SHA-256 via HashingContext of the exact var_to_bytes for snapshot before/after and command-queue snapshot before/after; command metadata and processed counts before/after; event counts before/after; and the report's can_build and error_codes. Do not print full snapshots.\n(4) Keep every existing negative case, precedence order, code/message/details agreement and purity check unchanged, and keep the real elevator busy case. Do not reset or reimplement counters, and do not loosen any assertion.\n\nWorker does static review only, with no Godot/native runs. Root then runs the corrected target guarded and isolated, followed by the remaining impact tests. No full regression before the P08 UI freeze.",
|
||||||
|
"codex_model": "gpt-6.1-sol",
|
||||||
|
"codex_model_reason": "The repair is a small edit to one test file with a confirmed root cause, and an existing fixture pattern (test_runtime_stairs.gd) shows exactly how to do it. No production logic, cross-module design or ambiguous semantics are involved. The default model is enough for quality, and gpt-6-astra would only add time and usage."
|
||||||
|
}
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"action": "run",
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"reason": "Run the recorded repair on the preserved task P08-03-RTPREVIEW, which is in state repair_ready. I checked the claims against the source. In tests/transport/test_runtime_build_preview.gd:61-64 the positive case only puts a diagnostic walkable node into path_service.rebuild_graph at (-8,1,0). That clears the landing precheck, but it creates no world structural support, so ConstructionService.validate_placement rejects both the preview and the command. Runtime behaves consistently, so the defect is in the test fixture. tests/transport/test_runtime_stairs.gd:24-25 and 129-140 show the working pattern: a real guest_stairs at (4,1,0) and then (4,2,0), built from the existing fixture.\n\nWORKER DIRECTIONS. Edit only tests/transport/test_runtime_build_preview.gd. autoload/simulation_runtime.gd stays unchanged. Add no new rule values, codes, messages or order.\n\n(1) Delete lines 61-64, which hold the diagnostic walkable/rebuild_graph injection and its comment. In their place, call _reset() and build a real structural fixture. Submit build_facility for guest_stairs at Vector3i(4,1,0) with rotation 0 through the existing _command helper. Check is_success and include the message on failure. Advance _clock by the registered build time, read as _runtime.definition_registry.get_facility(&\"guest_stairs\").build_minutes; do not hard-code it. Then check that a facility exists whose origin is (4,1,0) in _runtime.construction_service.get_facilities(). After that, run the positive _pure_preview and _command for guest_stairs at Vector3i(4,2,0), rotation 0, and keep the agreement check. If the budget matters, rely only on the real fixture gold and the registered construction_cost. Do not invent values.\n\n(2) Positive case: if the agreement fails, print one bounded diagnostic line. It must contain report can_build, error_codes, the first reason's code and message (or none), the command code using the same expression as _failure_case (details.reason, or else the CommandResult.Code key), and the command message.\n\n(3) In _pure_preview, always print one bounded stdout line per preview for Root's proof. Include the case id, cell and rotation. Include SHA-256 hex digests computed with HashingContext (HASH_SHA256) over the exact var_to_bytes already computed for the snapshot before/after and the command_queue snapshot before/after. Capture the after bytes once and use them for both the hash and the existing equality checks. Also include the accepted-command metadata count and processed_count before/after, the domain_events recent_events count before/after, and the report's can_build and error_codes. Never print full snapshots or byte arrays.\n\n(4) Keep everything else exactly as it is: every existing negative _failure_case and its order/precedence, the cell (-8,2,0) for the negatives, the code/message/details agreement checks, the purity checks, the unknown-definition summary check and the real elevator busy case. Do not reset or reimplement counters, and do not loosen, remove or skip any assertion. The .uid file is untouched unless it is missing.\n\nVERIFICATION. The worker does a static diff review only. It runs no Godot, native, impact or full tests. In the handoff, the worker reports the diff and lists every check that has not been run as unrun. Root then runs the corrected target guarded and isolated, then the remaining impact tests. No full regression before the P08 UI freeze. Independent Opus review and integration remain Runner gates. This decision changes no scope, acceptance denominator, budget, cap or approval.",
|
||||||
|
"codex_model": "gpt-6.1-sol",
|
||||||
|
"codex_model_reason": "This is a small, single-file test-fixture edit, and the root cause is already confirmed. test_runtime_stairs.gd already shows the exact pattern to copy, and the work touches no production logic, cross-module design or unclear semantics. The default model is good enough for this, and gpt-6-astra would only cost more time and usage."
|
||||||
|
}
|
||||||
+80
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"original_unit_credit": 0,
|
||||||
|
"actual_pid": 81875,
|
||||||
|
"cua_tool_call_ids": [
|
||||||
|
"call_0b81ac8cb55e4cc9b8f23d3164356a0c",
|
||||||
|
"call_ed2ec1b23c224908bf0b70314d07122e",
|
||||||
|
"call_69094da2e6ed48e0aba22a9424b4ccd3",
|
||||||
|
"call_847d7677c397462f803d2a4248395848",
|
||||||
|
"call_f61d6ec7f6134abf8d2721f798fd25c0",
|
||||||
|
"call_0810a2a8d390433494925dcc42e2da37"
|
||||||
|
],
|
||||||
|
"observation": "On actual 1280x752 screenshot, normal build palette open click(42,711), right horizontal scrollbar track click(1257,720) revealed row end, left track click(50,720) restored reception visibly, click(274,693) selected reception. No build/save operation. The normal palette supports the required return; no product change justified by R15. These pixels belong only to this diagnostic geometry. Next collector must derive actual bar geometry; never transfer fixed pixels to the 640x392 R15 image.",
|
||||||
|
"ended": {
|
||||||
|
"exit_code": 0,
|
||||||
|
"error": null,
|
||||||
|
"engine_ended": true,
|
||||||
|
"stage_unchanged": true,
|
||||||
|
"default_player_unchanged": true,
|
||||||
|
"formal_acceptance": false
|
||||||
|
},
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/controller.py",
|
||||||
|
"sha256": "71ee92f961b94305b5f24e3165855c3c27ad6309d036706c973aa843924c516d",
|
||||||
|
"bytes": 2062
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/cua-actions.json",
|
||||||
|
"sha256": "b9c3addf8ba1838fffc41d0ff465e47d609d355d2312b8953f4f6d5946f58f63",
|
||||||
|
"bytes": 395
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/ended.json",
|
||||||
|
"sha256": "7d4c4e808195f02c0dffab3bce915f897decfc48a44233ddb87181ca61c2fa3d",
|
||||||
|
"bytes": 155
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/engine.log",
|
||||||
|
"sha256": "7500d649d432eba7b4541f9bc73673bff876fe24590a967e02afc956b62f3e45",
|
||||||
|
"bytes": 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/initial.png",
|
||||||
|
"sha256": "5532dd183209dec87b798b608fa70d605eb051719b62471f4adb5ccd7e985823",
|
||||||
|
"bytes": 166964
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/palette-left-return.png",
|
||||||
|
"sha256": "a5606b425ff41214ccee9f6e05f26af1870c358d40e74e15f258a4ca96e15842",
|
||||||
|
"bytes": 186983
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/palette-right.png",
|
||||||
|
"sha256": "56a5c421f853e9f6ed3a37d98cf5eb89f114c4cee5a7b066df2601b6fef43efd",
|
||||||
|
"bytes": 188912
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/palette-start.png",
|
||||||
|
"sha256": "414137a2c82924d61304102dbc2787f8eea72e5be0181298f5835eb87712d1e0",
|
||||||
|
"bytes": 186786
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/probe.gd",
|
||||||
|
"sha256": "c06c9628942afc5a464400e131bb2ba274164586ff1a2959645006e57b653959",
|
||||||
|
"bytes": 248
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/reception-selected.png",
|
||||||
|
"sha256": "2f512cc49876889958add15435f6f6c10adf00f4be47cbc1a5c383235aecdaf5",
|
||||||
|
"bytes": 197541
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-palette-short-diagnostic-r01/started.json",
|
||||||
|
"sha256": "a4af0ed2dccca2cba4b2830838beab09979c99788c9cd58d8355b4e20cbf1531",
|
||||||
|
"bytes": 155975
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+74
@@ -0,0 +1,74 @@
|
|||||||
|
{
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"attempt": "R15",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"original_unit_credit": 0,
|
||||||
|
"writer": {
|
||||||
|
"actual_pid": 67632,
|
||||||
|
"owner_pid": 67486,
|
||||||
|
"exit_code": 1,
|
||||||
|
"engine_ended": true,
|
||||||
|
"error": "AssertionError: ordinary native OS exit0",
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"passed": false
|
||||||
|
},
|
||||||
|
"failure": "Request31 reveal_palette was acknowledged by Root before the reception was visibly revealed; request32 target screen x=-1105 was offscreen. Normal scroll/drag/key attempts did not establish the intended selection. Missing ACK32 exceeded the 300s endpoint deadline; fixture emitted timeout and chosen production definition failure before termination. No Mac lock was observed during this sequence.",
|
||||||
|
"invalid_receipt": "os-pair/writer-request-0031/ack.json is historical actual action receipt only; it must not be treated as successful reveal evidence.",
|
||||||
|
"reuse": "Frozen full176 regression and R10 native evidence remain eligible only on exact source/input/config/environment fingerprints. R15 cannot be spliced with older OS attempts.",
|
||||||
|
"remaining": [
|
||||||
|
"fresh contiguous normal OS all five conditions",
|
||||||
|
"checker acceptance",
|
||||||
|
"independent Opus review",
|
||||||
|
"integration and final verification",
|
||||||
|
"ledger closure"
|
||||||
|
],
|
||||||
|
"next": "Actual Opus commander diagnosis requested on existing P08-03; no duplicate worker or whole rerun launched.",
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-resume-ended.json",
|
||||||
|
"sha256": "f8f54429b765be11f3e3d9d428b926feb943718386bba4c62eca1ef26d2c7ca0",
|
||||||
|
"bytes": 197
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-runs/writer/ended.json",
|
||||||
|
"sha256": "4d1e0e6acbc44b18f034254d9d3a5fcab9bef36002236e7085349ff88b581148",
|
||||||
|
"bytes": 1320522
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-runs/writer/engine-native.log",
|
||||||
|
"sha256": "dce51d1d8ee4e66b422bbd597a7014d07d31943df8f3fec093aa03a9921f245e",
|
||||||
|
"bytes": 7784
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0031/request.json",
|
||||||
|
"sha256": "343eddb6e1afc8c8918c4d3b49f57022fd2a0e949b0c9f3da700a699264f30e0",
|
||||||
|
"bytes": 579
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0031/ack.json",
|
||||||
|
"sha256": "af87f224228f2b82b94d2a02b16b5d3cf87fb00dcbc02b5ed543fac4e78addb9",
|
||||||
|
"bytes": 335
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0031/screen-after.png",
|
||||||
|
"sha256": "703ab6c3b46081d5f8a9214a11ca74e6983544821b1c248392c27310907aeedd",
|
||||||
|
"bytes": 64891
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0032/request.json",
|
||||||
|
"sha256": "dd9de613a37304b604868cb9465911d64f5acd7fab86402f090b626b50dfa4d8",
|
||||||
|
"bytes": 722
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0032/cua-actions.json",
|
||||||
|
"sha256": "81392968431a2bf0c96f290742bf89e243b22d152a2232139c1645db72d374d9",
|
||||||
|
"bytes": 1618
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r15-calibrated/os-pair/writer-request-0032/screen-after.png",
|
||||||
|
"sha256": "8a4928a5cf98f85b6016c93b02e0d7d15f8f309fc7ba2059995cc2376bc7dd37",
|
||||||
|
"bytes": 63337
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# Repair12 recorded direction: context gap
|
||||||
|
|
||||||
|
Status: blocked; no checker implementation submitted. Inspected checkout HEAD
|
||||||
|
`31aa7706d28a92e313c432d5a62e35d19503dcc3`. Contract base remains
|
||||||
|
`12430ba89970bda349781e51157e72e48a4ac06f`.
|
||||||
|
|
||||||
|
The instruction requires JPEG SOF dimensions to match recorded before/after
|
||||||
|
dimensions. The available canonical R09 collection has 69 request.json,
|
||||||
|
69 ack.json and 69 input-receipt.json files. None contains recorded screenshot
|
||||||
|
before/after dimensions. The two indexed root-cua-ack-controller Python sources
|
||||||
|
also write no such dimensions. The concrete example
|
||||||
|
`os-pair/writer-request-0058/screen-before.png` has JPEG SOF dimensions
|
||||||
|
1280 x 752; its request.json records window_size 1280 x 720. Window size
|
||||||
|
therefore cannot substitute for screenshot dimensions. Extracting both sides
|
||||||
|
of a comparison from the same JPEG would not independently bind dimension drift.
|
||||||
|
|
||||||
|
Required context: identify and provide the existing, attributable R09 record
|
||||||
|
of before/after screenshot dimensions and its relationship to these 138 image
|
||||||
|
files. Do not invent records or change originalR09. If no such record exists,
|
||||||
|
the owner must resolve this requirement explicitly; the worker cannot silently
|
||||||
|
replace it with SOF self-consistency or window dimensions.
|
||||||
|
|
||||||
|
Original root access returned `Operation not permitted`:
|
||||||
|
`/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09`.
|
||||||
|
The canonical copy was readable at
|
||||||
|
`/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence`.
|
||||||
|
Original/canonical byte equality was consequently not established by this worker.
|
||||||
|
No security settings were changed. Pillow is unavailable in the worker's Python.
|
||||||
|
|
||||||
|
Read-only Python inspection established:
|
||||||
|
|
||||||
|
- All 753 files listed in the canonical index match their indexed size and
|
||||||
|
recomputed SHA256. This is an indexed-byte audit, not a complete file-set gate
|
||||||
|
or acceptance result.
|
||||||
|
- Every current source_map member and input member matches the R09 index,
|
||||||
|
including product source, fixtures, controller, recorder, marker contract,
|
||||||
|
spec and inputs. The engine binary matches runner-input.json's engine SHA256.
|
||||||
|
- os-proof.json names `os-runs/writer/ended.json` and
|
||||||
|
`os-runs/reader/ended.json`. Recorded owner control paths use
|
||||||
|
ORIGINAL_ROOT/os-runs/{writer,reader}/teardown/control.json.
|
||||||
|
The original absolute varbytes pin must remain enforced.
|
||||||
|
|
||||||
|
Only this scoped document was added. Checker, tests, product and evidence bytes
|
||||||
|
were not edited. No tests, native engine, OS replay, regression, git writes,
|
||||||
|
Runner operations or agents were run. These inspections are not JPEG validity
|
||||||
|
checks and are not sufficient for acceptance.
|
||||||
|
|
||||||
|
All requested validator repairs and negative tests remain pending. Root's final
|
||||||
|
full175, R09 re-check, independent Opus review and integration remain required.
|
||||||
|
Preview/domain-status disagreement and Windows same-distribution remain open.
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"candidate": "f5f85ae08c1c6c9c1ec511f13a7215170d7d8d49",
|
||||||
|
"model": "gpt-6.1-sol selected by actual Opus5.5 run772d6339a38748fe9eabef13c57c0b56",
|
||||||
|
"worker_run": "b951129f945b455cab12632e84e0b2e7",
|
||||||
|
"root_local": {
|
||||||
|
"tests": 142,
|
||||||
|
"passed": 142,
|
||||||
|
"failed": 0,
|
||||||
|
"exit_code": 0,
|
||||||
|
"source_unchanged": true,
|
||||||
|
"command": [
|
||||||
|
"python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"changed_files": [
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md",
|
||||||
|
"docs/plans/original-completion-2026-10-02/execution/p08-03/implementation.json",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py",
|
||||||
|
"tests/fixtures/p08-03/passive_placement.gd",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"unit_credit": 0,
|
||||||
|
"applicability": "fd643 full176 remains old-version evidence. Fixture/checker source changed in f5f85ae, so mandatory final regression must execute once on frozen final source. Native/OS source map must likewise match f5f85ae.",
|
||||||
|
"direct_parse_attempt": "Direct check-only in unimported worker checkout emitted unresolved class/type diagnostics; not a product-defect finding. Standard imported parse/native collection on final source is running separately.",
|
||||||
|
"short_os_diagnostic": "Normal scrollbar right/left tracks and reception selection actually verified on fd643; this is a mechanism diagnosis only, not f5f85ae acceptance.",
|
||||||
|
"remaining": [
|
||||||
|
"exact final imported parse/native",
|
||||||
|
"fresh contiguous normal OS all five conditions",
|
||||||
|
"checker acceptance",
|
||||||
|
"one final all-suite regression",
|
||||||
|
"independent Opus review",
|
||||||
|
"integration/final verification/ledger"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair19-root-local-f5f85ae/ended.json",
|
||||||
|
"sha256": "a7792ea8f893c6565d49cd902b195341ba1ae84c3c55eccf784cb0b3520e7a01",
|
||||||
|
"bytes": 136
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair19-root-local-f5f85ae/started.json",
|
||||||
|
"sha256": "4705a65534e121af0b4f359f3d96e127f457a2ac631d8dfe5b2ab19034d692cc",
|
||||||
|
"bytes": 822
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair19-root-local-f5f85ae/stdout.log",
|
||||||
|
"sha256": "08fab8b130033890eaa5e977ca458ba6bcf317af86a237921e53d930a6e0c052",
|
||||||
|
"bytes": 244
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair19-root-local-f5f85ae/unimported-direct-parse.log",
|
||||||
|
"sha256": "c4cb5a93de311af2166b460f4a628c5238fbe7a0ef3bbbf0256011d2990097d8",
|
||||||
|
"bytes": 2478
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"input_candidate": "f5f85ae08c1c6c9c1ec511f13a7215170d7d8d49",
|
||||||
|
"checker_sha256": "bc6bc7109bc754ad8f9c46e6492e044264226545a3c9e823a519ab9f0dd23c88",
|
||||||
|
"native_index_sha256": "2cbb251414ce5bff46538c9fc59c7eed82b83324f4e24a293d53cd71744fe10c",
|
||||||
|
"call": "check(frozen_f5f85ae_worktree, actual_native_f5f85ae_r16)",
|
||||||
|
"actual_deficits": [
|
||||||
|
"R09 reuse candidate"
|
||||||
|
],
|
||||||
|
"diagnosis": "Historical R09 pins exist and check() selects R09 reuse by existence, so genuine fresh index with current commit is rejected before evaluating required fresh proof. Fresh screenshot branch supports PNG only while actual CUA screenshots are unmodified JPEG bytes. Neither issue can be solved by fake old version binding or transcoding evidence.",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"unit_credit": 0,
|
||||||
|
"controlled_full_stop": {
|
||||||
|
"output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-f5f85ae-r01",
|
||||||
|
"owner_pid": 88736,
|
||||||
|
"signal": "SIGINT after command identity verification",
|
||||||
|
"actual_suites_attempted": 14,
|
||||||
|
"passed": false,
|
||||||
|
"strict_accepted_checks": 649,
|
||||||
|
"error": "AssertionError: first strict failed phase stops without retry: 013",
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"guard_errors": [],
|
||||||
|
"ended_sha256": "288ee910a325fcb73cde4a1798966ef22a71ee01f47457e0c4f4ed7bf57d4d50",
|
||||||
|
"interpretation": "Run interrupted by Root at phase013 to avoid continuing before the required checker repair. Missing marker is not a product chapel-defect claim; no full-regression acceptance."
|
||||||
|
},
|
||||||
|
"registered_validation_failure": "f2d59df6a3c34c0e93b15b1a05cfa533",
|
||||||
|
"next": "Existing task normal transition repair20, actual Opus direction requested; no new task or duplicate implementation. Checker/tests/docs only, keep fixture19 and product unchanged."
|
||||||
|
}
|
||||||
+149
@@ -0,0 +1,149 @@
|
|||||||
|
{
|
||||||
|
"candidate": "d369d1c399f7506bdb8d980b642ad0da216d14f4",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"unit_credit": 0,
|
||||||
|
"local": {
|
||||||
|
"tests": 153,
|
||||||
|
"passed": 153,
|
||||||
|
"failed": 0,
|
||||||
|
"source_unchanged": true,
|
||||||
|
"py_compile_exit": 0
|
||||||
|
},
|
||||||
|
"native_phases": [
|
||||||
|
{
|
||||||
|
"phase": "import",
|
||||||
|
"actual_pid": 99144,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": null,
|
||||||
|
"reported_failures": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "parse",
|
||||||
|
"actual_pid": 99251,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": 313,
|
||||||
|
"reported_checks": null,
|
||||||
|
"reported_failures": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "writer",
|
||||||
|
"actual_pid": 99364,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": 196,
|
||||||
|
"reported_failures": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"phase": "reader",
|
||||||
|
"actual_pid": 99451,
|
||||||
|
"passed": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_parse_checks": null,
|
||||||
|
"reported_checks": 96,
|
||||||
|
"reported_failures": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"native_error": null,
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"fresh_checker_routing": {
|
||||||
|
"actual_deficits": [
|
||||||
|
"unsafe/missing artifact"
|
||||||
|
],
|
||||||
|
"exception_trace": [
|
||||||
|
{
|
||||||
|
"function": "require",
|
||||||
|
"line": 55,
|
||||||
|
"artifact_name": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "artifact",
|
||||||
|
"line": 661,
|
||||||
|
"artifact_name": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "document",
|
||||||
|
"line": 667,
|
||||||
|
"artifact_name": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"function": "check",
|
||||||
|
"line": 907,
|
||||||
|
"artifact_name": "pair/formal/thumbnail.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meaning": "Fresh source/input/engine/handler typed-state gates traversed; failure is exactly at absent OS proof line907, no R09 misrouting. OS is required and not waived."
|
||||||
|
},
|
||||||
|
"mandatory_full_regression": "Still required once on frozen d369d1c final source; f5 interrupted attempt and fd643 prior pass do not prove this version.",
|
||||||
|
"remaining": [
|
||||||
|
"fresh contiguous normal OS all5 and separatePID reader",
|
||||||
|
"full176 complete",
|
||||||
|
"checker complete",
|
||||||
|
"independent Opus review",
|
||||||
|
"integration/final/ledger"
|
||||||
|
],
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/index.json",
|
||||||
|
"bytes": 209920,
|
||||||
|
"sha256": "16c3577ca226173fea65df8595ab42a8b257ba50166da1a8564e6eda126694a1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runner-input.json",
|
||||||
|
"bytes": 316332,
|
||||||
|
"sha256": "cd8e6b644f68abad495b4db161b2ff6f9a3fdbaf8807781d2a526b2c1f19b0b3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runner-ended.json",
|
||||||
|
"bytes": 3196,
|
||||||
|
"sha256": "3505a1ed406dbc0dc5264c2a4c1cd5c69fe00dc808ab1557a7bd7485517d8f6d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair20-root-local-d369d1c/started.json",
|
||||||
|
"bytes": 704,
|
||||||
|
"sha256": "3ec9116ece230d12ecaf1ab61340c816893ba5844227fac02444ae375942ac07"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair20-root-local-d369d1c/ended.json",
|
||||||
|
"bytes": 136,
|
||||||
|
"sha256": "7998e791f00b093eaa6c91bb5d1f3614e89a779c399af52b2012d72849606268"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair20-root-local-d369d1c/stdout.log",
|
||||||
|
"bytes": 255,
|
||||||
|
"sha256": "d4a9d51cfb91e27c98198f20cb2289a2fad194702fc8b6a9c2808c23273c2e1f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-repair20-root-local-d369d1c/pycompile.json",
|
||||||
|
"bytes": 527,
|
||||||
|
"sha256": "f30f5abbda366d83534c2c77f425e0f5ef6783fde3b61bdc4fd267d11ce08d7c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runs/import/import-receipt.json",
|
||||||
|
"bytes": 9622,
|
||||||
|
"sha256": "30a8498b547da7ce2dbdd9d1af61f8eefb1e13f2e2789f4828b1ae645d1de187"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runs/parse/parse-receipt.json",
|
||||||
|
"bytes": 12874,
|
||||||
|
"sha256": "b1233a94fb3ff13b3905c0cbd17857b4ecfe0301be0ffac3663088dbfc028af9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runs/writer/writer-receipt.json",
|
||||||
|
"bytes": 28159,
|
||||||
|
"sha256": "e47878824cc3308bf452d14c2aa0e59bbee586911bcf866426ea023062bf1194"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "artifacts/original-completion-2026-10-02/p08-03-native-d369d1c-r17/runs/reader/reader-receipt.json",
|
||||||
|
"bytes": 26061,
|
||||||
|
"sha256": "1d23f1732aa9b5eb7bcfdbe5026175d6bd874d906c7ed13b9204ee33c7570496"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
|
||||||
|
"registered_validation": "89dfca90b9d64eb780460589144837ee-validation.json",
|
||||||
|
"actual_deficits": [
|
||||||
|
"partial demolition/completion"
|
||||||
|
],
|
||||||
|
"cause_evidence": {
|
||||||
|
"checker": "tools/check_p08_normal_placement_evidence.py:173 unconditionally requires construction facility IDs == FacilityService operational IDs",
|
||||||
|
"raw_snapshot": "pair/reader-checkpoint.json",
|
||||||
|
"construction_only_ids": [
|
||||||
|
"facility_00000002",
|
||||||
|
"facility_00000003"
|
||||||
|
],
|
||||||
|
"definitions": [
|
||||||
|
"guest_stairs",
|
||||||
|
"guest_stairs"
|
||||||
|
],
|
||||||
|
"runtime_source": "autoload/simulation_runtime.gd:10682-10720 separates supported schema proxies into infrastructure projector and ordinary facilities into operational service"
|
||||||
|
},
|
||||||
|
"requested_action": "Verify current intended proxy projection contract from source, then make checker faithfully require operational membership for ordinary definitions and exact projected topology for supported infrastructure proxies. Do not simply skip stairs or drop occupancy/loss/demolition invariants. Add real-snapshot and missing/extra/wrong projected topology negative tests. Same targeted fixture repair batch; no product scope expansion.",
|
||||||
|
"formal_acceptance": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
# Root collection protocol (not executed by worker)
|
||||||
|
|
||||||
|
R02 repair requires a fresh exact-source collection. The supplied R02 reader
|
||||||
|
failure is historical evidence, not a PASS for the repaired candidate.
|
||||||
|
Keep every raw postsave/postload snapshot and returned Dictionary. In each
|
||||||
|
handler and OS pair the shared fixture now also emits writer-presave,
|
||||||
|
writer/reader-formal-model, expected-operation, operation-actual and
|
||||||
|
operation-comparison artifacts. Formal models come from the read-only normal
|
||||||
|
`SaveService.inspect_snapshot` API. `writer-checkpoint.var` remains the raw
|
||||||
|
postsave state; never replace it with the presave/formal model.
|
||||||
|
The checker reconstructs one source-defined notification from each actual
|
||||||
|
returned Dictionary and compares the complete expected typed/raw model.
|
||||||
|
Counts come from the saved model, not the historical 161/162 trace. Preserve
|
||||||
|
all artifacts on an unknown difference and record the checker difference
|
||||||
|
paths with the corresponding actual/expected files before another repair.
|
||||||
|
The collector and Runtime/SaveService/UI remain unchanged in this repair.
|
||||||
|
|
||||||
|
Read the fixed spec and condition matrix first. Freeze/commit through the
|
||||||
|
authorized Root workflow. The worker has not committed or run this procedure.
|
||||||
|
Use a clean checkout at the exact submitted HEAD, an installed native Godot,
|
||||||
|
and a new output directory **outside** the source checkout:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
python3 tools/run_p08_normal_placement.py --collect \
|
||||||
|
--project-root /absolute/frozen/checkout \
|
||||||
|
--output /absolute/build/p08-normal-placement-evidence \
|
||||||
|
--commit EXACT_FROZEN_HEAD --godot /absolute/Godot \
|
||||||
|
--input-mode native_os
|
||||||
|
BUILD_OUTPUT_DIR=/absolute/build python3 tools/check_p08_normal_placement_evidence.py \
|
||||||
|
--verify-only --project-root /absolute/frozen/checkout
|
||||||
|
```
|
||||||
|
|
||||||
|
`--input-mode handler` collects only the strict headless pair. Its index has
|
||||||
|
no OS proof and intentionally cannot pass the whole checker. `native_os`
|
||||||
|
first collects that same headless pair, then separately starts the passive
|
||||||
|
nonheadless writer/reader. Import and handler phases use unchanged
|
||||||
|
`execute_phase` guards, markers, owner/audio proof. OS phases reuse the
|
||||||
|
P08-02 `collect_native_os.py` / passive recorder protocol, read-only as reuse
|
||||||
|
sources, with P08-03 arguments and paths; no new OS automation framework.
|
||||||
|
|
||||||
|
Before native launch the controller checks live engines, exact HEAD, clean
|
||||||
|
checkout, copied source inventory, disk admission and default player.
|
||||||
|
Each OS role gets a UUID private profile. Writer receives the handler's
|
||||||
|
`pair/initial-formal`; reader receives the OS writer's `os-pair/formal`.
|
||||||
|
All four formal members are copied and SHA-checked. The staged project gets
|
||||||
|
only private-profile settings and is restored in finally. Only captured
|
||||||
|
Popen children are cleaned by `owned_outer.finish_captured`.
|
||||||
|
|
||||||
|
The repaired handler also saves only inside its private `user://` profile,
|
||||||
|
then exports `initial-formal` and `formal` to the evidence directory.
|
||||||
|
`formal.bak`, `*-slot-metadata.json` (verbatim manifest), and `*-export.json`
|
||||||
|
retain backup/metadata bytes, source paths and SHA pins. Initial backup absence
|
||||||
|
is recorded explicitly. Each role's `*-save-results.json` references actual
|
||||||
|
typed result JSON and SHA-pinned raw Variant files, including failed returns.
|
||||||
|
Inspect the full returned dictionaries and paths on the next native run.
|
||||||
|
The r01 dictionaries were never captured; do not reconstruct them or append
|
||||||
|
new results to the historical r01 raw evidence.
|
||||||
|
|
||||||
|
Actual argv is `[engine, --path, stage, --script, passive_os.gd]`, with no
|
||||||
|
headless flag or headless proof gate. `started.json`, `process-started.json`,
|
||||||
|
`ended.json`, raw engine log, actual profile/engine report, source/stage/default
|
||||||
|
player inventories and ordinary owner/audio records remain in the evidence.
|
||||||
|
Controller and recorder SHA appear in start/end documents. Each OS child
|
||||||
|
has a 2400-second total wait recorded as timeout_seconds in start/end receipts,
|
||||||
|
using the same value passed to process.wait. Each acknowledgement retains its
|
||||||
|
300-second bound; provider 900 and validation 180 remain unchanged.
|
||||||
|
Timeout/error preserves failure records and cleans only owned children.
|
||||||
|
|
||||||
|
## CUA request / read-only acknowledgement bridge
|
||||||
|
|
||||||
|
The collector prints `waiting_for_root_cua`; the recorder prints each exact
|
||||||
|
request filename and writes:
|
||||||
|
`os-pair/{writer|reader}-request-NNNN/request.json`.
|
||||||
|
It contains PID, sequence, action, target window, instructions and applicable
|
||||||
|
expected world cell, transformed viewport/screen coordinate, window/screen
|
||||||
|
scale. The recorder waits; it never clicks or changes Accessibility settings.
|
||||||
|
|
||||||
|
Root uses its existing CUA tool on the indicated PID/window. A request may
|
||||||
|
ask for normal palette scrolling, a button/cell click, ordinary non-Ctrl
|
||||||
|
wheel, normal manual load, or normal play/speed/pause until construction
|
||||||
|
finishes. Modal buttons include their own window ID and screen transform.
|
||||||
|
If a cell is clipped, the recorder first asks for ordinary zoom-out framing,
|
||||||
|
then recomputes coordinates. Do not substitute old pixels or injected input.
|
||||||
|
Capture real CUA screenshots before and after each request. Retain the raw
|
||||||
|
CUA result and tool-call identity; never manufacture a receipt to advance.
|
||||||
|
|
||||||
|
Root writes its own receipt file within the evidence directory. The bridge
|
||||||
|
envelope references that raw tool call and records:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"method": "native_os",
|
||||||
|
"target_pid": 123,
|
||||||
|
"timestamp_ns": 123456789,
|
||||||
|
"collector_pid": 456,
|
||||||
|
"tool_name": "actual CUA tool name",
|
||||||
|
"tool_call_id": "actual tool call identity",
|
||||||
|
"events": [{"type": "actual input event", "raw_receipt": "retained raw CUA result"}]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
After completing the requested operation, Root writes `ack.json` beside
|
||||||
|
the request. All artifact references are relative to the evidence root:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"target_pid": 123,
|
||||||
|
"sequence": 1,
|
||||||
|
"request_sha256": "actual request file SHA-256",
|
||||||
|
"input_receipt": "root-receipts/writer-0001.json",
|
||||||
|
"screen_before": "root-receipts/writer-0001-before.png",
|
||||||
|
"screen_after": "root-receipts/writer-0001-after.png"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
These numbers/strings are format examples, never evidence. Recorder and
|
||||||
|
controller only **read** Root's acknowledgement/receipt files. The recorder
|
||||||
|
separately retains actual Godot input observations and world selection,
|
||||||
|
whole typed/Variant snapshots, displayed reasons and Runtime results.
|
||||||
|
The checker verifies request/ack hash and sequence/PID binding, raw input
|
||||||
|
presence, PNG structure/CRC, affine coordinate conversions, formal members,
|
||||||
|
model invariants, distinct processes, native lifecycle and real owner proof.
|
||||||
|
Independent review must match tool-call identities/raw CUA results and actual
|
||||||
|
screenshots; an integrity checker is not an OS attestation authority.
|
||||||
|
|
||||||
|
Keep final requests (including save/load) as well as row-specific requests.
|
||||||
|
Do not edit evidence after collection to force a pass. Correct source/input
|
||||||
|
defects through the fixed repair workflow. GDScript parsing, actual native
|
||||||
|
and OS success, full regression, review and integration are all pending.
|
||||||
|
|
||||||
|
R06 calibration correction (ROOT_NATIVE_R06_OS_TIMEOUT.json): the engine
|
||||||
|
viewport_to_screen affine matrix [a,b,c,d,tx,ty] maps viewport (x,y) to
|
||||||
|
(a*x+c*y+tx, b*x+d*y+ty) in engine coordinates. It reports identity in the
|
||||||
|
real window and does not include physical stretch or the screenshot titlebar.
|
||||||
|
Keep 1440x810 virtual coordinates separate from 1280x720 window content and
|
||||||
|
1280x752 screenshot coordinates. For this measured window, apply scale 8/9
|
||||||
|
(approximately 0.8889), then add 32 pixels to screenshot y for the titlebar.
|
||||||
|
For modal controls, first apply the dialog offset reported by Godot, then
|
||||||
|
physical stretch and titlebar. Desktop CUA coordinates additionally require
|
||||||
|
the observed screenshot/window origin. Retain actual CUA coordinates, raw
|
||||||
|
screenshots and window geometry; recalibrate whenever geometry changes.
|
||||||
|
guide_rect remains in viewport coordinates. Preserve historical failed
|
||||||
|
evidence: R06 request 33 was unacknowledged after PID 17863 ended and cannot
|
||||||
|
count as evidence. Fresh guarded native/OS collection, full regression,
|
||||||
|
independent review and integration remain pending.
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"actual_jpeg_controls": [
|
||||||
|
{
|
||||||
|
"geometry": {
|
||||||
|
"window_size": [
|
||||||
|
1920,
|
||||||
|
962
|
||||||
|
],
|
||||||
|
"window_position": [
|
||||||
|
0,
|
||||||
|
62
|
||||||
|
],
|
||||||
|
"screenshot_pixels": [
|
||||||
|
1920,
|
||||||
|
994
|
||||||
|
],
|
||||||
|
"reported_screen_scale": 1,
|
||||||
|
"backing_scale": 1,
|
||||||
|
"titlebar_pixels": 32,
|
||||||
|
"canvas_stretch": 1.1876543209876542
|
||||||
|
},
|
||||||
|
"point": [
|
||||||
|
542.758024691358,
|
||||||
|
643.6419753086419
|
||||||
|
],
|
||||||
|
"changed_reported_scale_rejected": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"geometry": {
|
||||||
|
"window_size": [
|
||||||
|
1280,
|
||||||
|
720
|
||||||
|
],
|
||||||
|
"window_position": [
|
||||||
|
1664,
|
||||||
|
574
|
||||||
|
],
|
||||||
|
"screenshot_pixels": [
|
||||||
|
1280,
|
||||||
|
784
|
||||||
|
],
|
||||||
|
"reported_screen_scale": 2,
|
||||||
|
"backing_scale": 1,
|
||||||
|
"titlebar_pixels": 64,
|
||||||
|
"canvas_stretch": 0.8888888888888888
|
||||||
|
},
|
||||||
|
"point": [
|
||||||
|
1241.7777777777776,
|
||||||
|
743.5555555555555
|
||||||
|
],
|
||||||
|
"changed_reported_scale_rejected": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"unknown_format_rejected": true,
|
||||||
|
"actual_os_input_generated": 0,
|
||||||
|
"formal_acceptance": false
|
||||||
|
}
|
||||||
+277
@@ -0,0 +1,277 @@
|
|||||||
|
{
|
||||||
|
"phase": "147",
|
||||||
|
"test": "tests/ui/test_main_dashboard.gd",
|
||||||
|
"passed": false,
|
||||||
|
"failed": true,
|
||||||
|
"validation_error": "AssertionError: native ERROR/FAIL/ObjectDB/resource diagnostics never allowed",
|
||||||
|
"profile_startup_name": "TheTree-PCK-tests-e5cb56d130e248c3a42d9ee038103767-standard-startup-147",
|
||||||
|
"private_project_sha256": "c107c8c021eb4d886c580d0e195f8ea4b82d2bef9132c2f40b821174686804f8",
|
||||||
|
"private_project_fields": 2,
|
||||||
|
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
|
||||||
|
"policy": {
|
||||||
|
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
|
||||||
|
"ordinary_cleanup_prepared": false,
|
||||||
|
"ordinary_control_labels": [],
|
||||||
|
"old_bounded_teardown": true,
|
||||||
|
"new_audio_QA": false,
|
||||||
|
"path": "tests/ui/test_main_dashboard.gd",
|
||||||
|
"candidate_source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20"
|
||||||
|
},
|
||||||
|
"command": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"logical_script": "res://tests/ui/test_main_dashboard.gd",
|
||||||
|
"starter_sha256": "d3a7cb6d65c098794b75d54bc3bb572894ba94ebec0746cff4bf0b99b9f332dd",
|
||||||
|
"controlled_environment": {
|
||||||
|
"THE_TREE_PACK_PROFILE_NAME": "TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
|
||||||
|
"THE_TREE_PACK_PROFILE_EXPECTED": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
|
||||||
|
"THE_TREE_PACK_PROFILE_REPORT": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147-profile.json",
|
||||||
|
"THE_TREE_FULL_PARSE_PATHS": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/parse-paths.json",
|
||||||
|
"THE_TREE_AUDIO_TEARDOWN_PROOF_DIR": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147-teardown"
|
||||||
|
},
|
||||||
|
"native_process": {
|
||||||
|
"argv": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"pid": 66967,
|
||||||
|
"started_utc": "2026-10-13T22:42:29.505015+00:00",
|
||||||
|
"ended_utc": "2026-10-13T22:42:33.592473+00:00",
|
||||||
|
"wall_seconds": 4.087419749999981,
|
||||||
|
"exit_code": 1,
|
||||||
|
"helper_exit_code": 1,
|
||||||
|
"timed_out": false,
|
||||||
|
"stdout_sha256": "aa1c521a68968776506b900e8c4f37fbeb834165ef82ab423eb6403fb29cedb4",
|
||||||
|
"stderr_sha256": "1f058d97960cd4d1df9f564a65801220987a3dcdd14ea2e6761495be91a23be8",
|
||||||
|
"error_lines": [
|
||||||
|
"ERROR: all23 facilities including the cleaning room appear in the build palette",
|
||||||
|
"ERROR: FAIL: 1 of 169 checks failed"
|
||||||
|
],
|
||||||
|
"owned_popen_ended": true,
|
||||||
|
"old_helper_engine_ended": true,
|
||||||
|
"start_receipt_written": true,
|
||||||
|
"end_receipt_written": true,
|
||||||
|
"lifecycle_error": null,
|
||||||
|
"old_helper_lifecycle_error": null,
|
||||||
|
"actual_start_binding": {
|
||||||
|
"scope": "isolated diagnostic owned child",
|
||||||
|
"event": "ENGINE_STARTED",
|
||||||
|
"actual_pid": 66967,
|
||||||
|
"owner_pid": 55474,
|
||||||
|
"command": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"monotonic_ns": 1423635909541,
|
||||||
|
"pid": 66967,
|
||||||
|
"argv": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"started_utc": "2026-10-13T22:42:29.505015+00:00",
|
||||||
|
"current_process_identity": {
|
||||||
|
"pid": 66967,
|
||||||
|
"ppid": 55474,
|
||||||
|
"pgid": 66967,
|
||||||
|
"args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
},
|
||||||
|
"live_identity_exact": true,
|
||||||
|
"tracked_child_ended_before_initial_probe": false,
|
||||||
|
"signal_scope": "tracked Popen child only; no external group signal"
|
||||||
|
},
|
||||||
|
"actual_end_binding": {
|
||||||
|
"scope": "isolated diagnostic owned child",
|
||||||
|
"event": "ENGINE_ENDED",
|
||||||
|
"actual_pid": 66967,
|
||||||
|
"owner_pid": 55474,
|
||||||
|
"command": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"monotonic_ns": 1427715972291,
|
||||||
|
"exit_code": 1,
|
||||||
|
"actual_process_exit_code": 1,
|
||||||
|
"engine_ended": true,
|
||||||
|
"timed_out": false,
|
||||||
|
"lifecycle_error": null,
|
||||||
|
"start_receipt_written": true,
|
||||||
|
"pid": 66967,
|
||||||
|
"argv": [
|
||||||
|
"/Applications/Godot.app/Contents/MacOS/Godot",
|
||||||
|
"--headless",
|
||||||
|
"--path",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
|
||||||
|
"--script",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
|
||||||
|
"--verbose",
|
||||||
|
"--log-file",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
|
||||||
|
],
|
||||||
|
"ended_utc": "2026-10-13T22:42:33.587191+00:00",
|
||||||
|
"signal_scope": "tracked Popen child only; no external group signal"
|
||||||
|
},
|
||||||
|
"strict_native_diagnostics": {
|
||||||
|
"errors": [
|
||||||
|
"ERROR: all23 facilities including the cleaning room appear in the build palette",
|
||||||
|
"ERROR: FAIL: 1 of 169 checks failed"
|
||||||
|
],
|
||||||
|
"banner_count": 1,
|
||||||
|
"known_unicode_diagnostic_count": 0,
|
||||||
|
"unrecognized_unicode_diagnostic_count": 0,
|
||||||
|
"exit_leak_diagnostic_lines": []
|
||||||
|
},
|
||||||
|
"external_process_or_group_signals": 0,
|
||||||
|
"owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037",
|
||||||
|
"adapter_owned_cleanup": {
|
||||||
|
"owned_child_created": true,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_process_exit_code": 1,
|
||||||
|
"attempts": [
|
||||||
|
{
|
||||||
|
"attempt": 1,
|
||||||
|
"kill_attempted": false,
|
||||||
|
"wait_timeout_seconds": 5,
|
||||||
|
"wait_completed": true,
|
||||||
|
"errors": [],
|
||||||
|
"poll_before": 1,
|
||||||
|
"wait_returned_code": 1,
|
||||||
|
"poll_after": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"errors": []
|
||||||
|
},
|
||||||
|
"adapter_error": null,
|
||||||
|
"old_helper_bytes_preserved": true,
|
||||||
|
"helper_wait_None_maps_to_actual_timeout_seconds": 5,
|
||||||
|
"explicit_helper_wait_timeouts_preserved": true,
|
||||||
|
"additional_cleanup_wait_timeout_seconds": 5,
|
||||||
|
"additional_cleanup_max_attempts": 3
|
||||||
|
},
|
||||||
|
"outer_actual_capture": {
|
||||||
|
"actual_captured_pids": [
|
||||||
|
66967
|
||||||
|
],
|
||||||
|
"cleanup": [
|
||||||
|
{
|
||||||
|
"pid": 66967,
|
||||||
|
"cleanup": {
|
||||||
|
"owned_child_created": true,
|
||||||
|
"engine_ended": true,
|
||||||
|
"actual_process_exit_code": 1,
|
||||||
|
"attempts": [
|
||||||
|
{
|
||||||
|
"attempt": 1,
|
||||||
|
"kill_attempted": false,
|
||||||
|
"wait_timeout_seconds": 5,
|
||||||
|
"wait_completed": true,
|
||||||
|
"errors": [],
|
||||||
|
"poll_before": 1,
|
||||||
|
"wait_returned_code": 1,
|
||||||
|
"poll_after": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"errors": []
|
||||||
|
},
|
||||||
|
"outer_cleanup_errors": [],
|
||||||
|
"engine_ended": true,
|
||||||
|
"outer_maximum_helper_invocations": 3,
|
||||||
|
"helper_maximum_waits": 3,
|
||||||
|
"per_wait_timeout_seconds": 5,
|
||||||
|
"foreign_process_or_group_signals": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"adapter_exception": null,
|
||||||
|
"all_captured_ended": true,
|
||||||
|
"outer_cleanup_errors": [],
|
||||||
|
"foreign_process_or_group_signals": 0,
|
||||||
|
"all_cleanup_before_outer_receipt": true,
|
||||||
|
"outer_receipt_written": true,
|
||||||
|
"outer_receipt_error": null,
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"actual_pid": 66967,
|
||||||
|
"engine_ended": true,
|
||||||
|
"exit_code": 1,
|
||||||
|
"log": "tests__ui__test_main_dashboard.gd.log",
|
||||||
|
"log_sha256": "f0c217b36ff566c5445ed98b2c322ae47c07198b7ecf76b31c32652380285e5b",
|
||||||
|
"raw_native_log": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log",
|
||||||
|
"bytes": 21511,
|
||||||
|
"sha256": "e6dd83843678b2b0247d38cf4efc0921ff456e3c4349eb9f4548a354fbbe712c"
|
||||||
|
},
|
||||||
|
"completion": {
|
||||||
|
"passed": false,
|
||||||
|
"checks": null,
|
||||||
|
"failures": null,
|
||||||
|
"marker": null,
|
||||||
|
"errors": [
|
||||||
|
"missing/duplicate primary completion marker",
|
||||||
|
"raw diagnostics or FAIL lines"
|
||||||
|
],
|
||||||
|
"diagnostic_lines": [
|
||||||
|
"ERROR: all23 facilities including the cleaning room appear in the build palette",
|
||||||
|
"ERROR: FAIL: 1 of 169 checks failed"
|
||||||
|
],
|
||||||
|
"known_leak_warning_lines": [],
|
||||||
|
"known_leak_warning_count": 0,
|
||||||
|
"known_unicode_diagnostic_count": 0,
|
||||||
|
"unrecognized_unicode_diagnostic_count": 0
|
||||||
|
},
|
||||||
|
"reported_checks": null,
|
||||||
|
"reported_failures": null,
|
||||||
|
"completion_marker": null,
|
||||||
|
"collector_errors": [
|
||||||
|
"missing/duplicate primary completion marker",
|
||||||
|
"raw diagnostics or FAIL lines"
|
||||||
|
],
|
||||||
|
"whole_startup_profile_after": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e5cb56d130e248c3a42d9ee038103767-standard-startup-147",
|
||||||
|
"files": {},
|
||||||
|
"fresh_before_engine": true
|
||||||
|
},
|
||||||
|
"whole_runtime_profile_after": {
|
||||||
|
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
|
||||||
|
"files": {}
|
||||||
|
},
|
||||||
|
"generated_reports": {},
|
||||||
|
"source_sha256_end": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
|
||||||
|
"default_player_entire_profile_unchanged": true,
|
||||||
|
"sequence": 147,
|
||||||
|
"godot": "/Applications/Godot.app/Contents/MacOS/Godot"
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
ERROR: all23 facilities including the cleaning room appear in the build palette
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] _expect (res://tests/ui/test_main_dashboard.gd:623)
|
||||||
|
[1] _run (res://tests/ui/test_main_dashboard.gd:132)
|
||||||
|
[2] _test_defense_notice (res://tests/ui/test_main_dashboard.gd:615)
|
||||||
|
ERROR: FAIL: 1 of 169 checks failed
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] _run (res://tests/ui/test_main_dashboard.gd:213)
|
||||||
|
[1] free_owner_and_wait (res://tests/helpers/ui_audio_teardown.gd:58)
|
||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "1f0a2bcd53c3f9fdf057e7916871cf5b42145c55",
|
||||||
|
"output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01",
|
||||||
|
"suites_passed": 147,
|
||||||
|
"failed_suite": "tests/ui/test_main_dashboard.gd",
|
||||||
|
"failed_labels": [
|
||||||
|
"ERROR: all23 facilities including the cleaning room appear in the build palette",
|
||||||
|
"ERROR: FAIL: 1 of 169 checks failed"
|
||||||
|
],
|
||||||
|
"remaining_unexecuted": [
|
||||||
|
"tests/ui/test_opening_assignment.gd",
|
||||||
|
"tests/ui/test_original_build_pointer.gd",
|
||||||
|
"tests/ui/test_original_facility_controls.gd",
|
||||||
|
"tests/ui/test_p08_normal_placement_ops.gd",
|
||||||
|
"tests/ui/test_paired_bgm.gd",
|
||||||
|
"tests/ui/test_pixel_tower.gd",
|
||||||
|
"tests/ui/test_rank_pointer.gd",
|
||||||
|
"tests/ui/test_room_presentation.gd",
|
||||||
|
"tests/ui/test_selection_autosave.gd",
|
||||||
|
"tests/ui/test_selection_departure.gd",
|
||||||
|
"tests/ui/test_selection_lifecycle.gd",
|
||||||
|
"tests/ui/test_staff_management.gd",
|
||||||
|
"tests/ui/test_staff_rescue.gd",
|
||||||
|
"tests/ui/test_staff_rest.gd",
|
||||||
|
"tests/ui/test_stair_transport_details.gd",
|
||||||
|
"tests/ui/test_supply_auto_purchase_ui.gd",
|
||||||
|
"tests/ui/test_supply_management.gd",
|
||||||
|
"tests/ui/test_ui_audio_feedback.gd",
|
||||||
|
"tests/ui/test_ui_presentation_audio_contract.gd",
|
||||||
|
"tests/ui/test_upkeep_closed_ui.gd",
|
||||||
|
"tests/ui/test_upkeep_inspector.gd",
|
||||||
|
"tests/ui/test_world_tree_rank.gd",
|
||||||
|
"tests/world/test_elevator_topology.gd",
|
||||||
|
"tests/world/test_legacy_stairs.gd",
|
||||||
|
"tests/world/test_path_transit_density.gd",
|
||||||
|
"tests/world/test_path_vertical_policy.gd",
|
||||||
|
"tests/world/test_stair_infrastructure.gd"
|
||||||
|
],
|
||||||
|
"error": "AssertionError: first strict failed phase stops without retry: 147",
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"guard_errors": [],
|
||||||
|
"owned_ended": true,
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"test_assertion": "palette.get_child_count() == 23 at tests/ui/test_main_dashboard.gd:132",
|
||||||
|
"observed_product_source": "Main adds DemolitionButton to BuildPalette with grid.columns = MVP_FACILITY_IDS.size()+1; catalog button/icon check23 separately passes",
|
||||||
|
"candidate_fix_for_Opus_assessment": "Keep 23 facility-only grid membership; normal demolition tool as sibling control within same scroll palette, preserve ordinary access and all modes. No test condition weakening or arbitrary facility count change."
|
||||||
|
}
|
||||||
+14
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "4f3b42dfeca478d2398407373d75b529eb76fcf0",
|
||||||
|
"affected_ui4": "pass exact source/engine/marker matched, both stages guarded",
|
||||||
|
"native4": "import/parse/handler writer/reader passed before OS",
|
||||||
|
"OS_writer_pid": 75240,
|
||||||
|
"owned_collector_pid": 73669,
|
||||||
|
"failure": "SCRIPT ERROR Invalid assignment endpoint RefCounted(passive_placement.gd) on Node(InputObserver), setup:96",
|
||||||
|
"root_cua": "one genuine palette click; raw proof retained; initial load had not executed so not valid acceptance",
|
||||||
|
"source": "InputObserver.endpoint is Node; Passive extends placement.gd extends RefCounted",
|
||||||
|
"collection": "Root exact owned collector SIGINT after native error; no further UI/acks; no source modification",
|
||||||
|
"output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r08",
|
||||||
|
"formal_acceptance": false
|
||||||
|
}
|
||||||
+36
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "d01286360ee88046e06b80d840fc303a71e0d661",
|
||||||
|
"local_final_tests": 75,
|
||||||
|
"native_import_parse_writer_reader": "all_pass",
|
||||||
|
"OS_acknowledged_requests": 32,
|
||||||
|
"OS_unacknowledged_request": 33,
|
||||||
|
"OS_writer_pid": 17863,
|
||||||
|
"OS_error": "TimeoutExpired: Command '['/Applications/Godot.app/Contents/MacOS/Godot', '--path', '/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r06/stage', '--script', '/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r06/os-runs/writer/passive_os.gd']' timed out after 900 seconds",
|
||||||
|
"owned_ended": true,
|
||||||
|
"guards": [],
|
||||||
|
"cleanup": [],
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"deficits": [
|
||||||
|
"OS total child wait900 exceeded before rebuild/camera/finalsave",
|
||||||
|
"Godot viewport_to_screen is identity in actual real window; documents cannot claim it already includes canvas stretch/CUA titlebar"
|
||||||
|
],
|
||||||
|
"actual_CUA_mapping": {
|
||||||
|
"viewport_dimensions": [
|
||||||
|
1440,
|
||||||
|
810
|
||||||
|
],
|
||||||
|
"window_content": [
|
||||||
|
1280,
|
||||||
|
720
|
||||||
|
],
|
||||||
|
"screenshot_dimensions": [
|
||||||
|
1280,
|
||||||
|
752
|
||||||
|
],
|
||||||
|
"scale": 0.8888888888888888,
|
||||||
|
"titlebar_pixels": 32,
|
||||||
|
"modal_mapping": "apply native-reported dialog translation then physical stretch/titlebar"
|
||||||
|
},
|
||||||
|
"requested_fix": "Only OS child total wait to2400 with actual provenance; preserve per-request300, provider900, validation180, acceptance and source guards. Correct calibration docs/metadata to distinguish engine virtual matrix from CUA screenshot/window coordinates. No product/fixture rewrite or duplicated regression. Request33 after screenshot shows project manager because original child already terminal: unacknowledged, not valid evidence."
|
||||||
|
}
|
||||||
+124
@@ -0,0 +1,124 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"native_candidate": "31aa7706d28a92e313c432d5a62e35d19503dcc3",
|
||||||
|
"original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09",
|
||||||
|
"index": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/index.json",
|
||||||
|
"bytes": 301212,
|
||||||
|
"sha256": "68c29eb3d333ad0b6fb11664d8b0d18e326449da8b0dcca201343477744947fe"
|
||||||
|
},
|
||||||
|
"runner_input": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/runner-input.json",
|
||||||
|
"bytes": 316087,
|
||||||
|
"sha256": "ce680cac09e66c6758c7cc4901e154a67ec31e8df217db7c90cd53dd7e6afde9"
|
||||||
|
},
|
||||||
|
"runner_ended": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/runner-ended.json",
|
||||||
|
"bytes": 3196,
|
||||||
|
"sha256": "23a7602f293d7efb4c665a6d7456bb730c03bfa665ce93ac2a5d3427d4829cd2"
|
||||||
|
},
|
||||||
|
"OS": {
|
||||||
|
"writer": {
|
||||||
|
"receipt": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-runs/writer/ended.json",
|
||||||
|
"bytes": 1329615,
|
||||||
|
"sha256": "645821cca51868f84b93ce09735196fdb65b5f3add310e4695db036ba8b26e6a"
|
||||||
|
},
|
||||||
|
"actual_pid": 80337,
|
||||||
|
"passed": true,
|
||||||
|
"engine_ended": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"error": null,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": []
|
||||||
|
},
|
||||||
|
"reader": {
|
||||||
|
"receipt": {
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-runs/reader/ended.json",
|
||||||
|
"bytes": 1328376,
|
||||||
|
"sha256": "9dfb8c1d2f2930f6e48bce55146f0f02956cd7596c88f688442dc6d6ea5c0428"
|
||||||
|
},
|
||||||
|
"actual_pid": 92565,
|
||||||
|
"passed": true,
|
||||||
|
"engine_ended": true,
|
||||||
|
"exit_code": 0,
|
||||||
|
"error": null,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requests": {
|
||||||
|
"writer": 64,
|
||||||
|
"reader": 5
|
||||||
|
},
|
||||||
|
"actual_camera_cell": [
|
||||||
|
-8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"actual_selection": {
|
||||||
|
"entity_id": "facility_00000004",
|
||||||
|
"occupant_id": "facility_00000004",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"camera_dispatch": {
|
||||||
|
"bounds": {
|
||||||
|
"max_x": 12,
|
||||||
|
"max_y": 6,
|
||||||
|
"min_x": -12,
|
||||||
|
"min_y": 0
|
||||||
|
},
|
||||||
|
"cell_dimensions": [
|
||||||
|
16.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"entity_id_before": "facility_00000001",
|
||||||
|
"local": [
|
||||||
|
546.5,
|
||||||
|
515.5
|
||||||
|
],
|
||||||
|
"map_position": [
|
||||||
|
475.0,
|
||||||
|
360.0
|
||||||
|
],
|
||||||
|
"occupant_id_before": "facility_00000004",
|
||||||
|
"pan": [
|
||||||
|
0.28118896484375,
|
||||||
|
109.441101074219
|
||||||
|
],
|
||||||
|
"screen": [
|
||||||
|
625.5,
|
||||||
|
580.5
|
||||||
|
],
|
||||||
|
"screen_transform": [
|
||||||
|
1.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
79.0,
|
||||||
|
65.0
|
||||||
|
],
|
||||||
|
"viewport": [
|
||||||
|
625.5,
|
||||||
|
580.5
|
||||||
|
],
|
||||||
|
"viewport_transform": [
|
||||||
|
1.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
79.0,
|
||||||
|
65.0
|
||||||
|
],
|
||||||
|
"world_cell": [
|
||||||
|
-8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"zoom": 0.5
|
||||||
|
},
|
||||||
|
"strict_registered_validation": "failed on mirrored absolute proof path; direct original check then failed PNG-only screenshot gate for actual JPEG",
|
||||||
|
"full_regression_final_candidate": "pending",
|
||||||
|
"independent_review": "pending",
|
||||||
|
"formal_acceptance": false
|
||||||
|
}
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"scope": "Root-only evidence orchestration; no source/product/contract change; no OS input or ACK performed by preparation",
|
||||||
|
"original_unit_credit": 0,
|
||||||
|
"controllers": [
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p08-03/root_collect_fresh_os.py",
|
||||||
|
"sha256": "b542beaf0c6a907eac14f196669a243b90bf94fb1434702e7c66bae2ddebaae3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "docs/plans/original-completion-2026-10-02/execution/p08-03/root_ack_os_receipt.py",
|
||||||
|
"sha256": "1657db469f0c1117684b6264c11a447889ec6b80b44b09b2b59b8807f4ad2ff1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"syntax": "Both files passed Python compile() without generating bytecode",
|
||||||
|
"guards": [
|
||||||
|
"same committed clean source and native source map",
|
||||||
|
"fresh output and private OS profiles",
|
||||||
|
"default-player protection",
|
||||||
|
"actual CUA tool IDs newer than current request",
|
||||||
|
"actual target PID still alive",
|
||||||
|
"original screenshot byte preservation",
|
||||||
|
"no former attempt splicing"
|
||||||
|
],
|
||||||
|
"pending": "Execute only after final submitted checker route is verified; actual bar geometry helper, fresh continuous OS proof, checker/independent review/final integration remain required"
|
||||||
|
}
|
||||||
+38
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"OS_completed": false,
|
||||||
|
"successful_requests": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"unacknowledged_request": 5,
|
||||||
|
"required_world_cell": [
|
||||||
|
-8,
|
||||||
|
4,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"viewport": [
|
||||||
|
242.0,
|
||||||
|
180.0
|
||||||
|
],
|
||||||
|
"actual_coordinate": [
|
||||||
|
215,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"canvas_scale": 0.8888888888888888,
|
||||||
|
"titlebar_pixels": 32,
|
||||||
|
"observed": "Open-business guide intercepts unsupported target cell click and selects reception; no unsupported placement interaction occurred",
|
||||||
|
"actual_tool_call": "call_bc7eaed7c8ca4b82b53e15166d6ec0f3",
|
||||||
|
"screenshots": [
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-handler-r05/os-pair/writer-request-0005/screen-before.png",
|
||||||
|
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-handler-r05/os-pair/writer-request-0005/screen-after.png"
|
||||||
|
],
|
||||||
|
"requested_fix": "Keep unsupported predicate; choose visible unsupported target outside normal guide. Derive/record stretch-to-window CUA coordinate mapping. No guide suppression/model injection/criteria weakening. Preserve good bootstrap/native code and raw failed attempt.",
|
||||||
|
"owned_engine_ended": true,
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"guard_errors": []
|
||||||
|
}
|
||||||
+60
@@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"unit": "P08-03",
|
||||||
|
"candidate": "0c5e0022f2d809e4735804f67582b9c96a1dc025",
|
||||||
|
"native4_phases": "pass",
|
||||||
|
"local75": "pass final SHA matched",
|
||||||
|
"actual_OS_requests": 64,
|
||||||
|
"OS_writer_pid": 35236,
|
||||||
|
"OS_timeout_seconds": 2400,
|
||||||
|
"actual_failures": [
|
||||||
|
"observed OS selected cell",
|
||||||
|
"camera world identity"
|
||||||
|
],
|
||||||
|
"raw_recorded_selected_cell": [],
|
||||||
|
"actual_input_viewport": [
|
||||||
|
625.5,
|
||||||
|
580.5
|
||||||
|
],
|
||||||
|
"preclick_viewport_transform": [
|
||||||
|
1.0,
|
||||||
|
0.0,
|
||||||
|
0.0,
|
||||||
|
1.0,
|
||||||
|
79.0,
|
||||||
|
65.0
|
||||||
|
],
|
||||||
|
"local_actual_input": [
|
||||||
|
546.5,
|
||||||
|
515.5
|
||||||
|
],
|
||||||
|
"map_position": [
|
||||||
|
475.0,
|
||||||
|
360.0
|
||||||
|
],
|
||||||
|
"cell_dimensions": [
|
||||||
|
16.0,
|
||||||
|
24.0
|
||||||
|
],
|
||||||
|
"bounds": {
|
||||||
|
"max_x": 12,
|
||||||
|
"max_y": 6,
|
||||||
|
"min_x": -12,
|
||||||
|
"min_y": 0
|
||||||
|
},
|
||||||
|
"derived_actual_input_cell": [
|
||||||
|
-8,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"formula_source": "scenes/main/world_preview.gd:391-401",
|
||||||
|
"UI_after_click": "request0063 screen-after.png shows selected reception at coordinate(-8,0)",
|
||||||
|
"observer_source": "tests/fixtures/p08-03/passive_placement.gd:156-161 uses view.canvas_to_cell(view.get_local_mouse_position()) after awaiting Root and frames",
|
||||||
|
"diagnosis_limit": "raw getter value was not recorded; exact reason it returns null remains unproven. Input-event-derived cell and actual selected-entity/UI identity must both be verified, not replaced by requested cell.",
|
||||||
|
"ordinary_save": "request0064 actual normal save completed and exported formal",
|
||||||
|
"OS_reader": "not started, writer exit1",
|
||||||
|
"owned_ended": true,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"requested_fix": "Capture actual left-press world coordinate from read-only input event before UI side effects; retain matching selected entity ID check and whole-model guards. Add negative wrong-input-cell/entity tests. Never alter raw failed proof or waive native exit/error criteria. Opus should assess narrowly applicable evidence reuse to avoid needless duplicate replay."
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 171 KiB |
BIN
Binary file not shown.
BIN
Binary file not shown.
+11
@@ -0,0 +1,11 @@
|
|||||||
|
Godot Engine v4.7.2.stable.official.ed1daf0bf - https://godotengine.org
|
||||||
|
OpenGL API 4.1 Metal - 90.5 - Compatibility - Using Device: Apple - Apple M4
|
||||||
|
|
||||||
|
SCRIPT ERROR: Invalid assignment of property or key 'endpoint' with value of type 'RefCounted (passive_placement.gd)' on a base object of type 'Node (InputObserver)'.
|
||||||
|
at: setup (res://tests/fixtures/p08-03/passive_placement.gd:96)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] setup (res://tests/fixtures/p08-03/passive_placement.gd:96)
|
||||||
|
[1] run (res://tests/fixtures/p08-03/placement.gd:279)
|
||||||
|
[2] run (/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r08/os-runs/writer/passive_os.gd:6)
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r08/os-pair/writer-request-0001/request.json
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r08/os-pair/writer-request-0002/request.json
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"actual_pid": 37384,
|
||||||
|
"acknowledged_requests": 33,
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"recorded_tool_error": "Mac locked; automatic unlock paused after detected physical input.",
|
||||||
|
"manual_unlock": "User confirmed complete.",
|
||||||
|
"later_geometry_change_observed": true,
|
||||||
|
"ended": {
|
||||||
|
"exit_code": 1,
|
||||||
|
"engine_ended": true,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"error": "AssertionError: ordinary native OS exit0"
|
||||||
|
},
|
||||||
|
"evidence": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-fd643f5-r13-framed",
|
||||||
|
"reuse": "Diagnostic history only. Do not splice into complete writer/reader acceptance.",
|
||||||
|
"no_new_worker": true
|
||||||
|
}
|
||||||
+15
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"candidate": "fd643f55a271e63c554b94681454d357117c0678",
|
||||||
|
"actual_pid": 61966,
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"acknowledged_requests": 0,
|
||||||
|
"cause": "Root performed calibration preparation after spawn and exceeded initial request deadline. Dynamic-code and process imports were unavailable; screen_scale and screenshot/window ratio were incorrectly assumed equal.",
|
||||||
|
"ended": {
|
||||||
|
"exit_code": 1,
|
||||||
|
"engine_ended": true,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": []
|
||||||
|
},
|
||||||
|
"correction": "Prepare pure JS geometry before spawn. Use existing Python ACK collector with genuine tool-call IDs and actual collector PID. Derive screenshot ratio and titlebar independently; retain reported screen_scale as a separate geometry field.",
|
||||||
|
"new_worker_started": false
|
||||||
|
}
|
||||||
BIN
Binary file not shown.
+9
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"raw_path": "/Users/korizatou114/Projects/\u3068\u308a\u306b\u304f\u5de5\u623f\u30b2\u30fc\u30e0\u5236\u4f5c\u90e8/artifacts/original-completion-2026-10-02/p08-03-native-handler-r05/pair/reader-checkpoint.json",
|
||||||
|
"raw_sha256": "304d97de8051d5e74c6e32c4482a3cb183b0172d7671088fdc40469cc3448c0d",
|
||||||
|
"raw_bytes": 2120352,
|
||||||
|
"compressed_path": "ROOT_R05_READER_CHECKPOINT.json.gz",
|
||||||
|
"candidate": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
|
||||||
|
"complete_raw_preserved": true,
|
||||||
|
"scope": "actual native reader snapshot, not synthetic acceptance proof"
|
||||||
|
}
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"candidate": "31aa7706d28a92e313c432d5a62e35d19503dcc3",
|
||||||
|
"native_collection": "R09 import/parse/handler writer/reader and actual OS writer80337(64 requests)/reader92565(5 requests) all exit0, all owned ended, guards/cleanup0",
|
||||||
|
"canonical_copy_error": "ordinary_gate absolute varbytes pin path expects original directory, not cloned build directory. checker.check(W,originalA) passes this gate",
|
||||||
|
"original_check_next_error": "missing OS screenshot; actual CUA getScreenshot bytes are JPEG although Root named them .png, PNG-only gate rejects",
|
||||||
|
"screenshot_formats": {
|
||||||
|
"JPEG": 138
|
||||||
|
},
|
||||||
|
"screenshots": 138,
|
||||||
|
"examples": [
|
||||||
|
{
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-pair/writer-request-0058/screen-after.png",
|
||||||
|
"bytes": 169431,
|
||||||
|
"signature": "JPEG",
|
||||||
|
"first16": "ffd8ffe000104a464946000101000048",
|
||||||
|
"sha256": "a13d0a1f5c8420700edbec576be93eceab1a7ea6be82802aa2d42365d17026f4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09/os-pair/writer-request-0058/screen-before.png",
|
||||||
|
"bytes": 167891,
|
||||||
|
"signature": "JPEG",
|
||||||
|
"first16": "ffd8ffe000104a464946000101000048",
|
||||||
|
"sha256": "ce8959eaad1dc24de5f2d8e89ca77afc7286120647603dbdaa78525e91f07e44"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"original_root": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r09",
|
||||||
|
"canonical_root": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/.runtime/P08-03/build/p08-normal-placement-evidence",
|
||||||
|
"original_raw_not_modified": true,
|
||||||
|
"formal_acceptance": false,
|
||||||
|
"required_decision": "Safely satisfy strict image proof and provenance with original raw bytes retained; assess content-preserving re-encoding and verified original/canonical path mapping without redoing actual OS steps or relabeling failed validators; no relaxed image/provenance/whole-model or independence criteria."
|
||||||
|
}
|
||||||
+976
@@ -0,0 +1,976 @@
|
|||||||
|
{
|
||||||
|
"scope": "post-collection read-only measurement of immutable R09 images; not invented capture-time metadata",
|
||||||
|
"original_index_sha256": "68c29eb3d333ad0b6fb11664d8b0d18e326449da8b0dcca201343477744947fe",
|
||||||
|
"measurement_tool": "/usr/bin/sips -g pixelWidth -g pixelHeight",
|
||||||
|
"tool_stdout_sha256": "03126a9cb750316569fededbc1b7b758806c1e603ba9e7cf3ce67c9cc413211c",
|
||||||
|
"images": [
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0001/screen-after.png",
|
||||||
|
"source_sha256": "b54b6f7fa5ee014698ecaa2d5df50e3dfd28f404474d1d722dd09d08fec1636e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0001/screen-before.png",
|
||||||
|
"source_sha256": "de219c703de4dfb8e44b1ce4b5c2f26df059931067e00a55b8fc15db53d1d7f9",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0002/screen-after.png",
|
||||||
|
"source_sha256": "cde7dfdf26c1b08a302441420c7175d08e73854fa17f4d7007403d68f25238fd",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0002/screen-before.png",
|
||||||
|
"source_sha256": "8d9fd9fe1408162c2032530e5d7e14931a0ab0f4a0a7b9c2afc8e71adb4dce74",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0003/screen-after.png",
|
||||||
|
"source_sha256": "61f9116fb3ba373de996fd8674da62fce781e4670e5a849ecd51b03309dfec52",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0003/screen-before.png",
|
||||||
|
"source_sha256": "8c338125bee670059af829b8208831bececf883afbd0cd20a3799d575ca2003f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0004/screen-after.png",
|
||||||
|
"source_sha256": "eb97a85ccf570690d0f83f8f6a3a2fea2c5ae7b9af45f6d7433732480a93f2de",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0004/screen-before.png",
|
||||||
|
"source_sha256": "e39330e00bf85082cef937af1b42cfb7f1ee9ea6ca59ad27310ba2b5ba78cd14",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0005/screen-after.png",
|
||||||
|
"source_sha256": "8cac36016a2309451269b62b5f8ccc923b6818205260a9dc1c44d09dd8a7d86d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/reader-request-0005/screen-before.png",
|
||||||
|
"source_sha256": "5c71fd681ed7b41350f431ed486e32e6df6c6a833a0c9c2d7d3506906eb0c4c1",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0001/screen-after.png",
|
||||||
|
"source_sha256": "685d672ff0349c317f0e6257512e25c1ce547606ec3d4d331970ae0c1d0ff7d8",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0001/screen-before.png",
|
||||||
|
"source_sha256": "7378e03e85dd92629883988fbe6420142a2012f4485f023231f3148697ea49b8",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0002/screen-after.png",
|
||||||
|
"source_sha256": "ef680cf46d904ba830115e833e332221bf6333995b013aa5157df0de92a49220",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0002/screen-before.png",
|
||||||
|
"source_sha256": "68f63798582a7404fe024afd8ddcc5680ac32d8efeefbb587f5e0be79091c43c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0003/screen-after.png",
|
||||||
|
"source_sha256": "806c43c47b4da5a19a41ecfb70014120f0fab9cca98c8641ab3f3c791e4e7321",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0003/screen-before.png",
|
||||||
|
"source_sha256": "91ddeee45a12b1e5c60630cc0bb5e3c9a2cb73b667c782c53d86b4540867ce48",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0004/screen-after.png",
|
||||||
|
"source_sha256": "c44d0b0d9540e54db5cb507cce9a160c8f746813d9b592c7bfca6f3fc34ace07",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0004/screen-before.png",
|
||||||
|
"source_sha256": "c3b351565a4f7a63771313f1f62201ba4912465e3a747a16edcdf6812f817f0e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0005/screen-after.png",
|
||||||
|
"source_sha256": "9626def46a116578a06e7673bd9c4c52d1e6cc00df8e0f152028021c38206736",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0005/screen-before.png",
|
||||||
|
"source_sha256": "cce2a6ca77b1878dc3afccb59f11d44d2b12fdb8251ce188866f00b62ee39b21",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0006/screen-after.png",
|
||||||
|
"source_sha256": "915c9b10978026a1de5fc4efb4c6d49c5841431f0f947031de931289fd51fbbe",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0006/screen-before.png",
|
||||||
|
"source_sha256": "532d5e4f10549c7dad44cc4e07d161fc84069518f776140ae869b73fbf151ecd",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0007/screen-after.png",
|
||||||
|
"source_sha256": "4f6257841b5f37bc1e8b4429803216bddbfc8c212954685fdd6b2a12c301ae98",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0007/screen-before.png",
|
||||||
|
"source_sha256": "970a2a1986c18d9a26b3a7682de38b95cd3ba80fdb5e48e75a5f2af26c939761",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0008/screen-after.png",
|
||||||
|
"source_sha256": "a9cca8444c00ffcaa4a50a5bafea3204b8e007e0a61e31c9c119ed0d1a0a9f5c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0008/screen-before.png",
|
||||||
|
"source_sha256": "fb58d85c83c9e5c09f2c869e8171a577b1f53b7b8669f369f7e2e6ff46c01af2",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0009/screen-after.png",
|
||||||
|
"source_sha256": "bce7ecf4e8b288e05df5d098c7ea9d15918457e9360864923cf0283b13dcfaef",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0009/screen-before.png",
|
||||||
|
"source_sha256": "27926f876398d59ec12e4263f537997efc0c45a16f99e4e45e5bbd8df2f8b980",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0010/screen-after.png",
|
||||||
|
"source_sha256": "9109144c9aa892b9602b9b1c9bd76a33a3b77e64bf172e91db0b04b5117d7028",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0010/screen-before.png",
|
||||||
|
"source_sha256": "4e949455676f2c9b6a2e54a1c4535cdaad5443b2866bdbb1f00bb5bd8fe2d33f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0011/screen-after.png",
|
||||||
|
"source_sha256": "9225d1306242056aab728674c0ddc70db352f7b340a2383ff2abfc71bcbd3545",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0011/screen-before.png",
|
||||||
|
"source_sha256": "484ba517d60755900d4b236591e5662800fe2d8920567589aca36dba51a527c8",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0012/screen-after.png",
|
||||||
|
"source_sha256": "5be61fbf3b8b97264734fe2485acd4351540e7d5a464acf28c1fc825ad63ad66",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0012/screen-before.png",
|
||||||
|
"source_sha256": "c405713b49527f218fe9b775398e6d5c5fa634659e9772e1f92f78f8900860e7",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0013/screen-after.png",
|
||||||
|
"source_sha256": "2d75692d7ca006c2a107dd4a1ec96169b97b74e10a893eccc769fff51f673c77",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0013/screen-before.png",
|
||||||
|
"source_sha256": "a0ad8e4afb6dfa02220b5b6f43f5db8753ceba9d0263551d1829655ab7b36e1c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0014/screen-after.png",
|
||||||
|
"source_sha256": "b76e0f4f1d6d241b862c888bb6a4d0f412c3cc128c63cf9431fa4ae909b3da65",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0014/screen-before.png",
|
||||||
|
"source_sha256": "f6d72f5de7e79bfa316664015e2b733c204eec170586161aa207a57967fe623a",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0015/screen-after.png",
|
||||||
|
"source_sha256": "122d9e6eadaaa453c6aeb0edb05f783d9d9290be29c89ff80f292728a03b6ac7",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0015/screen-before.png",
|
||||||
|
"source_sha256": "165d50aa0b26bd3244c311560f3ac95fbfd3e22d7ad9c3740638a060a61371f6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0016/screen-after.png",
|
||||||
|
"source_sha256": "9d5db7ab5703d08319233d12d5c1324944692876d24904f27f8231137178c995",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0016/screen-before.png",
|
||||||
|
"source_sha256": "c58b82369638d39507b9e0ace7a674c2d75dc4be04022de3f8767e23751acc5f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0017/screen-after.png",
|
||||||
|
"source_sha256": "e22b06968d21aaf7f4567e6fd0a15785680b54ac6e5285443f0ba6548e6fc4aa",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0017/screen-before.png",
|
||||||
|
"source_sha256": "9d2d785c6750daca47cfab652ee807697cea59469c8bbe4335766eeb49dbeb05",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0018/screen-after.png",
|
||||||
|
"source_sha256": "e3d72eea15ed516ce97f43f31b7627e5336467ae7a64a8bbbd72f9733869ea3d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0018/screen-before.png",
|
||||||
|
"source_sha256": "57005d30173b51e58531c586dc10712786160d663e100b958f9d487ef09376ae",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0019/screen-after.png",
|
||||||
|
"source_sha256": "9255d120eb5021c636fc6e6f74c3af72f741aad278ee024eea4901d776a242d5",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0019/screen-before.png",
|
||||||
|
"source_sha256": "bb72bba570b3c3d97785ef0c2f084a5dd98eef600f95eea2a2163a12a68bd482",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0020/screen-after.png",
|
||||||
|
"source_sha256": "4a5e8d7d9d78bc670eb1a3775912506bf6bb1106ed9e8d270c977244ee382119",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0020/screen-before.png",
|
||||||
|
"source_sha256": "9482ff51c1c56dbb595587c9f1f42d73d2cf22eaf4c5cd965f79f34b882aae1c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0021/screen-after.png",
|
||||||
|
"source_sha256": "be21bf324daf892c34cc1726ff36a84d8312c584199c042cfc853af148d86ace",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0021/screen-before.png",
|
||||||
|
"source_sha256": "8551975c3ab1be67776b14771dce614b801ca56517740618e4270f4e3466cf22",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0022/screen-after.png",
|
||||||
|
"source_sha256": "a39a7688a3c5beab968d0a34e5a55791773b934d4158160cc54b6b37fe31550e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0022/screen-before.png",
|
||||||
|
"source_sha256": "543cb4a1dc8976af90449297ee734539eea3361a9e4112ccab510f269a7bb94f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0023/screen-after.png",
|
||||||
|
"source_sha256": "569715f733c918ec7b6211d953526b0df66b521df855ade7e3554476638509b6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0023/screen-before.png",
|
||||||
|
"source_sha256": "cd09b4b43abf503f3b5b4cd397a002e88909dda37084fb090bf2278fe11e6255",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0024/screen-after.png",
|
||||||
|
"source_sha256": "1878386793d16510a1d8f289131688538542996d5f778118f606bb9f466a1d99",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0024/screen-before.png",
|
||||||
|
"source_sha256": "cd9a4f8050f06595460ad667307fa62b29b807eb59dd60d628024ca1ef60e345",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0025/screen-after.png",
|
||||||
|
"source_sha256": "4733c86f40ee9d66b4f2e801b17d46eed30e23979f8602899071de2be117d15c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0025/screen-before.png",
|
||||||
|
"source_sha256": "72586b2cdeb481c2ff1d956eec6aa9fdf08941e59f67e56c3d8665fc3ef89141",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0026/screen-after.png",
|
||||||
|
"source_sha256": "a31ed7d43307c05703d183eb6e639366312dfaa5513e0c19db6838505f6c0e50",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0026/screen-before.png",
|
||||||
|
"source_sha256": "46a6004cf1fffa7a8ebfcc93076267c45bfc4283beac25433aff35ab6d2312ed",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0027/screen-after.png",
|
||||||
|
"source_sha256": "aa44efd2415d0ef7dca4b46a700adf4d96f073727fee7888a15a2a2ae90270cf",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0027/screen-before.png",
|
||||||
|
"source_sha256": "cf0b99d7035f636961824c919bab0d93a0c814c97bf27f789a1d909f3160360f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0028/screen-after.png",
|
||||||
|
"source_sha256": "87cbcc1b0c444a1073d0cb48a4e4687a88bed87bb0efabcc40d098f98aee4861",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0028/screen-before.png",
|
||||||
|
"source_sha256": "52dc193175d1a12a41d3bc55f368646e900caae479e8c8ef6c7bf2de4009ce49",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0029/screen-after.png",
|
||||||
|
"source_sha256": "e38a3a141816b242e8fcdea1a729877daa57a43094853002dec2497368f9211c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0029/screen-before.png",
|
||||||
|
"source_sha256": "acbe7607ec4a3b0a04c59c8f2b8cee7f79d21cdcd6d7c5a5f7aef0c4ecdb7253",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0030/screen-after.png",
|
||||||
|
"source_sha256": "0a8f71d79face5b53277171db1d8b7a5bef215972311efed527c2a9153a85d98",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0030/screen-before.png",
|
||||||
|
"source_sha256": "a0ed46e43d628ab7eab28ff0173634cf9adfd4d78ce0d255caadbf8659d0ff48",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0031/screen-after.png",
|
||||||
|
"source_sha256": "7081709f6e37d7d47db3592bb9a621f40daff426b27d17941a9a46369d90c4cb",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0031/screen-before.png",
|
||||||
|
"source_sha256": "3013e92573621d326f8bcc65e8f1d57ac1eefd0f71eb61f605fcabb56d6c44f6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0032/screen-after.png",
|
||||||
|
"source_sha256": "add6518c2564fb76e7454151ca7d8f20c897f65e2db6355b460b1c2a86754c71",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0032/screen-before.png",
|
||||||
|
"source_sha256": "d938c4a4a2c2a0b203a31c123c03bd0f7ef73fb6d267d186edb44c5ef721d56b",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0033/screen-after.png",
|
||||||
|
"source_sha256": "dc4d8b182e13623560c72501e2abe436aeb118f69d99e4cc9360c8cc18971f1b",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0033/screen-before.png",
|
||||||
|
"source_sha256": "f331391c69347860d9c9184a7277fda3720cc1c4949b132b9346742c49716c61",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0034/screen-after.png",
|
||||||
|
"source_sha256": "771b00371fb8c4ef9797b0d62490be11fa48164beedd846f888207bc3c867175",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0034/screen-before.png",
|
||||||
|
"source_sha256": "81dae87e99555528f0cbb7fe19bb7485983c5a0f29a0692cfbc1b18690a4346f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0035/screen-after.png",
|
||||||
|
"source_sha256": "dc6ffea5314485f9270f4f1ea78ade78afd59655b0613898365dc12ea0398b18",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0035/screen-before.png",
|
||||||
|
"source_sha256": "673c2f0fe3244ecc897b014699ef6491cae80d2bab8fbccdac8fd86f37203b9c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0036/screen-after.png",
|
||||||
|
"source_sha256": "3695ecb8109c3b1b4810adff8f8a112cc238ec8051fcb0aeec624e7df4be208d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0036/screen-before.png",
|
||||||
|
"source_sha256": "d0386b449b9e91e85a0e05122202846e230facea4fa362c8583bfedf0f563c1e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0037/screen-after.png",
|
||||||
|
"source_sha256": "99bf2fcc940d6e1351873024af933c30d5bed5e8b085f3f0ba7762097744bf26",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0037/screen-before.png",
|
||||||
|
"source_sha256": "2b5c953a0e02da363273e72832bbbd14d6aa13955a77ab8b58e8b0babd617b0e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0038/screen-after.png",
|
||||||
|
"source_sha256": "ba98f3832f4a0ad8c365d4342c899accfacc2b2910621892adfeef2af2e741cd",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0038/screen-before.png",
|
||||||
|
"source_sha256": "01c5666579d78a58d49a7e8b11f3273e4bd5cd97d32f8c15bd57ec2982f0067d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0039/screen-after.png",
|
||||||
|
"source_sha256": "f7368b2ccaab8fe218465f919fadeb75d18640bb5282fe7fd52a5e589b5e57cc",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0039/screen-before.png",
|
||||||
|
"source_sha256": "92f15737f3617e860fe288655134e995686401b32de6c561894a470e035a1c00",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0040/screen-after.png",
|
||||||
|
"source_sha256": "46d3b76b586a7ee3aa2943ed4f659f137933abb6d25f0eed5f60e546455dc0d6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0040/screen-before.png",
|
||||||
|
"source_sha256": "ceb54f8d409778c90ac162b244822f718ff5a5e9471f6efde44643d154a3ff17",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0041/screen-after.png",
|
||||||
|
"source_sha256": "29024b76601c1ec5c5ea3e150eac42019be30aac9ab17d737835afff14fc3ed6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0041/screen-before.png",
|
||||||
|
"source_sha256": "6aef1783644c4eb31ddbdd8fc26e4cfc08546d3d982a38a0e65caf1bc6b56d55",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0042/screen-after.png",
|
||||||
|
"source_sha256": "b7a0d3b23b609f6a66f1aee07f26d145005152627e3018a8975b785fcd365f0e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0042/screen-before.png",
|
||||||
|
"source_sha256": "c1b61f3df55a383a24fa545f89a6a9e353ec9ce214ad3e8c3d972fd002aadae6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0043/screen-after.png",
|
||||||
|
"source_sha256": "424a5ed967e5430646a09cb79e005a37e57180bc6bc45019c35297b5d1d11bf5",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0043/screen-before.png",
|
||||||
|
"source_sha256": "cbc3cddd3b2780c61da7ccf4d0685aff2af79652086cf7b4b3c8a0b2e60e3ce6",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0044/screen-after.png",
|
||||||
|
"source_sha256": "95c8f783cd2758d7c1ae7759e3143d5f6e2d12a6f7f6958982581a292a20e59c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0044/screen-before.png",
|
||||||
|
"source_sha256": "ea1dea1b2119438db7342ccf07099fce6bbf19306ab7e140ac0aae2bf904ad84",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0045/screen-after.png",
|
||||||
|
"source_sha256": "8384de8ca62d374c56602e0f02866334fb5952ae1769e772b458c23646046d47",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0045/screen-before.png",
|
||||||
|
"source_sha256": "747ef5a69382710d17d46d810941c6591763e51ea1c9ab9a06b1e1172348edd0",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0046/screen-after.png",
|
||||||
|
"source_sha256": "87303f72438035b05946b45e96fcfd5e1635acb6f045bef5882d1f54ab1d9c3e",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0046/screen-before.png",
|
||||||
|
"source_sha256": "01735714b37386f40b9e185c06ac994fa5d60736b6fcf4f8c653566317db2dff",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0047/screen-after.png",
|
||||||
|
"source_sha256": "0c22cc8246c5b5eb349147e9c2633ad280d1489d36313f8486a36909a0edf4dc",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0047/screen-before.png",
|
||||||
|
"source_sha256": "d74da0f11f706ec90d29c85fc61c8410e770fc512e51ffef8fd47cfeb7833314",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0048/screen-after.png",
|
||||||
|
"source_sha256": "f25c6679a66d53fa0baef6946cb09c6b34b5a3215132f8912176ac07ae4fd178",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0048/screen-before.png",
|
||||||
|
"source_sha256": "142264548642eeb26e3131199077433280f2abfc8e3c185c0b80b8ac7dc88368",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0049/screen-after.png",
|
||||||
|
"source_sha256": "f13497c3acf83c3d0d44e9bc55334000e62e830fb043d823d33845b8e0dd3243",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0049/screen-before.png",
|
||||||
|
"source_sha256": "4d09dd8f26cb9d23dd8be9e0e1ecd57cd0c314c5c0f3a69b8ede9fd21671478c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0050/screen-after.png",
|
||||||
|
"source_sha256": "16d49100dc19067be96c76e298bdba65912c067af2f25ade8069aaaecfb7f257",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0050/screen-before.png",
|
||||||
|
"source_sha256": "8b750551b8aedef80bf3e6648ed16ebeda5b78ae2f97f99202d9db1af89e8dea",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0051/screen-after.png",
|
||||||
|
"source_sha256": "57218dbfdf0d561d761c64e47c36c278bdec43e014431383a4ad2c1e23b1b0e4",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0051/screen-before.png",
|
||||||
|
"source_sha256": "65e5d9d93f57ebd6af5a88db73e44ac9084162e2c30895431490852b73aae07b",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0052/screen-after.png",
|
||||||
|
"source_sha256": "5e2f067f3e271c6f380454cd44268ee83203871a50710fbad456b23dfc1e429b",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0052/screen-before.png",
|
||||||
|
"source_sha256": "c4a945390bd626fff4f3f7af44f9e508c6af6aa97b1c7be356f9949dc6ede205",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0053/screen-after.png",
|
||||||
|
"source_sha256": "a989599abc63a7418c8b65ff64d65f9251e09a0de6dbf99b83524e066bb26c19",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0053/screen-before.png",
|
||||||
|
"source_sha256": "cf3fa4764f3d7ab2a2de43b477ad459fd63bf653d62a0e43ec515fc6033b7bf8",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0054/screen-after.png",
|
||||||
|
"source_sha256": "bde2224c59ec06f948dc889654bf0aa173ab4502d90605b33a501353217685de",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0054/screen-before.png",
|
||||||
|
"source_sha256": "7c30aec29a115a067e067393c04c1ef930976577456fd41a4583895b0903b94a",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0055/screen-after.png",
|
||||||
|
"source_sha256": "f330511835fd1d8526b0b9c758a117ed5a051f9bb9dc97eb519732b327fe092d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0055/screen-before.png",
|
||||||
|
"source_sha256": "d73e160d1eec129f36ffcf10fd42bce77b7d0e0a794c00c9b7d28e0d8546f979",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0056/screen-after.png",
|
||||||
|
"source_sha256": "f1d0914ebfec58d8098dbf53c142fb27afe08891162e62244b6a69a335942658",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0056/screen-before.png",
|
||||||
|
"source_sha256": "06cfb2c3d8a74dd8a33aeb96830ed86e7bbaaa9714ff8423eb7a22098782945f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0057/screen-after.png",
|
||||||
|
"source_sha256": "c4182734d4ea40bfe6dee01e2d7809a7e396b367fbde251c44fdebeca7ea832d",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0057/screen-before.png",
|
||||||
|
"source_sha256": "d5b59f180a124f74dff53fd3c0f7050a8022667ea4405929042ddb4c35fe962c",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0058/screen-after.png",
|
||||||
|
"source_sha256": "a13d0a1f5c8420700edbec576be93eceab1a7ea6be82802aa2d42365d17026f4",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0058/screen-before.png",
|
||||||
|
"source_sha256": "ce8959eaad1dc24de5f2d8e89ca77afc7286120647603dbdaa78525e91f07e44",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0059/screen-after.png",
|
||||||
|
"source_sha256": "5375cfadc79596c8f404d2ef7573fcec522f0f42f2049d6095a887578ef62d45",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0059/screen-before.png",
|
||||||
|
"source_sha256": "85f25e0e2edb225371e2d66adf4c733aee093d2774b03ea6bc1e2c57aecb41db",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0060/screen-after.png",
|
||||||
|
"source_sha256": "7782db3ef0a6a2c8f26695ad5aa6978d373c903ada226c987004bbdffdfcb544",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0060/screen-before.png",
|
||||||
|
"source_sha256": "fe29ed682a21b12f39c2f8329b934992ea14357f0738a5bbdb5918fe2dfcc3d4",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0061/screen-after.png",
|
||||||
|
"source_sha256": "0f1416c3bb88e58401c2e8a3151eadbd42609b96ce0f47dc1411da00a496fc1f",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0061/screen-before.png",
|
||||||
|
"source_sha256": "63aa95d1dda03f1a253364dadf9ebb4ce61dc8976482afe26e10a98c7d256290",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0062/screen-after.png",
|
||||||
|
"source_sha256": "c8dea8222efab5aa0d4a3c0de8387a38f0e8f9e43ff5d6796f160475c1ed06ea",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0062/screen-before.png",
|
||||||
|
"source_sha256": "78cacff1897f04525b06de0bec81689cdbb5027d8d388b9ea60b69ccb3a91238",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0063/screen-after.png",
|
||||||
|
"source_sha256": "a654e2584d16a8f6cf70822ad61c03925b13910511843b7bb6e3d8fb3c7044a1",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0063/screen-before.png",
|
||||||
|
"source_sha256": "ed9127c074512800ebb12e46cc3a4669308e84a2229a963abf2c8aef5e56c631",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0064/screen-after.png",
|
||||||
|
"source_sha256": "f62e00c37d09e382c04d321a2234f8794b71da88dfdacc86ab4c7b46a965ac27",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"file": "os-pair/writer-request-0064/screen-before.png",
|
||||||
|
"source_sha256": "8751fad9f2fd8820d634889d984abebfb2c79f8af6c515a8e24e443569d7fe57",
|
||||||
|
"width": 1280,
|
||||||
|
"height": 752,
|
||||||
|
"format_by_magic": "JPEG"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"pairs_have_equal_dimensions": true,
|
||||||
|
"formal_acceptance": false
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"synthetic_controls_only": true,
|
||||||
|
"controls": {
|
||||||
|
"synthetic_metadata_only_same_source": {
|
||||||
|
"passed": true,
|
||||||
|
"new_native_runs": 0
|
||||||
|
},
|
||||||
|
"source_drift": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "changed native source cannot reuse evidence: autoload/simulation_runtime.gd"
|
||||||
|
},
|
||||||
|
"engine_drift": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "changed native engine"
|
||||||
|
},
|
||||||
|
"marker_drift": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "changed marker configuration"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"production_proof_unchanged": true,
|
||||||
|
"new_native_runs": 0
|
||||||
|
}
|
||||||
+82
@@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"contract": {
|
||||||
|
"id": "P08-03-RTPREVIEW",
|
||||||
|
"title": "P08-03を閉じるための共有配置プレビュー判定",
|
||||||
|
"requirement_ids": [
|
||||||
|
"P08-03"
|
||||||
|
],
|
||||||
|
"acceptance_ids": [
|
||||||
|
"P08-03-RTPREVIEW"
|
||||||
|
],
|
||||||
|
"spec_ref": "docs/spec/acceptance/P08-03-RTPREVIEW.json",
|
||||||
|
"base_commit": "d4747dd7e12e8fd19e404ad444bdc1e56d03f088",
|
||||||
|
"worker": "codex",
|
||||||
|
"allowed_paths": [
|
||||||
|
"autoload/simulation_runtime.gd",
|
||||||
|
"tests/transport/test_runtime_build_preview.gd",
|
||||||
|
"tests/transport/test_runtime_build_preview.gd.uid"
|
||||||
|
],
|
||||||
|
"depends_on": [],
|
||||||
|
"resource_locks": [
|
||||||
|
"p08-shared-build-runtime"
|
||||||
|
],
|
||||||
|
"validation_ids": [
|
||||||
|
"runtime-preview-proof"
|
||||||
|
],
|
||||||
|
"max_repair_attempts": null,
|
||||||
|
"spec_sha256": "949e00de465d86afd575ff03b7b575709fe0fc4d19d3b63a3a1a03929fe05969"
|
||||||
|
},
|
||||||
|
"implementation_commit": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"integration_commit": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"owner": "User standing explicit main update authorization: mainの更新を明示的に許可します; reviewed original-P08 supporting fix only, no added original unit",
|
||||||
|
"evidence": [
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "targeted_native",
|
||||||
|
"commit_sha": "78dc82da077dabbdb92ebcf475cd81c5d619bcf6",
|
||||||
|
"artifact": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-runtime-preview-78dc82d-targeted-r01/runner-ended.json",
|
||||||
|
"passed": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "targeted_native",
|
||||||
|
"commit_sha": "8d52b20d40884a41432152c9e94e6d83485268c6",
|
||||||
|
"artifact": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-runtime-preview-8d52b20-target-r02/runner-ended.json",
|
||||||
|
"passed": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "validation",
|
||||||
|
"commit_sha": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/bb00ad2fd31c4207b3ae5de42ca82330-validation.json",
|
||||||
|
"passed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "review",
|
||||||
|
"commit_sha": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/8be4a0982cab42afa0c9e7545032f519/result.json",
|
||||||
|
"passed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "integration",
|
||||||
|
"commit_sha": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/cc8188e650f64843b6c6f717962b2209-integration.json",
|
||||||
|
"passed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"task_id": "P08-03-RTPREVIEW",
|
||||||
|
"kind": "final",
|
||||||
|
"commit_sha": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/a7baf978d6734efd912b79e8cec0fc70-final.json",
|
||||||
|
"passed": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
+58
@@ -0,0 +1,58 @@
|
|||||||
|
{
|
||||||
|
"submitted": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"integration": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"runner_state": "completed",
|
||||||
|
"scope": "supporting P08-03 only; zero original units added",
|
||||||
|
"native_source": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"applicability": [
|
||||||
|
{
|
||||||
|
"previous_bound_commit": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"previous_proof_sha256": "769a37d564edb8f99b4bc1c7f5f3e11166637234dfb03bfad9c5c29778931302",
|
||||||
|
"bound_commit": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"source_files_checked": 1318,
|
||||||
|
"source_byte_changes": 0,
|
||||||
|
"engine_and_marker_match": true,
|
||||||
|
"new_native_runs": 0,
|
||||||
|
"executed_native_candidate": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"required_evidence": [
|
||||||
|
{
|
||||||
|
"kind": "targeted_native",
|
||||||
|
"commit": "78dc82da077dabbdb92ebcf475cd81c5d619bcf6",
|
||||||
|
"passed": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-runtime-preview-78dc82d-targeted-r01/runner-ended.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "targeted_native",
|
||||||
|
"commit": "8d52b20d40884a41432152c9e94e6d83485268c6",
|
||||||
|
"passed": 0,
|
||||||
|
"artifact": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-runtime-preview-8d52b20-target-r02/runner-ended.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "validation",
|
||||||
|
"commit": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"passed": 1,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/bb00ad2fd31c4207b3ae5de42ca82330-validation.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "review",
|
||||||
|
"commit": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"passed": 1,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/8be4a0982cab42afa0c9e7545032f519/result.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "integration",
|
||||||
|
"commit": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"passed": 1,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/cc8188e650f64843b6c6f717962b2209-integration.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"kind": "final",
|
||||||
|
"commit": "dbf5cb8f1bec88b259d010d8f3ce0486b1cfeaa3",
|
||||||
|
"passed": 1,
|
||||||
|
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p08-runtime-preview/runs/a7baf978d6734efd912b79e8cec0fc70-final.json"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"original_P08_03_complete": false
|
||||||
|
}
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"candidate": "12f04d6e8bfdba59e44d81e8e34c57b67efbefeb",
|
||||||
|
"native_receipt": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-runtime-preview-12f04d6-target-impact-r03/runner-ended.json",
|
||||||
|
"passed": true,
|
||||||
|
"engine_ended": true,
|
||||||
|
"guard_errors": [],
|
||||||
|
"cleanup_errors": [],
|
||||||
|
"suites": [
|
||||||
|
{
|
||||||
|
"test": "tests/transport/test_runtime_build_preview.gd",
|
||||||
|
"checks": 80,
|
||||||
|
"failures": 0,
|
||||||
|
"actual_pid": 55871,
|
||||||
|
"source_sha256": "c881b60bce7276047884303a6823da9abfaaf8c1e85dbc5f2c0ff13f0d742449",
|
||||||
|
"completion_marker": "Runtime build preview: 80 checks, 0 failures\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "tests/transport/test_runtime_stairs.gd",
|
||||||
|
"checks": 67,
|
||||||
|
"failures": 0,
|
||||||
|
"actual_pid": 55899,
|
||||||
|
"source_sha256": "72f368006ddecd26c3b29f3bcf622e89b8becee337c071d2f246d2b583617bda",
|
||||||
|
"completion_marker": "Runtime stairs: 67 checks, 0 failures\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "tests/s1/test_construction_service.gd",
|
||||||
|
"checks": 105,
|
||||||
|
"failures": 0,
|
||||||
|
"actual_pid": 55916,
|
||||||
|
"source_sha256": "ce63074b84cb75d710eb3650701a9cb2acf920ff607e41be645904fc2395e2c3",
|
||||||
|
"completion_marker": "PASS: 105 checks\n"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test": "tests/ui/test_original_build_pointer.gd",
|
||||||
|
"checks": 50,
|
||||||
|
"failures": 0,
|
||||||
|
"actual_pid": 55941,
|
||||||
|
"source_sha256": "a04a79c5e766659d10c4564d1f11c6554a27cb8af71431295e10bc4967012913",
|
||||||
|
"completion_marker": "Original build viewport input: 50 checks, 0 failures\n"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"preview_observations": 8,
|
||||||
|
"proof_bundle": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-runtime-preview/.runtime/P08-03-RTPREVIEW/build/runtime-preview-proof.json",
|
||||||
|
"review": "actual independent Opus running; no approval or integration yet",
|
||||||
|
"original_units_added": 0
|
||||||
|
}
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"positive_observations": 8,
|
||||||
|
"controls": {
|
||||||
|
"snapshot_changed": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "native snapshot/queue bytes changed"
|
||||||
|
},
|
||||||
|
"events_changed": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "native counters changed"
|
||||||
|
},
|
||||||
|
"positive_missing": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "missing/duplicate native preview observations"
|
||||||
|
},
|
||||||
|
"duplicate_observation": {
|
||||||
|
"rejected": true,
|
||||||
|
"reason": "missing/duplicate native preview observations"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"native_runs_added": 0,
|
||||||
|
"original_units_added": 0
|
||||||
|
}
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"raw_sha256": "ba2bd0b0a14629630e1bb0e5a007e2e933a81c7dbe9ca9b7208b5ef504b01732",
|
||||||
|
"normalized_sha256": "949e00de465d86afd575ff03b7b575709fe0fc4d19d3b63a3a1a03929fe05969",
|
||||||
|
"contract_matches": true,
|
||||||
|
"explanation": "Runner git() strips trailing newline; raw file hash differs without content change"
|
||||||
|
}
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
"""Audit inherited accepted input without broadening P08's editable scope."""
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
RECORD = Path(__file__).with_name('ACCEPTED_DEPENDENCY_INPUT.json')
|
||||||
|
|
||||||
|
|
||||||
|
def raw_git(repo, *args):
|
||||||
|
return subprocess.check_output(['git', '-C', str(repo), *args])
|
||||||
|
|
||||||
|
|
||||||
|
def names(repo, *args):
|
||||||
|
return [s.decode('utf-8') for s in raw_git(repo, *args).split(b'\0') if s]
|
||||||
|
|
||||||
|
|
||||||
|
def record_for(runner, task_id):
|
||||||
|
record = json.loads(RECORD.read_text())
|
||||||
|
assert runner.config['project'] == record['project'] and task_id == record['task']
|
||||||
|
task = runner.task(task_id)
|
||||||
|
contract = json.loads(task['contract'])
|
||||||
|
assert hashlib.sha256(task['contract'].encode()).hexdigest() == record['contract_sha256']
|
||||||
|
assert hashlib.sha256((runner.root / 'acceptance_baseline.json').read_bytes()).hexdigest() == record['baseline_sha256']
|
||||||
|
assert contract['base_commit'] == record['original_base']
|
||||||
|
trace = json.loads(Path(record['support_trace']).read_text())
|
||||||
|
assert trace['integration_commit'] == record['support_integration']
|
||||||
|
assert any(e['kind'] == 'final' and e['passed'] == 1 for e in trace['evidence'])
|
||||||
|
return record, contract
|
||||||
|
|
||||||
|
|
||||||
|
def audit(runner, task_id, wt, commit=None, allow_empty=False):
|
||||||
|
from runner.core import allowed, secret_path, git, require
|
||||||
|
record, contract = record_for(runner, task_id)
|
||||||
|
wt = Path(wt)
|
||||||
|
revision = commit or git(wt, 'rev-parse', 'HEAD')
|
||||||
|
git(wt, 'merge-base', '--is-ancestor', record['accepted_input_commit'], revision)
|
||||||
|
git(wt, 'merge-base', '--is-ancestor', record['boundary'], record['accepted_input_commit'])
|
||||||
|
inherited = names(wt, 'diff', '--name-only', '-z', '--no-renames', record['original_base'], revision)
|
||||||
|
for path in inherited:
|
||||||
|
require(not secret_path(path), 'inherited secret path denied: ' + path)
|
||||||
|
entry = raw_git(wt, 'ls-tree', revision, '--', path)
|
||||||
|
require(not entry.startswith(b'120000 '), 'inherited symlink denied: ' + path)
|
||||||
|
if not allowed(path, contract['allowed_paths']):
|
||||||
|
require(entry == raw_git(wt, 'ls-tree', record['boundary'], '--', path),
|
||||||
|
'noneditable accepted input changed: ' + path)
|
||||||
|
spec = git(wt, 'show', revision + ':' + contract['spec_ref'].split('#')[0])
|
||||||
|
require(hashlib.sha256(spec.encode()).hexdigest() == contract['spec_sha256'], 'original spec pin changed')
|
||||||
|
args = ['diff', '--name-only', '-z', '--no-renames', record['accepted_input_commit']]
|
||||||
|
if commit:
|
||||||
|
args.append(commit)
|
||||||
|
changed = names(wt, *args)
|
||||||
|
if not commit:
|
||||||
|
changed += names(wt, 'ls-files', '--others', '--exclude-standard', '-z')
|
||||||
|
require(changed or allow_empty, 'no authored change after accepted input')
|
||||||
|
for path in changed:
|
||||||
|
require(allowed(path, contract['allowed_paths']) and not secret_path(path), 'scope_violation: ' + path)
|
||||||
|
require(not (wt / path).is_symlink(), 'scope_violation: symlink ' + path)
|
||||||
|
return sorted(set(changed))
|
||||||
|
|
||||||
|
|
||||||
|
def install(core):
|
||||||
|
original_scope = core.Runner.check_scope
|
||||||
|
original_submit = core.Runner.submit
|
||||||
|
|
||||||
|
def selected(runner, task):
|
||||||
|
return runner.config['project'] == 'the-tree-p08-03-code' and task == 'P08-03' and RECORD.exists()
|
||||||
|
|
||||||
|
def scope(runner, task_id, wt, commit=None):
|
||||||
|
if selected(runner, task_id):
|
||||||
|
return audit(runner, task_id, wt, commit)
|
||||||
|
return original_scope(runner, task_id, wt, commit)
|
||||||
|
|
||||||
|
def submit(runner, task_id):
|
||||||
|
if not selected(runner, task_id):
|
||||||
|
return original_submit(runner, task_id)
|
||||||
|
record, contract = record_for(runner, task_id)
|
||||||
|
task = runner.task(task_id)
|
||||||
|
if task['submitted'] != record['prior_submitted']:
|
||||||
|
return original_submit(runner, task_id)
|
||||||
|
head = core.git(Path(task['worktree']), 'rev-parse', 'HEAD')
|
||||||
|
core.require(head == record['accepted_input_commit'], 'unrecorded worker commit')
|
||||||
|
audit(runner, task_id, Path(task['worktree']))
|
||||||
|
actual_task = runner.task
|
||||||
|
|
||||||
|
def input_task(tid):
|
||||||
|
value = dict(actual_task(tid))
|
||||||
|
if tid == task_id:
|
||||||
|
value['submitted'] = record['accepted_input_commit']
|
||||||
|
return value
|
||||||
|
|
||||||
|
runner.task = input_task
|
||||||
|
try:
|
||||||
|
result = original_submit(runner, task_id)
|
||||||
|
finally:
|
||||||
|
runner.task = actual_task
|
||||||
|
runner.event(task_id, 'accepted_input_submission', dict(
|
||||||
|
prior_submitted=record['prior_submitted'], accepted_input=record['accepted_input_commit'],
|
||||||
|
original_contract_unchanged=True, editable_paths_added=0))
|
||||||
|
return result
|
||||||
|
|
||||||
|
core.Runner.check_scope = scope
|
||||||
|
core.Runner.submit = submit
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
"""Read-only route to SHA-fixed proof for the existing P08 task, not new permissions to write."""
|
||||||
|
import hashlib,json
|
||||||
|
from pathlib import Path
|
||||||
|
def install(core):
|
||||||
|
pins=json.loads(Path(__file__).with_name("D369_REGISTERED_PROOF_READ_PINS.json").read_text());runtime=Path(pins["runtime"]).resolve();parent=runtime.parents[1];original=core.seatbelt
|
||||||
|
def scoped(worktree,run_root,writable,service=None):
|
||||||
|
profile=original(worktree,run_root,writable,service)
|
||||||
|
if Path(run_root).resolve()!=runtime or Path(worktree).resolve().parent!=parent or not Path(worktree).name.startswith("P08-03-"):return profile
|
||||||
|
core.require(core.git(worktree,"rev-parse","HEAD")==pins["candidate"],"exact proof candidate")
|
||||||
|
roots=[]
|
||||||
|
for row in pins["roots"]:
|
||||||
|
path=Path(row["path"]).resolve();core.require(path.name.startswith("p08-03-") and path.parent.name=="original-completion-2026-10-02","same-task proof root")
|
||||||
|
core.require(hashlib.sha256((path/row["pin_file"]).read_bytes()).hexdigest()==row["sha256"],"fixed original proof pin")
|
||||||
|
roots.append(path)
|
||||||
|
rows=profile.splitlines();slots=[i for i,s in enumerate(rows)if s.startswith("(deny file-read-data (require-all ")];core.require(len(slots)==1,"known read profile")
|
||||||
|
clauses=set()
|
||||||
|
for origin in roots:
|
||||||
|
clauses.add("(require-not (subpath "+json.dumps(str(origin),ensure_ascii=False)+"))")
|
||||||
|
for p in origin.parents:
|
||||||
|
if p.is_relative_to(Path.home()):clauses.add("(require-not (literal "+json.dumps(str(p),ensure_ascii=False)+"))")
|
||||||
|
i=slots[0];core.require(rows[i].endswith("))"),"known read profile ending");rows[i]=rows[i][:-2]+" "+" ".join(sorted(clauses))+") )"
|
||||||
|
return "\n".join(rows)
|
||||||
|
core.seatbelt=scoped
|
||||||
+5327
File diff suppressed because it is too large
Load Diff
+37
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"started_at": "2026-10-13T19:19:51.362993+00:00",
|
||||||
|
"ended_at": "2026-10-13T19:20:39.117228+00:00",
|
||||||
|
"syntax": {
|
||||||
|
"method": "compile(source, filename, exec); no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "5baea283760e04f23abefcf576f9a3e8230b96ed30d82569528dcd211a6032cf",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "ebf6c0ef2c32dc8fac61d570a7fea99c1ac2499b92399db32afec26147b9d84c",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "0d12e09e5342a016bc9e61c056b07357e761c29f9d82fbf941ce524f51ff131e"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"exit_code": 0,
|
||||||
|
"log": "repair-r02-local-checker-tests.log",
|
||||||
|
"log_sha256": "0cb0e9deddcd9d90883a9416ecfed346bf1f4337a51247d08a39d49160313129",
|
||||||
|
"synthetic_only": true,
|
||||||
|
"test_count": 49,
|
||||||
|
"retained_previous_tests": 35,
|
||||||
|
"new_semantic_tests": 14
|
||||||
|
},
|
||||||
|
"local_source_manifest": "local-source-manifest.json",
|
||||||
|
"local_source_manifest_sha256": "25b7492044046b5c8498f968b648392b592d42e266b2ff6fdb4773e52ba3e451",
|
||||||
|
"source_and_inputs_unchanged_during_tests": true,
|
||||||
|
"git_diff_check": "pass",
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending"
|
||||||
|
}
|
||||||
+5330
File diff suppressed because it is too large
Load Diff
+38
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"started_at": "2026-10-13T19:51:22.470024+00:00",
|
||||||
|
"ended_at": "2026-10-13T19:52:12.939899+00:00",
|
||||||
|
"syntax": {
|
||||||
|
"method": "compile in memory; no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "7fbc115599782b2b7e98f9df855e72b076580b74f6a17aa255d16f2566fe6285",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "3a5fb02b944a9eff808458df897574232f9e5609d828031562e93d9920b9cfbb",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "062333148bfb570f2191317f1634e5dd1495cf3602221fc9a054dd9243597669"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"timeout_seconds": 900,
|
||||||
|
"exit_code": 0,
|
||||||
|
"log": "repair-r04-local-checker-tests.log",
|
||||||
|
"log_sha256": "e54ecf761ca49aebe01fc1a13367ba01aa0f437ba649b781b1c8feb3a6f8bbc6",
|
||||||
|
"synthetic_only": true,
|
||||||
|
"test_count": 56,
|
||||||
|
"retained_previous_tests": 49,
|
||||||
|
"new_semantic_tests": 7
|
||||||
|
},
|
||||||
|
"source_and_inputs_unchanged_during_tests": true,
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending",
|
||||||
|
"local_source_manifest": "local-source-manifest.json",
|
||||||
|
"local_source_manifest_sha256": "533748d30a8fb7b7e78930cf2c08139e980f75341ba772f062780d2056ec2900",
|
||||||
|
"git_diff_check": "pass"
|
||||||
|
}
|
||||||
+6665
File diff suppressed because it is too large
Load Diff
+38
@@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"started_at": "2026-10-13T20:49:58.133267+00:00",
|
||||||
|
"ended_at": "2026-10-13T20:51:06.466499+00:00",
|
||||||
|
"syntax": {
|
||||||
|
"method": "ast.parse in memory; no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "d40edc5518e8bfcb59a1da3f55305955581209cfd24a0223c764d6e39c4c361e",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "508e8bc0f9ff3dc578a3b34fdfb3354fe31e5e604e2d7731cd25511c4261e93a"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"timeout_seconds": 900,
|
||||||
|
"exit_code": 0,
|
||||||
|
"log": "repair-r05-local-checker-tests.log",
|
||||||
|
"log_sha256": "84c71a911af1ea79ad6cb005513ce2d3b245a1cc3577baa014817714dc08d413",
|
||||||
|
"test_count": 75,
|
||||||
|
"retained_previous_tests": 56,
|
||||||
|
"new_tests": 19,
|
||||||
|
"synthetic_and_actual_snapshot_controls_only": true
|
||||||
|
},
|
||||||
|
"source_and_inputs_unchanged_during_tests": true,
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending",
|
||||||
|
"local_source_manifest": "local-source-manifest.json",
|
||||||
|
"local_source_manifest_sha256": "f897d2713f64e1b3338e3e24a9e61859db190643a6eadbd202dde91c5bb0df04",
|
||||||
|
"git_diff_check": "pass"
|
||||||
|
}
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"started_at": "2026-10-13T20:48:14.426031+00:00",
|
||||||
|
"ended_at": "2026-10-13T20:49:23.475326+00:00",
|
||||||
|
"syntax": {
|
||||||
|
"method": "ast.parse in memory; no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "191831b4f684bdd7e99b3be6038c15a6830f544d17c941869b1c2a8fbe4a2aa3",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "de55cb674ef7163ab9c6dfceba4ae42fb0a43bc718df51fa63dc2f271bcbf1b7",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "508e8bc0f9ff3dc578a3b34fdfb3354fe31e5e604e2d7731cd25511c4261e93a"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"timeout_seconds": 900,
|
||||||
|
"exit_code": 1,
|
||||||
|
"log": "repair-r05-local-checker-tests.log",
|
||||||
|
"log_sha256": "b6f30299c9383c77553e946cff853894e7a53a8a9e88bdd15342dd9ede457242",
|
||||||
|
"test_count": 75,
|
||||||
|
"retained_previous_tests": 56,
|
||||||
|
"new_tests": 19,
|
||||||
|
"synthetic_and_actual_snapshot_controls_only": true
|
||||||
|
},
|
||||||
|
"source_and_inputs_unchanged_during_tests": true,
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending",
|
||||||
|
"local_source_manifest": "local-source-manifest.json",
|
||||||
|
"local_source_manifest_sha256": "b3141b695926da4e45a04d576c4f2922dee62e5f316a428798d3c5edf82c7fea"
|
||||||
|
}
|
||||||
+25
@@ -0,0 +1,25 @@
|
|||||||
|
........................................................FF.................
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_whole_checker_missing_stair_projection (__main__.EvidenceTests)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 349, in test_whole_checker_missing_stair_projection
|
||||||
|
self.reject('missing/extra infrastructure projection')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 48, in reject
|
||||||
|
self.assertIn(text, ' '.join(errors))
|
||||||
|
AssertionError: 'missing/extra infrastructure projection' not found in "wrong resume model: source-defined operation drift reader [('systems', 'runtime', 'facility_infrastructure', 'projections')]"
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_whole_checker_wrong_stair_connector (__main__.EvidenceTests)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 353, in test_whole_checker_wrong_stair_connector
|
||||||
|
self.reject('wrong infrastructure connector topology')
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 48, in reject
|
||||||
|
self.assertIn(text, ' '.join(errors))
|
||||||
|
AssertionError: 'wrong infrastructure connector topology' not found in "wrong resume model: source-defined operation drift reader [('systems', 'runtime', 'path', 'connectors', '0', 'cost')]"
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 75 tests in 65.677s
|
||||||
|
|
||||||
|
FAILED (failures=2)
|
||||||
File diff suppressed because it is too large
Load Diff
+113
@@ -0,0 +1,113 @@
|
|||||||
|
"""Bind immutable executed P08 proof to a merge with equal product/input bytes.
|
||||||
|
|
||||||
|
Only progress-summary line 3 in IMPLEMENTATION_PLAN may differ. Never mutate
|
||||||
|
the executed index, receipts, screenshots or full-regression evidence.
|
||||||
|
"""
|
||||||
|
import difflib
|
||||||
|
import hashlib
|
||||||
|
import importlib.util
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
E = 'd369d1c399f7506bdb8d980b642ad0da216d14f4'
|
||||||
|
R = Path('/Users/korizatou114/Projects/とりにく工房ゲーム制作部')
|
||||||
|
W = Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement')
|
||||||
|
D = R/'docs/plans/original-completion-2026-10-02/execution/p08-03'
|
||||||
|
A = R/'artifacts/original-completion-2026-10-02'
|
||||||
|
PROOF = A/'p08-03-native-os-d369d1c-r19-calibrated'
|
||||||
|
FULL = A/'p08-03-final-regression-d369d1c-r01'
|
||||||
|
PLAN = 'docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md'
|
||||||
|
INDEX_SHA = 'fc66a95ab228e70fd1e1aa40b92f8cb6890f8c9879c2be79940e969cb9a3521b'
|
||||||
|
|
||||||
|
def sha(p):
|
||||||
|
h = hashlib.sha256()
|
||||||
|
with Path(p).open('rb') as f:
|
||||||
|
for b in iter(lambda:f.read(1048576), b''): h.update(b)
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
def git(p, *args):
|
||||||
|
return subprocess.check_output(['git','-C',str(p),*args])
|
||||||
|
|
||||||
|
def need(ok, message):
|
||||||
|
if not ok: raise ValueError(message)
|
||||||
|
|
||||||
|
def load(p): return json.loads(Path(p).read_bytes())
|
||||||
|
|
||||||
|
def checker():
|
||||||
|
spec = importlib.util.spec_from_file_location('p08_executed_checker',W/'tools/check_p08_normal_placement_evidence.py')
|
||||||
|
m = importlib.util.module_from_spec(spec); spec.loader.exec_module(m); return m
|
||||||
|
|
||||||
|
def bind(runner, task_id, wt, final_sha, kind):
|
||||||
|
need(runner.config['project']=='the-tree-p08-03-code' and task_id=='P08-03', 'exact task')
|
||||||
|
need(kind in ('integration','final'), 'exact verification kind')
|
||||||
|
wt=Path(wt); task=runner.task(task_id)
|
||||||
|
need(task['submitted']==E and git(W,'rev-parse','HEAD').decode().strip()==E, 'executed revision')
|
||||||
|
need(not git(W,'status','--porcelain').strip() and not git(wt,'status','--porcelain').strip(), 'clean sources')
|
||||||
|
need(git(wt,'rev-parse','HEAD').decode().strip()==final_sha, 'final revision')
|
||||||
|
runner.has_evidence(task_id,'validation',E); runner.has_evidence(task_id,'review',E)
|
||||||
|
parents=git(wt,'show','-s','--format=%P',final_sha).decode().split()
|
||||||
|
need(len(parents)==2 and parents[1]==E, 'exact two-parent merge')
|
||||||
|
main_base=parents[0]
|
||||||
|
if kind=='integration': need(git(runner.repo,'rev-parse','main').decode().strip()==main_base, 'current main base')
|
||||||
|
else: need(task['candidate']==final_sha and task['main_base']==main_base, 'registered final binding')
|
||||||
|
# The merge must be exactly Git's ordinary merge of these two inputs.
|
||||||
|
merged=git(wt,'merge-tree','--write-tree',main_base,E).decode().splitlines()[0]
|
||||||
|
need(merged==git(wt,'rev-parse',final_sha+'^{tree}').decode().strip(), 'unexpected merge edits')
|
||||||
|
need(sha(PROOF/'index.json')==INDEX_SHA, 'immutable raw index')
|
||||||
|
idx=load(PROOF/'index.json'); need(idx['commit']==E, 'raw executed SHA')
|
||||||
|
gate=checker()
|
||||||
|
sources={n:v['sha256'] for n,v in gate.runner.source_refs(wt).items()}
|
||||||
|
need(sources==idx['source_map'], 'product/source inventory changed')
|
||||||
|
inputs=gate.input_map(wt); old=idx['inputs']
|
||||||
|
need(set(inputs)==set(old), 'input roster changed')
|
||||||
|
need(all(v==old[n] for n,v in inputs.items() if n!=PLAN), 'non-plan input changed')
|
||||||
|
before=(W/PLAN).read_bytes(); after=(wt/PLAN).read_bytes()
|
||||||
|
a=before.splitlines(keepends=True); b=after.splitlines(keepends=True)
|
||||||
|
need(len(a)==len(b) and a[:2]==b[:2] and a[3:]==b[3:], 'normative plan changed beyond progress line 3')
|
||||||
|
need('現在の閉鎖対象はP08-03。'.encode() in a[2] and '現在の閉鎖対象はP08-03。'.encode() in b[2], 'progress summary format')
|
||||||
|
need(sha(wt/gate.CONTRACT)==idx['marker_contract_sha256'], 'marker changed')
|
||||||
|
deficits=gate.check(W,PROOF); need(deficits==[], 'unchanged original checker failed: '+str(deficits))
|
||||||
|
# Rehash every raw proof member even though unchanged checker also does so.
|
||||||
|
manifest={}
|
||||||
|
for n,pin in idx['artifacts'].items():
|
||||||
|
p=PROOF/n
|
||||||
|
need(not p.is_symlink() and p.resolve().is_relative_to(PROOF.resolve()), 'unsafe proof path')
|
||||||
|
need(p.stat().st_size==pin['bytes'] and sha(p)==pin['sha256'], 'raw proof changed: '+n)
|
||||||
|
manifest[n]=pin
|
||||||
|
need(sha(D/'FULL_REGRESSION_D369D1C_R01_PASS.json')=='1591f0c7fceac1586f044dd3632f6fd286599d921f8da38b7a07971c3d5a2681', 'immutable full receipt manifest')
|
||||||
|
full_pin=load(D/'FULL_REGRESSION_D369D1C_R01_PASS.json')
|
||||||
|
for pin in full_pin['references']:
|
||||||
|
p=R/pin['path']; need(sha(p)==pin['sha256'] and p.stat().st_size==pin['bytes'], 'full receipt changed')
|
||||||
|
f=load(FULL/'runner-input.json'); end=load(FULL/'runner-ended.json')
|
||||||
|
need(f['selected_source_map']==sources, 'full regression source mismatch')
|
||||||
|
need(end['passed'] and end['engine_ended'] and end['actual_suites']==176 and end['strict_accepted_checks']==20488, 'full regression incomplete')
|
||||||
|
need(not any(end[k] for k in ('error','cleanup_errors','guard_errors','missing_marker_paths','remaining_unexecuted_tests','failed_suites')), 'full regression failures')
|
||||||
|
native=load(PROOF/'runner-input.json')
|
||||||
|
need(f['engine']==native['engine'] and f['engine_sha256']==native['engine_sha256']==sha(f['engine']), 'engine changed')
|
||||||
|
# Exact source map and unchanged gate bind fixture, environment subset,
|
||||||
|
# command/configuration, teardown, audio and image request provenance.
|
||||||
|
out=Path(runner.allocation(task_id)['build_dir'])/('integration-applicability-'+final_sha+'-'+kind+'.json')
|
||||||
|
result={'passed':True,'kind':kind,'executed_sha':E,'final_sha':final_sha,'main_base':main_base,
|
||||||
|
'raw_index_sha256':INDEX_SHA,'raw_artifacts':manifest,'source_files_equal':len(sources),
|
||||||
|
'input_map_executed':old,'input_map_final':inputs,'unchanged_checker_deficits':deficits,
|
||||||
|
'plan_executed':before.decode(),'plan_final':after.decode(),
|
||||||
|
'plan_diff':''.join(difflib.unified_diff(before.decode().splitlines(True),after.decode().splitlines(True),fromfile=E,tofile=final_sha)),
|
||||||
|
'plan_only_progress_summary_changed':True,'full_suites':176,'strict_checks':20488,
|
||||||
|
'full_receipt_pins':full_pin['references'],'engine_sha256':f['engine_sha256'],
|
||||||
|
'new_native_runs':0,'new_os_runs':0,'raw_evidence_modified':False,
|
||||||
|
'scope':'P08-03 macOS acceptance only; diagnostic setup; no Windows acceptance'}
|
||||||
|
raw=(json.dumps(result,ensure_ascii=False,indent=2)+'\n').encode()
|
||||||
|
if out.exists(): need(out.read_bytes()==raw,'existing binding changed')
|
||||||
|
else: out.write_bytes(raw)
|
||||||
|
runner.evidence(task_id,kind,final_sha,out,True)
|
||||||
|
runner.event(task_id,'immutable_executed_proof_applicability',{'executed_sha':E,'final_sha':final_sha,'kind':kind,'report':str(out),'sha256':sha(out)})
|
||||||
|
return out
|
||||||
|
|
||||||
|
def install(core):
|
||||||
|
original=core.Runner.verify
|
||||||
|
def verify(runner, task_id, wt, sha_, kind):
|
||||||
|
if runner.config['project']=='the-tree-p08-03-code' and task_id=='P08-03' and kind in ('integration','final'):
|
||||||
|
return bind(runner,task_id,wt,sha_,kind)
|
||||||
|
return original(runner,task_id,wt,sha_,kind)
|
||||||
|
core.Runner.verify=verify
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
...................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 35 tests in 17.918s
|
||||||
|
|
||||||
|
OK
|
||||||
+6666
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"syntax": {
|
||||||
|
"method": "ast.parse in memory; no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "dfa37ed586240972e57cbb6a962beb856ba289abd58dbfaf83706d3a227a0116",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "8b98647990e45588e117b6e9ecb87e5a1fcf8d83ddbd6c27da8b0a2edd74da86",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "508e8bc0f9ff3dc578a3b34fdfb3354fe31e5e604e2d7731cd25511c4261e93a"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"python3",
|
||||||
|
"-B",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"timeout_seconds": 900,
|
||||||
|
"exit_code": 0,
|
||||||
|
"log": "repair-r06-mock-sync-local-checker-tests.log",
|
||||||
|
"log_sha256": "74a86ece9204fadf39c763ec089b46b94ecfb9a04206c4aaeaeadda423879bda",
|
||||||
|
"test_count": 75,
|
||||||
|
"failures": 0
|
||||||
|
},
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending",
|
||||||
|
"local_source_manifest_sha256": "a8f442062ef4d4c791e07ad00271c7123c80997bf76897f12c78c303d90173a8"
|
||||||
|
}
|
||||||
+89
@@ -0,0 +1,89 @@
|
|||||||
|
ERROR: P08 placement: diagnostic initial formal save
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] save_initial_fixture (res://tests/fixtures/p08-03/placement.gd:306)
|
||||||
|
[2] writer (res://tests/fixtures/p08-03/placement.gd:208)
|
||||||
|
[3] run (res://tests/fixtures/p08-03/placement.gd:261)
|
||||||
|
[4] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: unsupported preview refusal
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:115)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: out_of_bounds preview refusal
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:115)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: supported_connected accepted
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:111)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: overlap preview refusal
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:115)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: missing_connection domain refusal
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:113)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: lower_stair accepted
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:111)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: upper_stair accepted
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:111)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: refused_demolition result code
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] demolish (res://tests/fixtures/p08-03/placement.gd:145)
|
||||||
|
[2] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: refused_demolition result reason
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] demolish (res://tests/fixtures/p08-03/placement.gd:146)
|
||||||
|
[2] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: demolition result code
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] demolish (res://tests/fixtures/p08-03/placement.gd:145)
|
||||||
|
[2] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: rebuild accepted
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] build (res://tests/fixtures/p08-03/placement.gd:111)
|
||||||
|
[2] click (res://tests/fixtures/p08-03/placement.gd:94)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
|
ERROR: P08 placement: normal save
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:33)
|
||||||
|
[1] writer (res://tests/fixtures/p08-03/placement.gd:223)
|
||||||
|
[2] button (res://tests/fixtures/p08-03/placement.gd:73)
|
||||||
|
[3] frames (res://tests/fixtures/p08-03/placement.gd:65)
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
ERROR: P08 placement: whole formal resume model
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:36)
|
||||||
|
[1] reader (res://tests/fixtures/p08-03/placement.gd:249)
|
||||||
|
[2] frames (res://tests/fixtures/p08-03/placement.gd:68)
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
Godot Engine v4.7.2.stable.official.ed1daf0bf - https://godotengine.org
|
||||||
|
OpenGL API 4.1 Metal - 90.5 - Compatibility - Using Device: Apple - Apple M4
|
||||||
|
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r04/os-pair/writer-request-0001/request.json
|
||||||
|
ERROR: P08 placement: OS initial formal model exact
|
||||||
|
at: push_error (core/variant/variant_utility.cpp:1023)
|
||||||
|
GDScript backtrace (most recent call first):
|
||||||
|
[0] expect (res://tests/fixtures/p08-03/placement.gd:37)
|
||||||
|
[1] setup (res://tests/fixtures/p08-03/passive_placement.gd:78)
|
||||||
|
[2] load_menu (res://tests/fixtures/p08-03/passive_placement.gd:155)
|
||||||
|
[3] request (res://tests/fixtures/p08-03/passive_placement.gd:51)
|
||||||
|
[4] frames (res://tests/fixtures/p08-03/placement.gd:71)
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r04/os-pair/writer-request-0002/request.json
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r04/os-pair/writer-request-0003/request.json
|
||||||
|
P08_ROOT_CUA_WAIT /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-native-os-r04/os-pair/writer-request-0004/request.json
|
||||||
+8
@@ -0,0 +1,8 @@
|
|||||||
|
extends SceneTree
|
||||||
|
const Passive := preload("res://tests/fixtures/p08-03/passive_placement.gd")
|
||||||
|
func _initialize() -> void:
|
||||||
|
call_deferred("run")
|
||||||
|
func run() -> void:
|
||||||
|
var result: Dictionary = await Passive.new().run(self, OS.get_environment("P08_PLACEMENT_ROOT"), OS.get_environment("P08_PLACEMENT_ROLE"))
|
||||||
|
print("P08 passive OS placement: %d checks, %d failures" % [result.checks, result.failures])
|
||||||
|
quit(0 if result.failures == 0 else 1)
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
uid://c08passiver03
|
||||||
+8620
File diff suppressed because it is too large
Load Diff
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 35 tests in 18.245s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
.................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 49 tests in 44.792s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
........................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 56 tests in 49.916s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...........................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 75 tests in 66.488s
|
||||||
|
|
||||||
|
OK
|
||||||
+19
@@ -0,0 +1,19 @@
|
|||||||
|
..................F........................................................
|
||||||
|
======================================================================
|
||||||
|
FAIL: test_mock_native_controller_two_private_pids (__main__.EvidenceTests)
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Traceback (most recent call last):
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 430, in test_mock_native_controller_two_private_pids
|
||||||
|
self.collector_mock()
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/test_p08_normal_placement_evidence.py", line 423, in collector_mock
|
||||||
|
phases = D.collect_os(r,self.root,output,stage,str(Path(self.temp.name)/'synthetic-engine-not-executable'),'1'*40,refs,protected,outer)
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_p08_normal_placement.py", line 120, in collect_os
|
||||||
|
r.require(passed, 'native OS collection failed: '+str(error or guards or cleanup_errors))
|
||||||
|
File "/Users/korizatou114/Projects/TheTree-managed-worktrees/p08-03-code/P08-03-implement/tools/run_all_tests.py", line 22, in require
|
||||||
|
if not ok: raise AssertionError(reason)
|
||||||
|
AssertionError: native OS collection failed: AssertionError: 900 != 2400
|
||||||
|
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 75 tests in 64.918s
|
||||||
|
|
||||||
|
FAILED (failures=1)
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...........................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 75 tests in 65.333s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...................................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 83 tests in 73.589s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...................................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 83 tests in 75.150s
|
||||||
|
|
||||||
|
OK
|
||||||
+6670
File diff suppressed because it is too large
Load Diff
+29
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"task_id": "P08-03",
|
||||||
|
"syntax": {
|
||||||
|
"method": "ast.parse in memory; no pyc",
|
||||||
|
"files": {
|
||||||
|
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
|
||||||
|
"tools/check_p08_normal_placement_evidence.py": "e3fea19be9952cd99be4df003734c43e6f81580b79984addb3622d81c1a2cc4e",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py": "f75ce5a2aeee080864d252dc4285e32f107ce0b48b7f62dd598665a13ffa5637",
|
||||||
|
"tests/fixtures/p08-03/checker_fixture.py": "e83a94dfcfd490a99bd44ed71bd6c378de94413750cfce68dea938bfbbbf011f"
|
||||||
|
},
|
||||||
|
"passed": true
|
||||||
|
},
|
||||||
|
"checker_tests": {
|
||||||
|
"argv": [
|
||||||
|
"python3",
|
||||||
|
"tools/test_p08_normal_placement_evidence.py"
|
||||||
|
],
|
||||||
|
"exit_code": 0,
|
||||||
|
"log": "repair-r07-final-local-checker-tests.log",
|
||||||
|
"log_sha256": "60c535311af9c32b5f8ce706d88f99ef963217d000c1d12f8bcdd62b2a2ad0c3",
|
||||||
|
"test_count": 83,
|
||||||
|
"failures": 0
|
||||||
|
},
|
||||||
|
"native_engines_started": 0,
|
||||||
|
"OS_operations": 0,
|
||||||
|
"full_regression_executed": false,
|
||||||
|
"acceptance": "pending",
|
||||||
|
"local_source_manifest_sha256": "bd23d9f9ce58be85ebd3749112b281d7d71cf4eb9733d4aecf2e57a15f4e8ca7"
|
||||||
|
}
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...................................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 83 tests in 76.743s
|
||||||
|
|
||||||
|
OK
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
...................................................................................
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Ran 83 tests in 74.493s
|
||||||
|
|
||||||
|
OK
|
||||||
+6673
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user