Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e930a1dedf | ||
|
|
1e8d4ea888 | ||
|
|
2f3884be11 | ||
|
|
565fd80507 | ||
|
|
c80c1688fa |
@@ -20,6 +20,7 @@ const OPERATING_EXPENSE_ACCOUNT := &"OPERATING_EXPENSE"
|
||||
const AUTHORITY_FINE_ACCOUNT := &"AUTHORITY_FINE_EXPENSE"
|
||||
const WAGE_EXPENSE_ACCOUNT := &"WAGE_EXPENSE"
|
||||
const RUNTIME_SNAPSHOT_VERSION := 14
|
||||
const PeepingRooms := preload("res://scripts/special/peeping_room_service.gd")
|
||||
const AUTO_PURCHASE_RUNTIME_SNAPSHOT_VERSION := 14
|
||||
const EVENT_THREAT_RUNTIME_SNAPSHOT_VERSION := 13
|
||||
const MIMI_PURCHASE_RUNTIME_SNAPSHOT_VERSION := 15
|
||||
@@ -97,6 +98,7 @@ const DEFENSE_COMMAND_TYPES: Array[StringName] = [
|
||||
var definition_registry := DefinitionRegistry.new()
|
||||
var command_queue := CommandQueue.new()
|
||||
var id_generator := StableIdGenerator.new()
|
||||
var peeping_room_service := PeepingRooms.new()
|
||||
var domain_events := DomainEventStream.new()
|
||||
var world_service := WorldService.new()
|
||||
var path_service := PathService.new()
|
||||
@@ -233,6 +235,7 @@ func initialize(clock: SimulationKernel, state: Variant, seed := DEFAULT_WORLD_S
|
||||
_hired_staff_candidate_ids.clear()
|
||||
command_queue = CommandQueue.new()
|
||||
id_generator = StableIdGenerator.new()
|
||||
peeping_room_service = PeepingRooms.new()
|
||||
domain_events = DomainEventStream.new()
|
||||
world_service = WorldService.new()
|
||||
path_service = PathService.new()
|
||||
@@ -253,6 +256,7 @@ func initialize(clock: SimulationKernel, state: Variant, seed := DEFAULT_WORLD_S
|
||||
_initialize_s5_defense()
|
||||
construction_service = ConstructionService.new(world_service, construction_resource_state)
|
||||
construction_service.current_minute = _clock.absolute_minute
|
||||
peeping_room_service.configure(world_service, facility_service, construction_service, path_service, id_generator)
|
||||
_connect_construction_signals()
|
||||
var initial_infrastructure_ok := _initialize_infrastructure_services()
|
||||
_next_command_id = 1
|
||||
@@ -298,6 +302,8 @@ func initialize(clock: SimulationKernel, state: Variant, seed := DEFAULT_WORLD_S
|
||||
register_command_executor(&"build_facility", Callable(self, "_execute_build_facility"))
|
||||
register_command_executor(&"cancel_construction", Callable(self, "_execute_cancel_construction"))
|
||||
register_command_executor(&"demolish_facility", Callable(self, "_execute_demolish_facility"))
|
||||
for command_type: StringName in [&"peeping_room_validate", &"peeping_room_place", &"peeping_room_relink", &"peeping_room_record_evidence"]:
|
||||
register_command_executor(command_type, Callable(self, "_execute_peeping_room"))
|
||||
register_command_executor(&"set_elevator_operation", Callable(self, "_execute_set_elevator_operation"))
|
||||
register_command_executor(&"start_excavation", Callable(self, "_execute_start_excavation"))
|
||||
register_command_executor(&"pause_excavation", Callable(self, "_execute_pause_excavation"))
|
||||
@@ -565,6 +571,8 @@ func create_snapshot() -> Dictionary:
|
||||
}
|
||||
if PurchaseQuoteV2.has_history(owned_systems[&"runtime"]):
|
||||
owned_systems[&"runtime"][&"runtime_schema_version"] = MIMI_PURCHASE_RUNTIME_SNAPSHOT_VERSION
|
||||
if not peeping_room_service.is_empty():
|
||||
owned_systems[&"runtime"][&"special_peeping_rooms"] = peeping_room_service.create_snapshot()
|
||||
# Every component above returns detached containers. Transfer this fresh
|
||||
# tree into the envelope instead of deep-copying all component snapshots a
|
||||
# second time. Keep generic capture's caller-owned-extra contract unchanged.
|
||||
@@ -666,6 +674,8 @@ func _restore_snapshot_internal(snapshot: Dictionary, recovery_mode: bool) -> bo
|
||||
runtime_current_keys.append(&"facility_cleanliness")
|
||||
if runtime_schema_version >= AUTO_PURCHASE_RUNTIME_SNAPSHOT_VERSION:
|
||||
runtime_current_keys.append(&"auto_purchase_plans")
|
||||
if runtime_data.has(&"special_peeping_rooms"):
|
||||
runtime_current_keys.append(&"special_peeping_rooms")
|
||||
if not _dictionary_has_exact_canonical_keys(runtime_data, runtime_current_keys) \
|
||||
or typeof(runtime_data.get(&"runtime_schema_version", null)) != TYPE_INT \
|
||||
or typeof(runtime_data.get(&"world_seed", null)) != TYPE_INT \
|
||||
@@ -1290,6 +1300,16 @@ func _restore_snapshot_internal(snapshot: Dictionary, recovery_mode: bool) -> bo
|
||||
var restored_next_id := int(runtime_data.get(&"next_command_id", 0))
|
||||
if restored_next_id <= 0:
|
||||
return false
|
||||
var restored_peeping_rooms := PeepingRooms.new()
|
||||
restored_peeping_rooms.configure(restored_world, restored_facilities, restored_construction, restored_path, restored_id_generator)
|
||||
if runtime_data.has(&"special_peeping_rooms"):
|
||||
if not runtime_data[&"special_peeping_rooms"] is Dictionary:
|
||||
return false
|
||||
for raw_key: Variant in runtime_data:
|
||||
if raw_key == &"special_peeping_rooms" and typeof(raw_key) != TYPE_STRING_NAME:
|
||||
return false
|
||||
if not restored_peeping_rooms.restore_section(runtime_data.get(&"special_peeping_rooms", null), restored_minute):
|
||||
return false
|
||||
if not SimulationSnapshot.restore(snapshot, _clock, _state):
|
||||
return false
|
||||
world_seed = restored_world_seed
|
||||
@@ -1297,6 +1317,7 @@ func _restore_snapshot_internal(snapshot: Dictionary, recovery_mode: bool) -> bo
|
||||
_staffing_projection_enabled = restored_staffing_projection
|
||||
command_queue = restored_queue
|
||||
id_generator = restored_id_generator
|
||||
peeping_room_service = restored_peeping_rooms
|
||||
domain_events = restored_domain_events
|
||||
_rng_streams = restored_streams
|
||||
world_service = restored_world
|
||||
@@ -5546,6 +5567,7 @@ func _connect_facility_signals() -> void:
|
||||
return
|
||||
facility_service.instance_registered.connect(Callable(self, "_on_cleanliness_facility_registered"))
|
||||
facility_service.instance_unregistered.connect(Callable(self, "_on_cleanliness_facility_unregistered"))
|
||||
facility_service.instance_unregistered.connect(Callable(self, "_on_peeping_target_removed"))
|
||||
facility_service.facility_state_changed.connect(Callable(self, "_on_facility_state_changed"))
|
||||
facility_service.service_started.connect(Callable(self, "_on_service_started"))
|
||||
facility_service.service_interrupted.connect(Callable(self, "_on_service_interrupted"))
|
||||
@@ -10817,6 +10839,7 @@ func _on_excavation_completed(report: Dictionary) -> void:
|
||||
))
|
||||
|
||||
func _on_facility_demolished(instance_id: StringName, refund: Dictionary) -> void:
|
||||
peeping_room_service.target_removed(instance_id)
|
||||
if not mana_network_service.get_node(instance_id).is_empty():
|
||||
mana_network_service.unregister_node(instance_id)
|
||||
if facility_service.has_instance(instance_id):
|
||||
@@ -10831,6 +10854,31 @@ func _on_facility_demolished(instance_id: StringName, refund: Dictionary) -> voi
|
||||
0
|
||||
))
|
||||
|
||||
func _on_peeping_target_removed(instance_id: StringName) -> void:
|
||||
peeping_room_service.target_removed(instance_id)
|
||||
|
||||
func _execute_peeping_room(command: SimulationCommand) -> CommandResult:
|
||||
var payload := command.payload
|
||||
var report: Dictionary
|
||||
if command.command_type == &"peeping_room_place":
|
||||
report = PeepingRooms.result(&"BUILD_DEFINITION_PENDING_D04")
|
||||
elif command.command_type == &"peeping_room_validate":
|
||||
if typeof(payload.get(&"origin")) != TYPE_VECTOR3I or typeof(payload.get(&"footprint", Vector2i(2, 1))) != TYPE_VECTOR2I or typeof(payload.get(&"target_instance_id", &"")) not in [TYPE_STRING, TYPE_STRING_NAME]:
|
||||
report = PeepingRooms.result(&"INVALID_PAYLOAD")
|
||||
else:
|
||||
report = peeping_room_service.validate_placement(payload[&"origin"], payload.get(&"footprint", Vector2i(2, 1)), StringName(payload.get(&"target_instance_id", &"")))
|
||||
else:
|
||||
var key: StringName = &"target_instance_id" if command.command_type == &"peeping_room_relink" else &"source_event_key"
|
||||
if typeof(payload.get(&"room_id")) not in [TYPE_STRING, TYPE_STRING_NAME] or typeof(payload.get(key, &"")) not in [TYPE_STRING, TYPE_STRING_NAME]:
|
||||
report = PeepingRooms.result(&"INVALID_PAYLOAD")
|
||||
elif command.command_type == &"peeping_room_relink":
|
||||
report = peeping_room_service.relink(StringName(payload[&"room_id"]), StringName(payload.get(key, &"")))
|
||||
else:
|
||||
report = peeping_room_service.record_evidence(StringName(payload[&"room_id"]), StringName(payload.get(key, &"")), _runtime_event_minute())
|
||||
if report[&"ok"]:
|
||||
return CommandResult.succeeded(command.command_id, report)
|
||||
return CommandResult.failed(CommandResult.Code.VALIDATION_FAILED, command.command_id, String(report[&"reason"]), report)
|
||||
|
||||
func _on_ledger_transaction_posted(transaction_id: StringName, _entries: Array) -> void:
|
||||
if _operations_flushing_economy_notifications.has(transaction_id):
|
||||
return
|
||||
|
||||
+49
-5
@@ -3736,14 +3736,58 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/ui/test_operations_notification.gd",
|
||||
"template": "Operations notification: <checks> checks, <failures> failures",
|
||||
"test": "tests/special/test_peeping_room_geometry.gd",
|
||||
"template": "Peeping room geometry: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "50172ab6daa031d221f6a78cac5cdbcb8884f295f8062b54656562e2412faff2",
|
||||
"source_sha256_at_schema_audit": "103d85f83e1e97a8637892504264275eef23f172eeec56c94e5c022d81bf6945",
|
||||
"authority": {
|
||||
"path": "docs/spec/acceptance/P24-02-code-r01.json",
|
||||
"scope": "new local suite source marker; actual execution pending"
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
|
||||
"scope": "new backend suite marker; native execution pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/special/test_peeping_room_reference.gd",
|
||||
"template": "Peeping room reference: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "188b00a60f7aefda69dc4973f1de9c14447a0d4bcdd1257a2eabe7c4782e4caf",
|
||||
"authority": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
|
||||
"scope": "new backend suite marker; native execution pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/special/test_peeping_room_evidence.gd",
|
||||
"template": "Peeping room evidence: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "390e0032d14de9a8875ced163a922341ce655744200d78b4ffa776d42c4f8c2a",
|
||||
"authority": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
|
||||
"scope": "new backend suite marker; native execution pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/special/test_peeping_room_save.gd",
|
||||
"template": "Peeping room save: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "ba0e7644277477c1821135cae6d6fd533651799c6f9bd8c43ccf45e63b96c63c",
|
||||
"authority": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
|
||||
"scope": "new backend suite marker; native execution pending"
|
||||
}
|
||||
},
|
||||
{
|
||||
"test": "tests/special/test_peeping_room_runtime.gd",
|
||||
"template": "Peeping room runtime: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "30ed2fe11cc6b0353e9a3a6d995cf8690d322858d2c3dbb38ef32fd941072d2d",
|
||||
"authority": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p13-02/CODE1_TASK_SPEC.json",
|
||||
"scope": "new backend suite marker; native execution pending"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"task_id": "P04-01",
|
||||
"commit": "2dde7596a87c43f7bf0bf704b7479f2fa06a5b1c",
|
||||
"status": "blocked",
|
||||
"summary": "The repair29 documents describe the current code accurately but leave the required ordering rules undefined. The D05 candidate's source references match the current product (product1338): FacilityService._prepare_service_for_tick:853-874 checks RELATED_FACILITY_INACTIVE before NO_POWER, and the cited runtime functions are at 5743/7553/8482/8577/8738/9804/11785. The submission itself states that D05 items (a) power vs closure/dependency precedence, (b) destruction vs completion, (c) exit vs completion and (d) which day a 00:00 sale belongs to are pending an owner decision. P04-01 requires the order across 閉店/停電/破壊/退出/課金/シフト交代/00:00決算 to be stated ('順序を明記'). That cannot be met while these mandatory rules are only a recommended 'keep current behavior' candidate that nobody has approved. Several final steps are also unfinished, and CURRENT_STATUS.md says the unit is incomplete (13/88 unchanged). The passing p04-acceptance check is mechanical (it confirms an index exists and does not approve the rules), so it is not enough for pass. The blocker is undecided rules (spec insufficient), which needs an owner decision, so the status is blocked.",
|
||||
"acceptance_ids": [
|
||||
"P04-01"
|
||||
],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "high",
|
||||
"message": "Mandatory ordering rules are undefined. The order between power stop and closure/dependency, between destruction and completion/charging, between exit and completion, and which day a 00:00 sale belongs to are pending. D05_REMAINING_ORDER_CANDIDATE.md/.json offers only Option A (keep current behavior), which has not been approved. P04-01 requires the order to be stated explicitly ('順序を明記'), and code behavior is not authority, so acceptance cannot be granted. An owner decision is needed (spec insufficient → blocked)."
|
||||
},
|
||||
{
|
||||
"severity": "high",
|
||||
"message": "Under current behavior, Option (b) allows an incident-driven destruction in the same tick to follow a completion and charge (B4a: 25G charged, then destroyed). Whether this conflicts with the 'no charging while stopped' (停止中課金なし) criterion has not been settled. A D05 destruction rule is required."
|
||||
},
|
||||
{
|
||||
"severity": "medium",
|
||||
"message": "The checker's destruction_stop rule (tools/check_p04_order_evidence.py:49) points to BASELINE:183, which covers mana depletion, not destruction. The authority reference does not match the domain. The repair is deferred until D05 is approved, so the 破壊 domain still has no valid authority link."
|
||||
},
|
||||
{
|
||||
"severity": "medium",
|
||||
"message": "No final validation has been run on the final source and checker. Full178 ran with checker f5, not the current a61, and no full1339 run exists. tests/business/test_required_kitchen.gd differs from the version that run used. The support53cb rebind, final source/config/input/environment binding, formal review, integration (P04 first, then support) and any nativeWindows conditions are all still pending."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "S4 NO_POWER evidence comes from a direct disconnect_nodes call and does not represent global mana depletion, which appears only in the B1 combined diagnostic run. The documents say this correctly, but the scope of the power-stop evidence is limited."
|
||||
}
|
||||
]
|
||||
}
|
||||
+7
File diff suppressed because one or more lines are too long
+62
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"observed_at": "2026-10-17T16:30:38.746525+09:00",
|
||||
"original_packages": 30,
|
||||
"original_units": 88,
|
||||
"formally_completed": 14,
|
||||
"new_credit": 0,
|
||||
"plan_id": "P04-01",
|
||||
"state": "in_progress",
|
||||
"runner_project": "the-tree-p04-01",
|
||||
"runner_state": "repair_pending",
|
||||
"repairs": 29,
|
||||
"max_repairs": null,
|
||||
"submitted": "2dde7596a87c43f7bf0bf704b7479f2fa06a5b1c",
|
||||
"candidate": null,
|
||||
"worktree_clean_at_observation": true,
|
||||
"active_worker": false,
|
||||
"current_main_at_audit": "565fd805079d8c446f29e30c57979242561113ea",
|
||||
"acceptance_unchanged": {
|
||||
"domains": [
|
||||
"閉店",
|
||||
"停電",
|
||||
"破壊",
|
||||
"退出",
|
||||
"課金",
|
||||
"シフト交代",
|
||||
"00:00決算"
|
||||
],
|
||||
"safety": [
|
||||
"停止中課金0",
|
||||
"二重決算0",
|
||||
"予約の孤立0"
|
||||
],
|
||||
"conditions": "all15 + EV, original frozen rules unchanged",
|
||||
"required_gates": [
|
||||
"exact final source/checker applicability",
|
||||
"required final full regression",
|
||||
"independent whole review",
|
||||
"ordinary prepare-integration / integration / final",
|
||||
"ledger reflection"
|
||||
]
|
||||
},
|
||||
"latest_commander": "ea12167cffff444596c0c36caa700a26",
|
||||
"latest_formal_review": "275d1fd64fff4d5782c6f7667fc1e031",
|
||||
"no_duplicate_repair": true,
|
||||
"remaining": [
|
||||
"owner choices for destruction order and midnight-sale day, plus explicit disposition of reason label and command/AI exit",
|
||||
"after actual answers, normal batched checker destruction-authority pin / registry / approval record / stale current metadata correction",
|
||||
"final gates as listed; previous full178 f5 receipt is not full final checker a61 evidence; no relabeling"
|
||||
],
|
||||
"already_corrected_per_actual_opus": [
|
||||
"raw joins",
|
||||
"canonical getter contract explanation",
|
||||
"candidate HEAD fixtures",
|
||||
"schema2 index",
|
||||
"S4r28",
|
||||
"Local8",
|
||||
"r22 collection"
|
||||
],
|
||||
"owner_response_pending": true,
|
||||
"approval_not_inferred": true,
|
||||
"whole_acceptance": false
|
||||
}
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
# P04-01 current status — repair29
|
||||
|
||||
Worker checks: SOURCE-READY / NOTRUN. No probes or tests were run by this worker.
|
||||
|
||||
This canonical table overrides creation-time NOT RUN / pending-execution entries in REPAIR22–28, their status/validation records, and the runbooks (including S4_ROOT_RUN.md). Those files are historical and remain untouched. It does not relabel an old run as execution of repair29.
|
||||
|
||||
`B` = `/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/P04-01/build`.
|
||||
|
||||
| Item | Canonical status | Exact-version evidence |
|
||||
| --- | --- | --- |
|
||||
| Current native product / main | Root-measured `5f6bc11d` / `9b1a18c1` | Product1338 at B/audit-support/p04-r17-full-inputs-r01/product; current SHA256 inventory in REPAIR29_STATIC_SOURCE.json. Old deb11300 is not current. |
|
||||
| S4 r28 | Root-measured 4/4 PASS; import/parse/Writer/Reader PIDs49940,50044,50078,50105 all ended; guards0; cleanup0 | B/p04-s4-native-r28; B/audit-support/p04-root-fb8b-s4-r01/native.result.json. Full controls in that same support directory. |
|
||||
| Local8 | Root-measured PASS | B/audit-support/p04-root-fb8b-local-r01: bulk, negative, applicability, native, series, encoder, join, roles result/stdio records. |
|
||||
| Collection | Root-measured r22 collected, no native re-run claimed | B/audit-support/p04-raw-collect-r22/MANIFEST.json and s1/s2a/s2b/s3/s4.json. |
|
||||
| Index | Root-measured schema2, missing_conditions=[], all15 conditions + EV mechanically verified | B/p04-evidence/index.json and generation-invocation.json; local-r01 index/checker output. This is not D05 approval. |
|
||||
| Registered validation on fb8b7919 | Root-measured PASS,28.095s | B/audit-support/p04-root-fb8b-local-r01/registered-validation.result.json and stdout log. Does not establish final repair29 validation or acceptance. |
|
||||
| Full178 | Root-measured178 suites /21615 checks PASS used checker f5, **not a61** | B/audit-support/p18-regression-support-final-r01/native-full178/runner-ended.json and source-start.json; exact receipt remains preserved. Checker f5 SHA256 `f5b44827958f2ae352fe5c4bc3a1ffd4211ec7a41fc4c0759c8b954891662324`. |
|
||||
| Full1339 against a61 | **No such full run exists** | a61 SHA256 `a61c5b496e656f60c66898e42500bc9a2d45f947690ce8f5f19a03984ebbc850`. Local8 and registered validation are separate evidence. |
|
||||
| Worker repair29 | SOURCE-READY / NOTRUN | Static source/line/registration/SHA256 inspection only. No tests, probes, Git, engine, Runner or agents. |
|
||||
| Owner D05 | Pending a–d, candidate only | D05_REMAINING_ORDER_CANDIDATE.md/json; A01, dependency hold and18:00 remain approved. |
|
||||
| Original unit | **Incomplete;13/88 unchanged** | Mechanical PASS does not approve unknown mandatory priorities, replace independent review, or integrate the unit. |
|
||||
|
||||
Proof hashes for the exact collection/index/full receipt/validation and current source are in [REPAIR29_STATIC_SOURCE.json](REPAIR29_STATIC_SOURCE.json). Applicable source/config/input/environment joins stay in the immutable schema2 index and raw collection; no raw is normalized, spliced, regenerated or relabelled here.
|
||||
|
||||
Product reuse requires exact applicability: the178 suites do not execute the Python checker and the316-file GDScript parse roster excludes it. Static comparison with the preserved full178 selected_source_map found one test-source difference, tests/business/test_required_kitchen.gd (full178 3a9c92f8…, current product5dcc86d6…), and no game-source difference. Preserve the Runner applicability binding for this test; do not claim all1338 selected product hashes match that full178 receipt or byte-identical full1339 validation against a61. Preserve the f5 full178 receipt and all historical partial/full outputs separately.
|
||||
|
||||
Remaining Runner steps: independent review of these documents, then Root obtains owner decisions (or explicit non-mandatory rulings) for D05 a–d. Unknown mandatory rules stay pending. Any destruction authority pin/registry or other approved implementation change follows a normal repair. The support53cb normal registered rebind, final full run on the final source/checker, final source/config/input/environment binding, formal independent review and integration remain Runner work. Integration order is **P04 first, then support on main9b (`9b1a18c1`)**. NativeWindows obligations remain individually pending if required. No criterion is waived and no extra original unit is counted.
|
||||
|
||||
Known authority/scope gaps: destruction_stop binds BASELINE:183 (mana depletion, not destruction); explicit D05 destruction rule required before normal pin repair. S4 NO_POWER was induced by direct disconnect_nodes; global depletion appears only in B1 combined diagnostic. Preserve these distinctions even though the mechanical index passes.
|
||||
|
||||
Changed files in repair29 (all under this directory): ORDER_AUDIT.md; order-audit.json; D05_REMAINING_ORDER_CANDIDATE.md; D05_REMAINING_ORDER_CANDIDATE.json; CHECKER_PROTOCOL.md; EVIDENCE_COLLECTION.md; P04_ORDER_EVIDENCE_PROTOCOL.json; CURRENT_STATUS.md; REPAIR29_STATIC_SOURCE.json. Product/checker/registry, native footprint, staged inputs, raw and historical runbooks are unchanged.
|
||||
+130
@@ -0,0 +1,130 @@
|
||||
{
|
||||
"task_id": "P04-01",
|
||||
"revision": "repair29",
|
||||
"status": "approval candidate only; SOURCE-READY / NOTRUN",
|
||||
"approval": null,
|
||||
"apply_to_product_or_checker": false,
|
||||
"review_flow": "Root asks owner after review. This document neither requests approval from worker nor records it.",
|
||||
"proof_legend": {
|
||||
"R": "B/audit-support/p04-raw-collect-r22",
|
||||
"I": "B/p04-evidence/index.json schema2",
|
||||
"pins": "REPAIR29_STATIC_SOURCE.json; R/MANIFEST.json and I raw_references/versions"
|
||||
},
|
||||
"choices": [
|
||||
{
|
||||
"id": "a",
|
||||
"topic": "Power vs closure/dependency",
|
||||
"status": "pending D05",
|
||||
"observation": {
|
||||
"status": "observed-current",
|
||||
"behavior": "RELATED_FACILITY_INACTIVE selected before NO_POWER; both pause service with no charge.",
|
||||
"source": "FacilityService _prepare_service_for_tick:853–874, phase FACILITY_COMPLETION after MANA projection",
|
||||
"proof": "Root-measured R/s4.json isolated NO_POWER; R/s3.json B1 combined RELATED diagnostic; REPAIR29_STATIC_SOURCE.json source pins"
|
||||
},
|
||||
"inputs": "Same service and minute, related facility inactive and power unavailable; include direct closure separately under D-034.",
|
||||
"A": {
|
||||
"recommended": true,
|
||||
"rule": "Keep current RELATED-first reason selection.",
|
||||
"outcome": "Service held, progress/payment paused, reservation and serviceID retained.",
|
||||
"side_effects": "Reason reports dependency while both causes apply; no new hold limit.",
|
||||
"dependencies": "Approved dependency hold, D-034 direct closure, existing MANA-before-completion order."
|
||||
},
|
||||
"B": {
|
||||
"rule": "NO_POWER wins reason selection when both conditions fail.",
|
||||
"outcome": "Same no-charge hold safety; reason reports power.",
|
||||
"side_effects": "Reason/event and recovery-precedence semantics would change; concrete implementation and exact-version proof require normal repair.",
|
||||
"dependencies": "Must retain no-charge while either legitimate hold persists; preserve approved dependency reservation/identity behavior."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b",
|
||||
"topic": "Destruction",
|
||||
"status": "pending D05",
|
||||
"observation": {
|
||||
"status": "observed-current",
|
||||
"behavior": "Command destruction in APPLY precedes completion. Incident destruction in INCIDENTS follows it; B4a shows25G charge then destruction in same tick.",
|
||||
"source": "Runtime _process_tick_commands:5743, _advance_facilities:8482, _advance_defense:8577 / _apply_defense_outcome_boundary:9804",
|
||||
"proof": "Root-measured R/s3.json B4a/B4b; REPAIR29_STATIC_SOURCE.json"
|
||||
},
|
||||
"inputs": "A service due for completion in a minute with command or incident destruction of its facility.",
|
||||
"A": {
|
||||
"recommended": true,
|
||||
"rule": "Keep command-before-completion and incident-after-completion behavior.",
|
||||
"outcome": "Command destruction prevents completion; incident may follow a valid completion/charge that minute; next-tick broken failure/release remains.",
|
||||
"side_effects": "Completion and destruction can coexist in one tick as B4a; not a universal no-sale-on-destruction rule.",
|
||||
"dependencies": "P04 stopped-charge and orphan-reservation safety; explicit D05 destruction authority required."
|
||||
},
|
||||
"B": {
|
||||
"rule": "An incident in the same minute suppresses that minute completion (or voids it if already posted).",
|
||||
"outcome": "No retained completion/sale for the incident-destruction minute.",
|
||||
"side_effects": "Would require preemption or atomic reversal of completion, inventory, payment and rewards; no unapproved numbers or refund amounts supplied.",
|
||||
"dependencies": "Owner must specify the suppress/void transaction semantics; preserve idempotency, no orphan reservations and approved shift/hold rules; normal implementation and new proof required."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c",
|
||||
"topic": "Exit",
|
||||
"status": "pending D05",
|
||||
"observation": {
|
||||
"status": "observed-current",
|
||||
"behavior": "Command exit APPLY before completion/charging; AI PLANNED_EXIT after them; LEAVING despawns later.",
|
||||
"source": "Runtime _execute_leave_facility_queue:7553; _advance_guest_ai_decisions:8738–8762",
|
||||
"proof": "Root-measured R/s3.json B2a/B2b/B3 and B1 departure history; source pins REPAIR29_STATIC_SOURCE.json"
|
||||
},
|
||||
"inputs": "Exit command or AI exit due at a minute with a completion-ready service. Current AI PLANNED_EXIT applies to DECIDING guests; do not assume it preempts an active service.",
|
||||
"A": {
|
||||
"recommended": true,
|
||||
"rule": "Keep current command/AI distinction and state predicates.",
|
||||
"outcome": "Command leave/release happens first; eligible AI planned exit follows completion/charging and queue processing.",
|
||||
"side_effects": "AI due time alone does not universally cancel current-minute completion; later despawn remains separate.",
|
||||
"dependencies": "D-034, reservation ownership/release, phase6 completion before phase10 AI."
|
||||
},
|
||||
"B": {
|
||||
"rule": "An exit due this minute preempts completion.",
|
||||
"outcome": "Applicable due exits release/cancel before completion and no completion sale occurs for that preempted service.",
|
||||
"side_effects": "Changes eligibility for exit and service cancellation; would change simultaneous completion/payment observations.",
|
||||
"dependencies": "Owner must define applicable due-exit states; preserve no orphan reservation, no duplicate charge and approved dependency/shift behavior; normal repair and exact proof required."
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "d",
|
||||
"topic": "Cost time/day attribution beyond A01 and18:00",
|
||||
"status": "pending D05",
|
||||
"observation": {
|
||||
"status": "observed-current",
|
||||
"behavior": "Sale dated at post-increment minute. At00:00 TIME_BOUNDARIES settlement/upkeep precede completions;00:00 sales go to new day because daily-close period_end is exclusive.",
|
||||
"source": "Kernel advance_one_minute:122; Runtime _apply_service_transaction:11785 /11826–11838; coordinator _process_daily_close:1125 /1136",
|
||||
"proof": "Root-measured R/s2a.json paid midnight/replay; I C; REPAIR29_STATIC_SOURCE.json"
|
||||
},
|
||||
"inputs": "Service completes on calendar boundary; account period ends at boundary minute. A01 ownership upkeep and18:00 shift interval remain fixed.",
|
||||
"A": {
|
||||
"recommended": true,
|
||||
"rule": "Keep post-increment sale time and new-day attribution for00:00 sales.",
|
||||
"outcome": "Closing day excludes boundary-minute completion; new day receives sale.",
|
||||
"side_effects": "Closing summary is finalized before those sales; upkeep ownership rule unchanged.",
|
||||
"dependencies": "Exclusive daily-close interval, sale timestamp, idempotent close/replay; P04 mandatory timing/attribution separate from D04/P05 numeric cost math."
|
||||
},
|
||||
"B": {
|
||||
"rule": "Boundary-minute sales belong to closing day.",
|
||||
"outcome": "Closing day includes those sales.",
|
||||
"side_effects": "Would require a distinct accounting attribution or revised boundary transaction sequencing; affects daily summaries/reconciliation/replay. No numeric cost policy is invented.",
|
||||
"dependencies": "Owner must settle attribution mechanics and same-boundary replay; preserve A01 and18:00, all P04 safety criteria; normal repair and exact-version proof required."
|
||||
}
|
||||
}
|
||||
],
|
||||
"bundle": {
|
||||
"label": "accept current-behavior A for a-d",
|
||||
"status": "pending D05",
|
||||
"recommended": true,
|
||||
"coupling_notes": [
|
||||
"a preserves the approved hold and no-charge safety independent of reason priority.",
|
||||
"b and c use the same completion boundary: commands before, incidents and AI after. Changing either requires separate applicability and replay checks.",
|
||||
"d relies on TIME_BOUNDARIES before completion; changing attribution can affect the transaction history used by b/c and settlement idempotency.",
|
||||
"A01 ownership upkeep, dependency hold and18:00 interval are already approved and are excluded from renewed approval.",
|
||||
"Owner may explicitly rule some remaining items non-mandatory; no such ruling exists here. Unknowns stay pending; mandatory acceptance is never relaxed."
|
||||
]
|
||||
},
|
||||
"authority_gap": "destruction_stop currently binds BASELINE:183, which is mana depletion, not destruction authority. Explicit D05 destruction rule required. Pin/registry repair only after approval through normal repair.",
|
||||
"power_scope": "S4 NO_POWER uses direct disconnect_nodes; not proof of global depletion, which exists only in B1 combined diagnostic.",
|
||||
"original_unit_complete": false
|
||||
}
|
||||
+93
@@ -0,0 +1,93 @@
|
||||
# D05 remaining order candidate — repair29
|
||||
|
||||
**Approval candidate only. SOURCE-READY / NOTRUN.** Root asks the owner after review. Nothing is applied to product, checker or registry; observation is not approval. A01 midnight ownership upkeep, dependency hold and18:00 are already approved and are not re-asked.
|
||||
|
||||
Structured choices: [D05_REMAINING_ORDER_CANDIDATE.json](D05_REMAINING_ORDER_CANDIDATE.json). Source path/line/SHA256 pins: [REPAIR29_STATIC_SOURCE.json](REPAIR29_STATIC_SOURCE.json); phase map: [ORDER_AUDIT.md](ORDER_AUDIT.md). R = B/audit-support/p04-raw-collect-r22; I = B/p04-evidence/index.json. These are Root-measured exact-version proof references, with raw/provenance pins in R/MANIFEST.json, I and the static manifest.
|
||||
|
||||
## (a) Power vs closure/dependency — pending D05
|
||||
|
||||
**Observed-current:** RELATED_FACILITY_INACTIVE selected before NO_POWER; both pause service with no charge. Source: FacilityService _prepare_service_for_tick:853–874, phase FACILITY_COMPLETION after MANA projection. Proof: Root-measured R/s4.json isolated NO_POWER; R/s3.json B1 combined RELATED diagnostic; REPAIR29_STATIC_SOURCE.json source pins.
|
||||
|
||||
**Inputs:** Same service and minute, related facility inactive and power unavailable; include direct closure separately under D-034.
|
||||
|
||||
**Option A (recommended; keep current behavior):** Keep current RELATED-first reason selection.
|
||||
|
||||
- Outcomes: Service held, progress/payment paused, reservation and serviceID retained.
|
||||
- Side effects: Reason reports dependency while both causes apply; no new hold limit.
|
||||
- Dependencies: Approved dependency hold, D-034 direct closure, existing MANA-before-completion order.
|
||||
|
||||
**Option B:** NO_POWER wins reason selection when both conditions fail.
|
||||
|
||||
- Outcomes: Same no-charge hold safety; reason reports power.
|
||||
- Side effects: Reason/event and recovery-precedence semantics would change; concrete implementation and exact-version proof require normal repair.
|
||||
- Dependencies: Must retain no-charge while either legitimate hold persists; preserve approved dependency reservation/identity behavior.
|
||||
|
||||
## (b) Destruction — pending D05
|
||||
|
||||
**Observed-current:** Command destruction in APPLY precedes completion. Incident destruction in INCIDENTS follows it; B4a shows25G charge then destruction in same tick. Source: Runtime _process_tick_commands:5743, _advance_facilities:8482, _advance_defense:8577 / _apply_defense_outcome_boundary:9804. Proof: Root-measured R/s3.json B4a/B4b; REPAIR29_STATIC_SOURCE.json.
|
||||
|
||||
**Inputs:** A service due for completion in a minute with command or incident destruction of its facility.
|
||||
|
||||
**Option A (recommended; keep current behavior):** Keep command-before-completion and incident-after-completion behavior.
|
||||
|
||||
- Outcomes: Command destruction prevents completion; incident may follow a valid completion/charge that minute; next-tick broken failure/release remains.
|
||||
- Side effects: Completion and destruction can coexist in one tick as B4a; not a universal no-sale-on-destruction rule.
|
||||
- Dependencies: P04 stopped-charge and orphan-reservation safety; explicit D05 destruction authority required.
|
||||
|
||||
**Option B:** An incident in the same minute suppresses that minute completion (or voids it if already posted).
|
||||
|
||||
- Outcomes: No retained completion/sale for the incident-destruction minute.
|
||||
- Side effects: Would require preemption or atomic reversal of completion, inventory, payment and rewards; no unapproved numbers or refund amounts supplied.
|
||||
- Dependencies: Owner must specify the suppress/void transaction semantics; preserve idempotency, no orphan reservations and approved shift/hold rules; normal implementation and new proof required.
|
||||
|
||||
## (c) Exit — pending D05
|
||||
|
||||
**Observed-current:** Command exit APPLY before completion/charging; AI PLANNED_EXIT after them; LEAVING despawns later. Source: Runtime _execute_leave_facility_queue:7553; _advance_guest_ai_decisions:8738–8762. Proof: Root-measured R/s3.json B2a/B2b/B3 and B1 departure history; source pins REPAIR29_STATIC_SOURCE.json.
|
||||
|
||||
**Inputs:** Exit command or AI exit due at a minute with a completion-ready service. Current AI PLANNED_EXIT applies to DECIDING guests; do not assume it preempts an active service.
|
||||
|
||||
**Option A (recommended; keep current behavior):** Keep current command/AI distinction and state predicates.
|
||||
|
||||
- Outcomes: Command leave/release happens first; eligible AI planned exit follows completion/charging and queue processing.
|
||||
- Side effects: AI due time alone does not universally cancel current-minute completion; later despawn remains separate.
|
||||
- Dependencies: D-034, reservation ownership/release, phase6 completion before phase10 AI.
|
||||
|
||||
**Option B:** An exit due this minute preempts completion.
|
||||
|
||||
- Outcomes: Applicable due exits release/cancel before completion and no completion sale occurs for that preempted service.
|
||||
- Side effects: Changes eligibility for exit and service cancellation; would change simultaneous completion/payment observations.
|
||||
- Dependencies: Owner must define applicable due-exit states; preserve no orphan reservation, no duplicate charge and approved dependency/shift behavior; normal repair and exact proof required.
|
||||
|
||||
## (d) Cost time/day attribution beyond A01 and18:00 — pending D05
|
||||
|
||||
**Observed-current:** Sale dated at post-increment minute. At00:00 TIME_BOUNDARIES settlement/upkeep precede completions;00:00 sales go to new day because daily-close period_end is exclusive. Source: Kernel advance_one_minute:122; Runtime _apply_service_transaction:11785 /11826–11838; coordinator _process_daily_close:1125 /1136. Proof: Root-measured R/s2a.json paid midnight/replay; I C; REPAIR29_STATIC_SOURCE.json.
|
||||
|
||||
**Inputs:** Service completes on calendar boundary; account period ends at boundary minute. A01 ownership upkeep and18:00 shift interval remain fixed.
|
||||
|
||||
**Option A (recommended; keep current behavior):** Keep post-increment sale time and new-day attribution for00:00 sales.
|
||||
|
||||
- Outcomes: Closing day excludes boundary-minute completion; new day receives sale.
|
||||
- Side effects: Closing summary is finalized before those sales; upkeep ownership rule unchanged.
|
||||
- Dependencies: Exclusive daily-close interval, sale timestamp, idempotent close/replay; P04 mandatory timing/attribution separate from D04/P05 numeric cost math.
|
||||
|
||||
**Option B:** Boundary-minute sales belong to closing day.
|
||||
|
||||
- Outcomes: Closing day includes those sales.
|
||||
- Side effects: Would require a distinct accounting attribution or revised boundary transaction sequencing; affects daily summaries/reconciliation/replay. No numeric cost policy is invented.
|
||||
- Dependencies: Owner must settle attribution mechanics and same-boundary replay; preserve A01 and18:00, all P04 safety criteria; normal repair and exact-version proof required.
|
||||
|
||||
## Bundle: accept current-behavior A for a-d
|
||||
|
||||
Recommended candidate, not approved.
|
||||
|
||||
- a preserves the approved hold and no-charge safety independent of reason priority.
|
||||
- b and c use the same completion boundary: commands before, incidents and AI after. Changing either requires separate applicability and replay checks.
|
||||
- d relies on TIME_BOUNDARIES before completion; changing attribution can affect the transaction history used by b/c and settlement idempotency.
|
||||
- A01 ownership upkeep, dependency hold and18:00 interval are already approved and are excluded from renewed approval.
|
||||
- Owner may explicitly rule some remaining items non-mandatory; no such ruling exists here. Unknowns stay pending; mandatory acceptance is never relaxed.
|
||||
|
||||
destruction_stop currently binds BASELINE:183, which is mana depletion, not destruction authority. Explicit D05 destruction rule required. Pin/registry repair only after approval through normal repair.
|
||||
|
||||
S4 NO_POWER uses direct disconnect_nodes; not proof of global depletion, which exists only in B1 combined diagnostic.
|
||||
|
||||
P04 timing/attribution remains mandatory; D04/P05 numeric cost math is separate. No acceptance criterion is relaxed. P04 remains incomplete; original13/88 unchanged.
|
||||
+1802
File diff suppressed because it is too large
Load Diff
+7
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"action": "wait",
|
||||
"task_id": "P04-01",
|
||||
"reason": "P04-01: WAIT. Waiting for the owner's Japanese answers on D05 (a) power vs closure/dependency precedence, (b) destruction vs completion, (c) exit vs completion, (d) which day a 00:00 sale belongs to. Do not re-ask, do not request-repair (repair30), do not redo tests.\n\nINDEPENDENT NEXT ORIGINAL UNIT (new contract proposal; no matching project in the 20-project inventory, nothing started here): P13-02 「背面条件と対象参照」.\n- Work: 覗き部屋の対象背面、通路寸断、対象喪失と証拠IDを状態として実装する。\n- Acceptance (unchanged): 対象撤去、重複収集、停止、途中保存で状態と参照が整合する。\n- Package P13 acceptance also applies: special rules hold at build time and run time; invalid placement and actions on lost targets rejected; event state saved; implemented scope reported separately from unmade content.\n- Package deps: P09, P12 (both incomplete; bounded progress is allowed, not unit closure). Decisions D04/D05/D08.\n- Original sources: B-2.5 (built behind VIPルーム/風俗個室/脱衣所 on back layer; its cells are no longer usable as back corridor; 記録係 collects 脅迫ネタ); B-8.3 (VIP/浴場/風俗の裏限定・裏通路を寸断); B-10.6 (覗き部屋 2x1, back-only).\n\nSOURCE GAP (main 2f3884b): no peeping/覗き code, data or tests in scripts/autoload/data/resources/tests/tools.\n- FacilityCatalog (scripts/data/facility_catalog.gd) has no peeping_room.\n- No recorder role; no back-side target reference; no evidence-ID ledger; no target-loss state.\n- Existing targets: public_bath, adult_private_room. VIP suite is undefined (P10-01); vip_private_salon must not substitute.\n- Rejected alternatives:\n - P07-01: weather_timeline has no rain/fog effects or natural generation (D04 values).\n - P12-01: security_station only checks the guard role (simulation_runtime.gd:6631); guard effects need D04 values.\n - P15-02: cleric witness/morale rule needs an undecided definition of \"witness\" plus a D04 magnitude.\n - P16: wages/severance/sale amounts are D04.\n\nMECHANISMS POSSIBLE WITH APPROVED INPUTS vs PENDING:\n- Possible:\n - placement check: room cells must lie entirely behind a single allowed, completed target's FRONT footprint on the BACK layer;\n - corridor blocking as an occupancy rule with no automatic bypass;\n - stable target reference;\n - target removal sets TARGET_LOST; no automatic recovery, explicit relink only (D03 pattern / kitchen relink);\n - idempotent evidence IDs keyed by (room, target, source_event_key);\n - no collection while stopped (NO_POWER/closed/under construction);\n - versioned save section with legacy-absent migration and atomic rejection of malformed data.\n- Pending (record, do not invent):\n - build cost/materials/build_minutes/upkeep (D04); FacilityDefinition requires them, so no normal palette registration;\n - recorder role and staffing, collection trigger/rate (D04/D08/P16);\n - VIP suite target (P10-01);\n - D05 ordering;\n - blackmail use and camera UI (P19/P24).\n\nBRIEF: Add a separate PeepingRoomService connected from the Runtime; no rewrite of the whole runtime.\n- Reuse world_service.cells_for_footprint/validate_occupancy/occupy and construction_service.validate_placement.\n- Copy the weather snapshot-version pattern (simulation_runtime.gd:29/520/663/1248).\n- Hook facility removal so the target is marked lost.\n- Add commands for placement validation, explicit relink and evidence recording.\n- No product values, no content, no Clock/P04 change.\n\nALLOWED PATHS:\n- scripts/special/peeping_room_service.gd (new)\n- autoload/simulation_runtime.gd (bounded connection: save section, removal hook, commands)\n- scripts/core/save_service.gd (only if needed)\n- tests/special/test_peeping_room_*.gd\n- docs/plans/original-completion-2026-10-02/execution/p13-02/**\n\nLOCAL TESTS:\n- Valid public_bath and adult_private_room backs.\n- Rejections: front layer, partial overlap, non-target, incomplete target, VIP pending.\n- Corridor cell conflict and path disconnect.\n- Target demolition leads to TARGET_LOST; rebuilt target does not auto-relink; explicit relink works.\n- Duplicate event key yields a single evidence ID.\n- Stopped room rejects collection.\n- Save/restore round-trip, legacy save without the section, malformed restore leaves state unchanged.\n- Existing suites: construction/world/path, tests/supply/test_supply_save_migration.gd, tests/transport/test_transport_save.gd, tests/environment/test_runtime_weather.gd.\n\nREUSE / FULL REVIEW:\n- No completed P18/P23 rerun.\n- Full regression only on the exact final version, then a separate Claude review and normal integration.\n- No partial credit (formal 14/88 and original 30/88 unchanged); do not claim P13 or the backend complete.\n\nOwner must register the new task contract before any run.",
|
||||
"codex_model": "gpt-6.1-sol",
|
||||
"codex_model_reason": "P04-01 itself stays in wait, so no worker runs for it. For the proposed P13-02 batch: one new state service plus a bounded runtime connection. It follows existing patterns (weather snapshot versioning, kitchen explicit relink, world occupancy), uses no numeric balancing and no native code. Sol is sufficient on quality, time and usage. Switch to Astra only if review finds the runtime save-version change crosses many existing save paths."
|
||||
}
|
||||
@@ -0,0 +1,148 @@
|
||||
# P13-02-CODE1 implementation handoff
|
||||
|
||||
This is non-graphic state/reference/occupancy/save machinery only. It does not
|
||||
complete P13-02, grant partial credit, or change the original 30/88 denominator
|
||||
or formal 14/88 count. Native execution and acceptance are pending.
|
||||
|
||||
## Declared scope and verification
|
||||
|
||||
Before editing, the worker declared the new service, bounded Runtime hooks,
|
||||
special tests, narrow runner, marker additions and this documentation. SaveService
|
||||
was conditional on an exact-key dependency; inspection found
|
||||
`SupplyAutoPurchaseQuotePlans.valid_runtime_format` has that dependency.
|
||||
Only allowed paths were edited. No asset, UI, content, model, policy, clock phase,
|
||||
or P04 change is involved.
|
||||
|
||||
The full ignored `build/owner-handoff/ACTUAL_OPUS_RUN_DECISION.json` was read and
|
||||
left untouched. Base HEAD is `1e8d4ea88876865a72547ff0edf43ed5b0e74c7e`.
|
||||
The immutable spec was not edited. Its SHA-256 without the terminal newline is
|
||||
the registered `8ea65f2eefedc772c08170186f5cd03ac017432f4b069ade4f9210d4215c2d43`;
|
||||
the on-disk file including that newline is
|
||||
`988d6e18a49372549863cd433432c2852c962fa64b138e490361c023e80249dc`.
|
||||
|
||||
Worker verification: Python AST parsing/compilation only, without executing the
|
||||
runner or importing its dependencies; source/JSON/hash review. GDScript parsing,
|
||||
all tests, `--prepare-only`, native collection and regression were **not run**.
|
||||
No check totals or native success receipts are claimed. No git writes, commits,
|
||||
branches, other agents, integration or Runner operations were performed.
|
||||
|
||||
## Service and commands
|
||||
|
||||
`PeepingRoomService` is a separate RefCounted service with no content or UI.
|
||||
All command executors use the existing Runtime queue; queue/history receipts
|
||||
remain normal Runtime behavior even for rejected/read-only domain commands.
|
||||
|
||||
| Command | Preconditions and result |
|
||||
| --- | --- |
|
||||
| `peeping_room_validate` | `origin: Vector3i`, optional `footprint: Vector2i` (2x1), optional `target_instance_id: String/StringName`. Pure domain validation. |
|
||||
| `peeping_room_place` | Always `BUILD_DEFINITION_PENDING_D04`; no occupancy, resource, room or ID mutation. |
|
||||
| `peeping_room_relink` | Existing `room_id`, explicit nonempty `target_instance_id`; full geometry and ownership validation excluding only the room's exact own occupancy. Leaves `LINKED`, stopped, `RELINKED_PENDING_RESUME`. |
|
||||
| `peeping_room_record_evidence` | Existing `room_id`, nonblank named `source_event_key`. Uses Runtime minute, never caller-supplied time. Checks stopped, target power, target closure/opening hours, completed construction authority, and lost target in that order. Otherwise rejects with `RECORDER_ELIGIBILITY_PENDING_D04_D08_P16`. Never writes the ledger. |
|
||||
|
||||
Malformed command field types return `INVALID_PAYLOAD`. Missing/blank source keys
|
||||
return `SOURCE_EVENT_KEY_REQUIRED` before operational checks. Loss latches both
|
||||
`TARGET_LOST` and stopped, so collection after normal demolition returns `STOPPED`
|
||||
while the room's link/stop reason identifies `TARGET_LOST`. No resume command or
|
||||
automatic resume is defined. Power/closure guards read actual target conditions;
|
||||
they do not define special-room power demand, staffing or normal operation.
|
||||
|
||||
Placement is exactly 2x1 BACK, fully behind a single completed FRONT
|
||||
`public_bath` or `adult_private_room`. It checks bounds/excavation, both real
|
||||
FacilityService and ConstructionService ownership, FRONT cells, World occupancy,
|
||||
and both World walkability and PathService membership. Exact rejection families:
|
||||
`WRONG_LAYER`, `WRONG_FOOTPRINT`, `OUT_OF_BOUNDS`, `NOT_EXCAVATED`,
|
||||
`TARGET_INCOMPLETE`, `TARGET_MISSING`, `PARTIAL_TARGET`, `MULTIPLE_TARGETS`,
|
||||
`TARGET_MISMATCH`, `TARGET_UNKNOWN`, `TARGET_NOT_ALLOWED`, `TARGET_WRONG_LAYER`,
|
||||
`CORRIDOR_CONFLICT`, `BACK_OCCUPIED`. The named `vip_suite` request returns
|
||||
`PENDING_P10_01`; `vip_private_salon` is not an allowed substitute.
|
||||
|
||||
Any existing corridor cell conflicts. A proposed cut through a connected corridor
|
||||
is rejected before mutation, preserving the route; no reroute or bypass is
|
||||
invented. Accepted fixture cells were already nonwalkable and become occupied
|
||||
under `special_peeping_room`. No special-room construction weight/cost is assumed.
|
||||
|
||||
Runtime demolition and FacilityService unregistration latch loss. Collection also
|
||||
detects missing FRONT occupancy/identity. Rebuilding the same cells produces a
|
||||
different construction ID and never silently reattaches rooms. Relink is explicit.
|
||||
|
||||
## CONTROLLED_FIXTURE boundary
|
||||
|
||||
Only service methods named `controlled_fixture_place`,
|
||||
`controlled_fixture_set_stopped`, and `controlled_fixture_record_evidence` create
|
||||
test rooms, enable fixture collection, or write evidence. They are labeled
|
||||
CONTROLLED_FIXTURE in code and tests. They have no command/palette registration,
|
||||
and no Runtime executor calls them. Test helpers disclose direct underground
|
||||
geometry setup and MIMI registration; those do not assert natural unlock/join or
|
||||
production eligibility. Target construction uses existing definitions/costs/times.
|
||||
|
||||
Room IDs come from the existing StableIdGenerator's `peeping_room` counter.
|
||||
Evidence IDs encode the UTF-8 lengths and hex bytes of the full
|
||||
`(room_id, target_instance_id, source_event_key)` tuple. This is injective rather
|
||||
than delimiter concatenation or a hash with possible collisions. Replays return
|
||||
the existing ID with `duplicated=true` and retain the first minute. Evidence is
|
||||
only IDs, source key and minute. Room `target_history` retains prior bindings so
|
||||
relink does not orphan existing opaque evidence.
|
||||
|
||||
## Save invariants
|
||||
|
||||
Runtime versions remain 14 and 15, with version 15 only for existing v2 purchase
|
||||
history. Optional canonical StringName key `special_peeping_rooms` has section
|
||||
version 1 and exact keys `version`, `rooms`, `evidence`. Empty service state emits
|
||||
no key, preserving original snapshots. Absent sections restore empty only if no
|
||||
world occupancy uses the special kind or `peeping_room.` prefix. Thus removing
|
||||
the section from a current room-bearing save is rejected without a version bump.
|
||||
|
||||
Restore stages the entire section against staged world, path, facilities,
|
||||
construction and ID generator before committing any Runtime state. It checks
|
||||
canonical keys/types, version, duplicate room/evidence identities, deterministic
|
||||
evidence tuple encoding, bounds/geometry, room/occupancy correspondence in both
|
||||
directions, generator high-water mark, known historical facility IDs, present
|
||||
target definition/geometry, loss/stopped coherence, and evidence room/history/time
|
||||
references. Null/present-empty sections are invalid; absence is the only empty
|
||||
encoding. Existing pending command/reference and schema migration checks remain.
|
||||
|
||||
SaveService validates a present section through the same staged service validator,
|
||||
then supplies a shallow copy without this one key to the original purchase-format
|
||||
allowlist. No other keys are removed. The original format 1 (Runtime 1–14),
|
||||
format 2 (Runtime 15), manifest duplicate 15 and MIMI checks remain unchanged.
|
||||
|
||||
## Verification handoff
|
||||
|
||||
Five strict suites cover geometry/corridor, removal/relink, evidence/guards,
|
||||
typed atomic save corruption and physical format 1, and Runtime commands plus
|
||||
physical MIMI format 2. Tests use `var_to_bytes` for whole Runtime atomicity and
|
||||
roundtrip checks. New marker rows carry final test source hashes; prior rows and
|
||||
policy are unchanged. A helper under `tests/special/` is not a discovered suite.
|
||||
|
||||
`tools/run_p13_reference_tests.py` defaults to read-only verification of
|
||||
`$BUILD_OUTPUT_DIR/p13-reference-native`, failing closed without an absolute
|
||||
environment path. Explicit `--output --collect` is for Root only. The strict flag
|
||||
parser rejects abbreviations, repeated flags, positional inputs and `=` aliases.
|
||||
`--prepare-only` is non-native but was not executed by this worker.
|
||||
|
||||
The runner imports the existing P18 core by path. Since its three entry functions
|
||||
hardcode their label and seven/nine counts, a bounded AST adapter changes only
|
||||
protocol/runner identities, those explicit roster cardinalities, and diagnostic
|
||||
labels. It checks the exact adaptation-site counts and fails closed on drift.
|
||||
All confinement, inventory, JSON, sealing, source/engine/marker/policy binding,
|
||||
process, diagnostic, profile and cleanup gates are reused. It neither copies the
|
||||
whole runner nor modifies P18/helpers. The whole selected source map binds both
|
||||
runner sources. Phase count derives from `len(ROSTER) + 2`.
|
||||
|
||||
Roster includes all five new suites and existing construction/world/path/runtime
|
||||
construction, supply migration, transport save, Runtime weather, snapshot
|
||||
serialization, save lifecycle and MIMI purchase suites. Receipts retain
|
||||
`formal_acceptance=false` and `original_unit_complete=false`.
|
||||
|
||||
Root must perform serialized native collection with the allocation/private
|
||||
profile, then registered `p13-reference` validation, a separate actual Opus
|
||||
review, and the final exact-version required regression. Only those steps can
|
||||
establish execution results.
|
||||
|
||||
## Still pending, without invented values
|
||||
|
||||
D04 build/upkeep/build minutes and other product numbers; recorder staffing and
|
||||
natural triggers/rates D04/D08/P16; VIP suite P10-01; D05 transaction decisions
|
||||
(no tick-phase changes here); P19 evidence use and P24 camera UI; normal palette
|
||||
registration/construction/operation and natural production evidence; whole P13
|
||||
acceptance, final review/integration, and applicable native Windows conditions.
|
||||
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"id": "P13-02-CODE1",
|
||||
"parent_original_delivery_unit": "P13-02",
|
||||
"parent_work": "覗き部屋の対象背面、通路寸断、対象喪失と証拠IDを状態として実装する。",
|
||||
"parent_acceptance": "対象撤去、重複収集、停止、途中保存で状態と参照が整合する。",
|
||||
"original_denominator": {
|
||||
"packages": 30,
|
||||
"units": 88,
|
||||
"formal_complete_at_registration": 14,
|
||||
"partial_credit": false
|
||||
},
|
||||
"whole_parent_acceptance": false,
|
||||
"scope": "Non-graphic state/reference/occupancy/save machinery connected to real Runtime; no sexual depiction, camera content or blackmail action; this registered batch is not the whole original unit.",
|
||||
"authority": [
|
||||
{
|
||||
"ref": "BASELINE:52-53",
|
||||
"text": "Target FRONT VIP room/private room/changing area BACK; occupied room cells cannot be back corridor; recorder collects evidence."
|
||||
},
|
||||
{
|
||||
"ref": "BASELINE:167-174",
|
||||
"text": "VIP suite/public bath/private room explicitly peeping-compatible; restricted behind these target types and cuts back corridor."
|
||||
},
|
||||
{
|
||||
"ref": "BASELINE:199-209",
|
||||
"text": "Peeping room 2x1 BACK. Current public_bath/adult_private_room target definitions exist; missing VIP suite must remain missing, vip_private_salon is not a substitute."
|
||||
}
|
||||
],
|
||||
"implementation_requirements": [
|
||||
"Introduce separate PeepingRoomService, bounded real Runtime wiring; no whole runtime rewrite.",
|
||||
"Validate 2x1 BACK footprint entirely behind one allowed completed FRONT target, integrate existing construction/world occupancy rules; reject wrong layer, partial/multi-target overlap, unknown/missing/incomplete target and corridor conflicts.",
|
||||
"Stable room/target identity with target removal/loss detection; reconstructed different target is not silently the old identity; explicit validated relink only, preserving stopped/no-auto-resume rules.",
|
||||
"Idempotent evidence IDs bound to stable room/target/source event key; replay cannot duplicate or alias another target. Opaque state records only.",
|
||||
"Collection rejects stopped/no-power/closed/under-construction/lost-target cases; do not create undefined natural trigger/rate/staffing eligibility.",
|
||||
"Versioned Runtime snapshot section; genuinely legacy absent section migrates empty; current-schema missing/malformed/unknown/wrong-reference/duplicate data reject atomically with original whole Runtime untouched. Preserve all existing schema migrations and pending references.",
|
||||
"No free production placement, bypassed build costs or arbitrary content-event injection exposed through new commands. Unknown build/upkeep/staff/collection values remain unset and unavailable; backend tests may use clearly labeled controlled fixtures. Normal palette registration and naturally collected production evidence are pending. Define command preconditions precisely; construction costs/definition and recorder eligibility cannot be silently invented.",
|
||||
"Reuse existing guarded native harness logic for a strict narrow runner and add new test marker registrations without weakening prior marker/policy behavior. Do not rerun full regression during implementation."
|
||||
],
|
||||
"required_local_coverage": [
|
||||
"public_bath and adult_private_room valid geometry; VIP unavailable not substituted",
|
||||
"wrong FRONT, partial/multiple target footprint, incomplete/missing target; corridor/path occupancy conflict/disconnection",
|
||||
"target demolition/loss, rebuild different identity, explicit relink; reject collection after removal",
|
||||
"same event replay one evidence ID; different room/target keys distinct and stable",
|
||||
"stopped/no-power/closed/under-construction collection rejection",
|
||||
"roundtrip exact typed state; legacy absence; current missing/malformed version/references/duplicates atomic unchanged",
|
||||
"Runtime command/removal/save integration; existing construction/world/path/supply-save/transport-save/weather migrations impact coverage"
|
||||
],
|
||||
"pending_not_invented": [
|
||||
"D04 build/upkeep/build_minutes and related numbers",
|
||||
"recorder role staffing and natural collection trigger/rate D04/D08/P16",
|
||||
"VIP suite P10-01",
|
||||
"D05 unresolved transaction rules; no tick-phase changes",
|
||||
"P19 use of evidence and P24 camera UI",
|
||||
"normal construction/operation/full parent acceptance, final whole review and applicable Windows conditions"
|
||||
],
|
||||
"workflow": [
|
||||
"Actual Opus commander confirms registered run and model; Runner worker only edits allowed paths.",
|
||||
"Worker static/local preparation only; Root owns serialized native collection in allocation build with private profile and guarded process/cleanup receipts.",
|
||||
"Registered validation reads/verifies complete native evidence, exact current selected source and marker/policy/engine/input/environment binding. Zero exit alone is not acceptance.",
|
||||
"Separate actual Opus review, final exact-version required regression and ordinary integration/final; any backend completion never adds parent original-unit credit."
|
||||
],
|
||||
"model_proposal": {
|
||||
"codex": "gpt-6.1-sol",
|
||||
"selected_by_actual_opus_run": "e65d48f5a7294378a81bb58dea00c605"
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,13 @@
|
||||
# 次に閉じる1件: P24-02 操作と通知
|
||||
|
||||
現在は提出bd3a134、修正使用済み4・上限なし、同じ既存Runner。元30/88・正式14・部分点なし、P24-02全8条件は未完了。
|
||||
提出fe44f55、同一既存Runner、修正6・上限なし。元30パッケージ/88成果・正式14・部分点なしを維持。今回の正式完了加算0。
|
||||
|
||||
GUIの4ファイル統合成果を保持し、実上限終了後にOpus5.5がCodex6.1-solで同じ非UI作業を継続する判断を出した。必須roster欠損を件数で通す分岐とenv偽HEADを修正。実compile/保全/diff確認は合格、局所9試験を実provider出力/exit0と3入力SHA一致で再利用。別Opusの限定静的review95cffd7はpass、重大/高/中0・low5。全8正式reviewではなく完了加算0。
|
||||
実Opus選定Astraで2中指摘(移動HEADを基準にした保持試験、非OS証拠をOS記録へ押し込む形式/段階循環)を修正。通常提出後の実Sfe44f55と実Qefd5466で局所試験を各2実行し全exit0。別Opus3cd2285の限定静的差分レビューpass、重大/高/中0・low5。全8の正式レビューではない。
|
||||
|
||||
原記録・限定reviewの全provider入力/出力/生ログ・Root SHA/JSON構造保全は source-ready-repair4-20261017/CURRENT_ACCEPTANCE_AND_NEXT_BATCH.json と同フォルダのmanifest。提出sourceは codex/p24-02-source-bd3a134 へpush済みでmain未採用。
|
||||
実M54cade4/Qefd5466/T1c13556でGodot import、326スクリプト構文、操作通知62・イベントログ34・選択保存75の影響3スイート合格。所有5PID終了、source/default-player/cleanup guardエラー0。通常OS・全180回帰は今回未実行。前段のRootキャッシュ/未作成buildディレクトリによる起動前失敗はエンジン0で是正し、実行結果と混ぜない。
|
||||
|
||||
Root実合成Q4bf9a1b/treea0667b9、基点M51e8657を準備。元Git4競合は生stage記録を保持し、保全済み提出Sのblobだけで統合側解消。Source1368とroster180は実行件数ではない。現レビュー/準備版は版限定、main文書更新後は次の実MainとSourceで正規の合成を再拘束する。
|
||||
現在と全8の不足/版/証拠は root-readiness-repair6-20261017/CURRENT_ACCEPTANCE_AND_NEXT_GATE.json、原記録SHAは同EVIDENCE_MANIFEST.json と ACTUAL_NATIVE_RAW_MANIFEST.json。worker-pre-submitは元78f7cba時点の履歴で、提出後の証拠はRoot4実行と実native記録を使う。sourceはcodex/p24-02-source-fe44f55へpush済み、main製品コードは未採用。
|
||||
|
||||
次の必要batch: 実Git S/M/T/Qと同一root/source/input/rosterの厳密な結合、単なるartifact ID件数を実内容・条件対応へ変更、実クリック代替・防衛modal連動・bubble描画/切替と仕様根拠の確認。保全guardのbody集合比較/出力flagは低指摘として保持。実NTR/決闘/防衛の上流依存と未承認値は捏造しない。P04未回答4規則は別のまま。
|
||||
次: 実producer/終了時刻を収集時に固定する型付き通常OS/runtime記録、実index構成のend-to-end正例、普通の配置/クリック/モーダル/IME/倍率/別PID保存。自然NTR/決闘/防衛はwholeP18-01/02・P19-01・P21-01等の依存を元計画の別作業としてOpus指示で解消する。P18バックエンド265ce30は完了済みで再起動しない。P04未回答4規則や未承認本番値を捏造しない。
|
||||
|
||||
関連必要修正を固めてから実import/局所/影響・通常OS/日本語/倍率/別PID保存再開、正確な最終版の必須全回帰を1回、全8独立Opusreview、通常integration/final/台帳。保持ジェスチャ延期と同一Windows実機は未達のまま。新規native/全回帰0、旧179を新sourceへ転用しない。
|
||||
必要な関連修正を固め、実際の最新M/Sから新Q/Tを正規に拘束してから、正確最終版の必須全回帰1回・全8独立レビュー・通常integration/final・台帳へ進む。この文書更新後のMainへ旧Qを再ラベルしない。適用入力が完全一致する局所証拠だけを再利用する。保持ジェスチャ延期と同一Windows実機の該当条件は未受入のまま。
|
||||
|
||||
-63
@@ -1,63 +0,0 @@
|
||||
# Actual Opus authorized non-UI continuation of the same repair4
|
||||
|
||||
Actual commander679a702635994176bef72423ebb989bb selected Codex6.1-sol. Existing GUI is terminal on Antigravity quota; no concurrent worker is active. Contract worker=agy remains original UI assignment; this recorded phase authorizes Codex implementation ONLY for the non-UI checker/static/test/doc files below. Do not launch AGY or repeat/replace GUI work. No task/state/spec/counter changes.
|
||||
|
||||
I authorize one code-only (non-UI) Codex continuation of the same repair4, on the same worktree and task, at exact HEAD 9641ed52def2ff8e5b0222449a4a83a1191e1d37. This does not add a task, worker registration, repair count, cap or spec change. The old GUI-only direction f8c30db is ended (Antigravity quota) and this replaces it only for the remaining non-UI work.
|
||||
|
||||
What I checked read-only:
|
||||
- The defects are real. tools/check_p24_operations_evidence.py:420-424 has the two count-bypass `pass` branches. :400-401 silently skips rows that are not dicts. :409/:413/:417 let a missing SHA, failures or passed field through. :69-73 lets the CANDIDATE_COMMIT/TARGET_HEAD env value take the place of the real git HEAD. :86-95 is a separate local roster that differs from tools/run_all_tests.py roster(root) at :27 (stdlib-only, with a __main__ guard at :314).
|
||||
- The unfinished GUI checker repair4/check_repair4_preservation.py exists but has not been run.
|
||||
- I could not find preserved-GUI-terminal-quota inside this worktree. It is the owner's root copy outside the worktree, so the bridge must check it before launch.
|
||||
|
||||
PRE-LAUNCH (bridge, read-only): record `git rev-parse HEAD` == 9641ed5…; confirm no live job; record the sha256 of the 4 protected files below and confirm they match the root preserved-GUI-terminal-quota copies. Abort on any mismatch.
|
||||
|
||||
PROTECTED, byte-identical, no edits (SHA guard checked before and after the run; any difference = reject, no submit):
|
||||
- scenes/main/main.gd
|
||||
- scenes/main/world_preview.gd
|
||||
- tools/regression/suite-policy.json
|
||||
- docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json
|
||||
Also leave unchanged: OWNER_REPAIR4_GUI_INSTRUCTION.md, OWNER_REPAIR4_SUPPLEMENT_CHECKER.md, root-current-main-reference-20261017/**, and all other scope files not named below.
|
||||
|
||||
ALLOWED EDITS:
|
||||
(a) tools/check_p24_operations_evidence.py, limited to supplement S1/S2 exactly as written in OWNER_REPAIR4_SUPPLEMENT_CHECKER.md:
|
||||
- Load the required suite set from tools/run_all_tests.py roster(root) with importlib, read-only. Remove the local roster or make it a thin wrapper.
|
||||
- Compare suite sets exactly. Reject: an empty or non-list suite list, non-dict rows, a missing path, unknown or duplicate suites, missing required suites, failures that are not int 0 (bool rejected), passed that is not True, and source_sha256 that is missing, not HEX64 or mismatched.
|
||||
- Top-level counts are an optional cross-check only.
|
||||
- Get the real HEAD from `git rev-parse HEAD` with cwd=repo root. If git fails, return "". The env value is only a cross-check, and a mismatch fails. Update the message at :477.
|
||||
- S4: no other guard is changed.
|
||||
(b) docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/check_repair4_preservation.py: run it, and fix only real defects in it. It must stay read-only toward the protected files.
|
||||
(c) New stdlib test docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py: the 8 negative cases and the positive controls from S3, using temp dirs and a temp `git init` repo.
|
||||
(d) New docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/REPAIR4_CODE_PHASE_STATUS.md:
|
||||
- all 8 conditions marked SOURCE-READY or NOTRUN, each with its dependencies;
|
||||
- the S5 composition prerequisite (S/M/T/Q provenance; reuse the P23 composition functions and current-main run_all_tests source_refs/roster), listed as an unresolved Root dependency with every missing helper named;
|
||||
- S6: the 179 and other earlier passes marked stale for this source;
|
||||
- the GUI quota stop recorded honestly.
|
||||
(e) The SOURCE_READY_PRESERVATION_RESULT.json produced by (b).
|
||||
No other paths.
|
||||
|
||||
LOCAL TEST ARGV (run from the worktree root, these only):
|
||||
1. python3 -m py_compile tools/check_p24_operations_evidence.py tools/run_all_tests.py docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/check_repair4_preservation.py docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py
|
||||
2. python3 -c "import importlib.util as u;s=u.spec_from_file_location('c','tools/check_p24_operations_evidence.py');m=u.module_from_spec(s);s.loader.exec_module(m)"
|
||||
3. python3 docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py
|
||||
4. python3 docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/check_repair4_preservation.py
|
||||
5. shasum -a 256 on the 4 protected files, matched against the pre-launch values.
|
||||
|
||||
Forbidden: Godot, engine/native/OS collector, full roster, run_all_tests main(), the full checker against any index, writing acceptance fixtures or index.json, network, commit/branch/push, agy CLI, manual DB/SQL, env relabeling.
|
||||
|
||||
RELEASE/SUBMIT: normal submit only if all 5 steps exit 0, all 4 protected SHAs are unchanged, git status shows changes only in the allowed paths, and every NOTRUN item is documented. Otherwise report the failure output and do not submit (the task stays repair_ready).
|
||||
|
||||
MANDATORY GATES THAT STILL APPLY:
|
||||
- Root S/M/T/Q composition in a genuine composed checkout
|
||||
- Root static/import checks and affected local UI tests in Godot
|
||||
- actual OS Japanese composition and scale evidence
|
||||
- the full required roster on the exact final source
|
||||
- tools/check_p24_operations_evidence.py --verify-only on the real index
|
||||
- a separate independent Claude review with runtime evidence
|
||||
- current-main integration and final validation
|
||||
- Windows same-candidate platform acceptance, still pending
|
||||
|
||||
The 8 conditions remain unmet and nothing counts as acceptance.
|
||||
|
||||
Read OWNER_REPAIR4_SUPPLEMENT_CHECKER.md and the actual current477-line preservation script. Existing4GUIfile working changes are protected, must remain byte-identical. Do not touch Root instruction/reference files. Do not rely on stale prompt source excerpts instead of actual current disk.
|
||||
|
||||
Use python -B where practical. py_compile is permitted by Opus; its small generated __pycache__ is ignored and not source. Do not add unlisted validation artifacts; put required local output facts and8conditions in REPAIR4_CODE_PHASE_STATUS.md. Root will inspect actual captured command exits before normal submit, not your self-report alone. Keep SOURCE-READY/NOTRUN honest.
|
||||
-52
@@ -1,52 +0,0 @@
|
||||
# P24-02 repair4 — current same-session GUI work
|
||||
|
||||
This is the complete current instruction. Supersedes old repair3 patch messages and stale review panel. Work in this existing P24-02-implement workspace only. HEAD9641ed5, same registered task, repairs4/maxnull. The old repair3 output was already committed by Root; do not apply it again.
|
||||
|
||||
## Actual Opus repair direction f9560ec6130142749a929427f7a114c1
|
||||
|
||||
Repair4 (same task, same agy/Antigravity GUI semi-automatic worker via the existing UI packet; no new session, agent, provider, permission or cap change). Purpose: get the source ready for current-main reconciliation only. The latest validation failure (missing BUILD_OUTPUT_DIR/p24-operations-evidence/index.json) is the expected result while no actual run exists. Repair4 must not fabricate that index, add a pass template, or re-run the checker or full suite to make it go away.
|
||||
|
||||
SCOPE: original base 1a5abc65, allowed_paths, spec 738268b4 and all8 conditions stay unchanged. Do NOT merge or rebase whole main into the worker. Reconcile only the 4 conflict files. Use the exact main 51e8657 snapshots in root-current-main-reference-20261017/REFERENCE_MANIFEST.json and check their sha256/blob pins before use: main.gd 92677e4a/fff37f08, world_preview.gd 4bc49a19/fa32fe03, completion_marker_contracts.json 6900df60/2eecb803, suite-policy.json 7eb085d7/ad194ae4. Merge the worker's own P24 diff (1a5abc..9641ed5) onto each snapshot. Every other main change is left to Root composition. If a reconciled file needs a symbol that exists only outside allowed_paths on main, keep the main snapshot text as-is and record it as a Root-composition dependency. Do not stub it or copy that other file.
|
||||
|
||||
1) world_preview.gd: start from the main snapshot. Keep all accepted P23 code intact: LifeOverlay/_draw_life_overlay, the single coherent frame report, its getters and the strict guards. Re-apply the P24 click-control, placement/invalid-drop feedback and bubble render bindings on top, with no duplicated or shadowed funcs/vars/signals.
|
||||
2) main.gd: start from the main snapshot. Keep staff relation snapshot-v2, the save migration, the normal menu, the staff candidate/management panels, _on_snapshot_published and the dimension migration paths. Re-apply the P24 save-label modal/IME, pause/resume, event log, cut-in wiring and operations camera controls. Cut-in hooks attach only to existing signals/states. Ordinary NTR/duel/defense triggers stay explicit unmet dependencies on whole P18-01/02, P19-01 and P21-01. P18 265ce30/5f6bc11 is backend-only.
|
||||
3) completion_marker_contracts.json and suite-policy.json: keep every existing main entry byte-equivalent in meaning, then add only the P24 entries from the worker's diff. Do not regenerate, reorder, weaken or remove any roster, cleanup or completion authority.
|
||||
4) Add a static overlap/preservation check (inside the allowed p24-02 docs/tools paths, e.g. a mode in check_p24_operations_evidence.py or a separate docs script). It lists every func/signal/const/class_name and every JSON top-level/entry key found in (a) the main snapshot and (b) the 9641ed5 P24 side for all 4 files. It fails if any of them is missing or duplicated in the reconciled file. It also statically checks that UI actor bubbles still match the current relation schema fields. Save its output as SOURCE-READY evidence. It is not runtime proof.
|
||||
5) Do not run Godot, OS, import or full tests, and do not run the final checker in a loop. Root owns native/import/affected/full on the composed current-main tree.
|
||||
6) Write a p24-02/repair4 note: reconciliation map per file with pins, the preservation-check result, status SOURCE-READY/NOTRUN, and all8 conditions each still unmet with the exact missing proof/dependency. Windows subconditions stay individually unmet with no pass templates. Old legacy60 evidence is limited and not current acceptance. Formal 14/88 is unchanged and there is no partial credit.
|
||||
|
||||
After repair_ready, a recorded run decision is required before any worker starts.
|
||||
|
||||
## Actual Opus run direction f8c30db569474df482ae6ab16502ce61
|
||||
|
||||
P24-02 is repair_ready (repairs=4, max null). Submitted source 9641ed5 is unchanged and no worker is running. I checked the Root reference set in the workspace: all 4 current-main snapshots are there. That is 2 .gd files renamed to .gd.source.txt, completion_marker_contracts.json and suite-policy.json, plus REFERENCE_MANIFEST.json and the 2 all8/limited-evidence audit JSONs. This matches the owner's statement. The owner authorized only one route, so the run is GUI delivery only. Root gets a ui-packet and sends one complete file-based instruction, through the current UI input, to the existing idle Antigravity IDE session P24-02-implement. Do not use the agy CLI and do not start another worker, session or CLI. Do not change the provider, model, settings or permissions. The old unaccepted repair3 review panel is historical only; do not apply that patch again. Repair4 direction for the worker: (1) Reconcile the 4 files against the 9641ed5 disk state and the main snapshots: scenes/main/main.gd, scenes/main/world_preview.gd, completion_marker_contracts.json and tools/regression/suite-policy.json. Keep all 7 accepted P23 code items and the P24 own diff. Do not merge or rebase the whole of main. (2) In the JSON merges, keep every main snapshot entry body and every P24 added entry. Keep main's ordering, policies and scope. (3) Write a mechanical static preservation audit that uses class- or scope-qualified GDScript symbol identities. Then a legitimate _draw or _init in a different inner class is not flagged as a duplicate. Record the audit result. (4) Add a SOURCE-READY/NOTRUN gap note for all 8 conditions. (5) Static Python, check and diff validation only. No Godot, OS or full roster run. Edit only within allowed_paths. Do not change originalbase, allowed paths, spec, the 8 conditions or the old count. Deliver actual reconciled files, not an outline. This run grants no acceptance, approval, integration or budget change.
|
||||
|
||||
## Full pinned workspace materials
|
||||
|
||||
Read docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/REFERENCE_MANIFEST.json and its exact full snapshot paths. The two Godot source snapshots have .gd.source.txt suffix to prevent duplicate class import; bytes/SHA are unchanged. Read the all8 acceptance/gap and60 evidence SHA audit JSON files in that same directory. Keep this entire reference set immutable. Read immutable docs/spec/acceptance/P24-02-code-r01.json and relevant current source dependencies as needed. No size cap.
|
||||
|
||||
## Contract scope (unchanged)
|
||||
|
||||
[
|
||||
"scenes/main/main.gd",
|
||||
"scenes/main/world_preview.gd",
|
||||
"scripts/ui/event_log_dialog.gd",
|
||||
"scripts/ui/manual_save_slots_dialog.gd",
|
||||
"scripts/ui/operation_feedback.gd",
|
||||
"scripts/ui/operation_feedback.gd.uid",
|
||||
"scripts/ui/operations_camera_controls.gd",
|
||||
"scripts/ui/operations_camera_controls.gd.uid",
|
||||
"tests/ui/test_operations_notification.gd",
|
||||
"tests/ui/test_operations_notification.gd.uid",
|
||||
"tests/ui/fixtures/operations_os_observer.gd",
|
||||
"tests/ui/fixtures/operations_os_observer.gd.uid",
|
||||
"tools/check_p24_operations_evidence.py",
|
||||
"tools/run_all_tests.py",
|
||||
"tools/regression/suite-policy.json",
|
||||
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/**"
|
||||
]
|
||||
|
||||
## Required actual result
|
||||
|
||||
Implement the reconciled source files and a meaningful static preservation checker plus its real result, and all8 SOURCE-READY/NOTRUN note in the allowed p24-02 docs area. Root owns actual native/current-main composition, import, impact, OS, final full and acceptance. Do not run Godot/LSP/editor/OS/full/checker-loop, do not change project.godot/caches/player files/settings/permissions/billing or immutable references/spec. Do not commit/push/rebase/merge whole main. Do not claim missing upstream events or Windows as passed. Do not recreate already-complete P23 code or delete earlier strict tests. Compare GDScript qualified symbols and main JSON full entry values plus only P24 added entries, detect missing/duplicate definitions without confusing same method names in different inner classes. Run meaningful static Python check and git diff --check. Report exact changed paths, preservation result and remaining conditions after actually writing files.
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
# Actual recorded Opus JSON-order-only correction — same repair4
|
||||
|
||||
Actual commander2a2e28a5c7e641c99263ab9caba5a9e7 chose Codex6.1-sol. Prior Codex1cde6bdd phase is finished, GUI remains terminalquota, no competing worker. Do not repeat previous code implementation or old GUI.
|
||||
|
||||
Continue the SAME repair4 (no new task, no repair-counter change, no permission change). I checked the cause. In tools/regression/suite-policy.json, the new key "tests/ui/test_operations_notification.gd" is the third key (index 2) of suite_policies (line 18). In completion_marker_contracts.json, the P24-02 row is near the top of "rows" (line 34). check_repair4_preservation.py (lines 279-310, equals_main_plus_p24_only_additions_in_order) requires the main snapshot order with the P24-only additions appended at the end. Do not weaken the checker. INSTRUCTIONS: (0) Before any edit, record the sha256 of every protected file: scenes/main/main.gd, scenes/main/world_preview.gd, tools/check_p24_operations_evidence.py, the new 9-test script, repair4/check_repair4_preservation.py, the shared roster and all Root instruction/reference files. Do not run ps, and do not search outside the workspace. Trust ROOT_CODE_PHASE_PRELAUNCH_PROOF/VERIFIED_PRELAUNCH.json. (1) Edit only these two JSON files. In completion_marker_contracts.json, move only the new P24-02 marker row from its current index to the append position the checker expects, after all main rows. In suite-policy.json, move only the key tests/ui/test_operations_notification.gd and its object, unchanged, to the end of suite_policies. Change no values, no other keys or rows and no old main entries. Match the existing indentation and formatting, and change nothing else in those files. (2) Do a structural JSON comparison before and after. Each file must parse, and its parsed content must be identical apart from the position of the moved entry. That means every existing main entry and the P24 entry body are deep-equal, and the counts are unchanged (180 rows; the same policy key set). (3) Run py_compile on the touched and checker Python files with PYTHONPYCACHEPREFIX="$TMPDIR/p24-phase-pyc" set for that command only. The existing Runner Python 3.12 with the same task-local prefix is also acceptable. Do not mark the work blocked because of the cache location. Change no system settings or permissions. (4) Rerun check_repair4_preservation.py --write-evidence. It must report all pass, including equals_main_plus_p24_only_additions_in_order=true for both JSON files and the .gd results unchanged (279/279 and 179/180 with the one allowed bubble adapter). (5) Run git diff --check. Do not rerun the 9 tests if Root's workspace receipts show that their input/code hashes are unchanged and the earlier actual exit was 0; otherwise run them once. (6) Update only SOURCE_READY_PRESERVATION_RESULT.json (written by the checker) and REPAIR4_CODE_PHASE_STATUS.md. The status file documents the move-only fix, the structural-equality proof, the compile cache prefix, the 9-test reuse or rerun, and the before/after SHA guard. (7) Afterwards, recompute the protected SHAs; they must be byte-identical. Run no engine, OS, full or final checker. Do not create or edit the acceptance index. No commits. Do not relabel the earlier 179 result. Make the normal submission only if every check passes. These items stay pending: whole8, Root S/M/T/Q, native, current full, whole-unit review and Windows. If any check fails, stop and report the exact output without working around it.
|
||||
|
||||
Root bridge has completed current HEAD/no-competing-job/operation-lease preflight. Do NOT run ps or search outsideworkspace. Read ROOT_LOCAL_VALIDATION_R02_REUSE_RECEIPT.json for actual raw testcommand/event/exit0 and the exact3 input hashes. Read ROOT_CODE_PHASE_PRELAUNCH_PROOF/VERIFIED_PRELAUNCH.json for originalGUI copies. This correction explicitly may move only newP24 JSON entries, while retaining both .gd source bytes and all Python/helper/test code. No other Source-Ready claim than static/checker readiness; all8 andrealRootcomposition remain unmet.
|
||||
-19
@@ -1,19 +0,0 @@
|
||||
# Actual Opus supplement — same active repair4 only
|
||||
|
||||
Actual commander run cc9bd84f926d4b11ac320de925832e43. This is not a new worker/run/repair count. Continue current recorded repair4 and add these acceptance-required checker fixes within existing allowed_paths.
|
||||
|
||||
WAIT. The existing GUI repair4 conversation (Opus 5.5 Medium, which received the f8c30db direction at 13:39) is still active: it shows Working/Cancel and is running 3-way reconciliation. The Runner reads repair_ready only because this is semi-automatic GUI mode. Do not issue run or request-repair, and do not add a worker, run or repair count. I read the checker and confirmed both defects in this checkout. Copy the supplement below into docs/plans/original-completion-2026-10-02/execution/p24-02/OWNER_REPAIR4_SUPPLEMENT_CHECKER.md and send it in the same active conversation.
|
||||
|
||||
--- SUPPLEMENTAL INSTRUCTION (repair4, same worker, within existing allowed_paths) ---
|
||||
S1 Count bypasses (tools/check_p24_operations_evidence.py:420-426): delete both `pass` branches, the ones that use len(seen_suites) and len(suite_entries). The roster check must compare actual suite sets and must not use counts.
|
||||
a) The required set is the shared authority tools/run_all_tests.py roster(root). Load it read-only with importlib.util.spec_from_file_location; the module has a __main__ guard at :314 and imports only stdlib. Remove or replace the divergent local get_required_suite_roster (:86-95), or make it a thin wrapper that delegates to roster(). Do not reimplement the roster.
|
||||
b) Reject the evidence if any of these hold: suite_entries is not a non-empty list; any row is not a dict, so stop silently skipping non-dict rows (:400-401); any row has no suite path; a suite path is not in the required set (unknown or invented); the same suite path appears more than once; any required suite is missing; a row's failures field is absent or is not int 0 (bool rejected); a row has passed absent or not True; source_sha256 is absent or not HEX64, or does not match the file on disk.
|
||||
c) The top-level total_suites/suites_count/failures fields are optional cross-checks at most. If present, they must equal len(required) and 0. They must never stand in for per-suite rows. Absent rows always fail.
|
||||
S2 get_actual_git_head (:68-83): run `git rev-parse HEAD` first, inside the repo root (cwd=repo root). If git fails, return "" so verification fails. CANDIDATE_COMMIT/TARGET_HEAD may only be a cross-check: if set and different from the real HEAD, fail verification with a clear mismatch error, and never use either value in place of the real HEAD. Update the error message at :477 to match.
|
||||
S3 Tests: add a stdlib-only Python test under docs/plans/original-completion-2026-10-02/execution/p24-02/ (allowed path), using a temp repo root/fixture tests dir and calling the checker functions directly. Negative cases: (1) a required suite missing and replaced by an invented name with equal or higher row count; (2) a required suite missing with duplicate rows padding the count; (3) an unknown extra suite; (4) a failed row, a row with passed absent, a row with failures absent; (5) source_sha256 absent or mismatched; (6) rows absent while full_roster counts are present; (7) the env SHA differs from the real git HEAD in a temp git repo; (8) git is unavailable and only the env SHA is set. Positive controls: an exact roster with all rows passing and correct SHAs, and a real HEAD whose env value agrees or is unset. Run only this test plus static/import checks of the two tools. No Godot, no full roster, no OS collector, no full checker loop, no final acceptance fixtures or index.
|
||||
S4 Keep every other guard unchanged: the 8 conditions, OS/process/PID checks, artifact hashes, current-profile checks, pending-template rejection. Do not rewrite unrelated code.
|
||||
S5 Composition prerequisite (document it, do not implement it): the submitted old-base S and the combined current-main T/Q differ outside the 4 allowed files, and the checker has no real S/M/T/Q Git-provenance contract. Record this in p24-02 docs as SOURCE-READY/NOTRUN, an unresolved Root prerequisite that must be settled before heavy final evidence. Plan: Root reuses the accepted P23 composition functions and current-main run_all_tests.source_refs/roster in the genuine composed checkout. Do not import helpers that don't exist on the worker's base. List every missing helper/API as an explicit Root composition dependency. Do not use env or receipt relabeling.
|
||||
S6 Earlier passes (the 179 and any others) do not apply to this changed source; mark them stale. Keep the same 4-file reconciliation, the static preservation audit and the note that the same 8 conditions are unmet. No commit, no Root source edits, no new workers.
|
||||
--- END ---
|
||||
|
||||
Root clarification: earlier P23 full179 remains valid for its original accepted d2581af/M5041b88/treea700519 source and already closed P23-03. It cannot be relabelled/reused as full regression for the new changed P24 source. Preserve all original proof bytes and closure records. No new whole-game or whole-unit acceptance here.
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
{
|
||||
"task": "P24-02",
|
||||
"head": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
|
||||
"checks_done_by_trusted_Root_bridge_not_repeated_by_sandbox_worker": true,
|
||||
"actual_no_other_Runner_job_at_prelaunch": [],
|
||||
"actual_terminal_GUI_quota": "Individual quota reached; Error ID b866fa14-cff8-4fc1-ac4f-fba529d47498-136; queued followup failed same quota Error ID ending143; no Working/Cancel, Send disabled, baseline refresh2026-10-17 18:39:56 JST.",
|
||||
"original_terminal_run": "261a974d4b6345419851bbba399cf1ae finished; no edits or local tests",
|
||||
"4protected_original_copies": [
|
||||
{
|
||||
"protected_path": "scenes/main/main.gd",
|
||||
"readable_original_copy": "docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/scenes/main/main.gd.source.txt",
|
||||
"expected_and_actual_sha256": "f71f8c15493d6b51002ee4afb41cc349efe77e860944c1f79a5b24f928ecbd24",
|
||||
"exact_original_copy_verified": true
|
||||
},
|
||||
{
|
||||
"protected_path": "scenes/main/world_preview.gd",
|
||||
"readable_original_copy": "docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/scenes/main/world_preview.gd.source.txt",
|
||||
"expected_and_actual_sha256": "8c2daa9e95d56e6e40bb2071b206693069cb7e4731b4d660d59d41c34cb43dfa",
|
||||
"exact_original_copy_verified": true
|
||||
},
|
||||
{
|
||||
"protected_path": "docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"readable_original_copy": "docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"expected_and_actual_sha256": "1653c4beac791ec5aa0a6691275ecf5c798ffd689482747c739d7eb2ea5f87d1",
|
||||
"exact_original_copy_verified": true
|
||||
},
|
||||
{
|
||||
"protected_path": "tools/regression/suite-policy.json",
|
||||
"readable_original_copy": "docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/tools/regression/suite-policy.json",
|
||||
"expected_and_actual_sha256": "fa395a4d2a98bec607dfa1a030122efe62e9412fccf8dfba2e2db5579561a7b9",
|
||||
"exact_original_copy_verified": true
|
||||
}
|
||||
],
|
||||
"normal_lease": "Bridge acquires operation:P24-02 exclusively while executing Runner.llm. Check that proof; do not try ps from the sandbox. Your own run is necessarily live after Root pre-launch.",
|
||||
"sandbox_policy_unchanged": true,
|
||||
"instruction": "Do NOT search user folders or run ps; prelaunch/liveGUI checks belong to trusted bridge. You may rehash the exact four original copies supplied here and compare to actual working files if useful; no external path needed. Implement the allowed code phase and tests now. Root rechecks before/after.",
|
||||
"at_jst": "2026-10-17T13:54:04.253755+09:00"
|
||||
}
|
||||
-3788
File diff suppressed because it is too large
Load Diff
-3319
File diff suppressed because it is too large
Load Diff
-2323
File diff suppressed because it is too large
Load Diff
-473
@@ -1,473 +0,0 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"suite_policies": {
|
||||
"tests/s4/test_original_relationship_model.gd": {
|
||||
"source_sha256": "c74b243dbbb54dba9bbc165e29508cca910f0beb63e32d25ebbb8ea606dccce9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/s4/test_original_relationship_runtime.gd": {
|
||||
"source_sha256": "c56bdb99dd43a4e7ceb3ca2861e8db39972c5c4e805126a77e2f7da32ca5bdc9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_operations_notification.gd": {
|
||||
"source_sha256": "9c26386c529b8c8135639e8d0f0ed390da7139d64ff1e268975b05948cab9147",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": ["single"],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_departure.gd": {
|
||||
"source_sha256": "3137f36f547514f25ce6ac775fa7a5141d12f83ca4b95da0be45fecfafe9d9b4",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": ["single"],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_anri_recruitment.gd": {
|
||||
"source_sha256": "74cfaf73ed01769c49498e5395fda009b70f2f6667f4f902abf4697f01f87962",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_event_log_ui.gd": {
|
||||
"source_sha256": "9b1d7cb112790bb58969338ab1dc0bbe2a1c26b4307c4bfcd37491cf950c557b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_amelia_donations.gd": {
|
||||
"source_sha256": "1bd622a3d88374f01e3d8885a84a816572ed296928f6ce7e3f8134ab15f60793",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_fine_cleaning_effect.gd": {
|
||||
"source_sha256": "7c7df0bac1c072ed4423140e8afe431952ec2a47f76df7dbc24cab62283cae06",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_normal_auto_purchase_chain.gd": {
|
||||
"source_sha256": "6916d644620c49a09ab110d98fe07477bb5bb9f96da3826a0be962610cc55256",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_normal_supply_chain.gd": {
|
||||
"source_sha256": "eedbb301e68285bbd6f701cf7eec15537f116944115807e0d9133a4c2970bb1d",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_approved_free_unique_arrears_ui.gd": {
|
||||
"source_sha256": "ff684e2f227896c1b5df6026f130d45f4289fc6cae40989be51ddc95b2cf135b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_business_management.gd": {
|
||||
"source_sha256": "2c76697f9a911e9dded63ebbbc2b82ee9e616777c50a637eebd91dc4932f85a5",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_chapel_gameplay.gd": {
|
||||
"source_sha256": "e1996d6bd6caf46bae7becf1de2514e91a6168a686e83563b00803ac71109735",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_cleaning_gameplay.gd": {
|
||||
"source_sha256": "38593cd17829611dd34561ec46a0d746492a6cffebc35a659d49fe69de4234ac",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_dashboard_coalescing.gd": {
|
||||
"source_sha256": "2f4bd8e9d43911067a7e82864454f6779ae92acc48e0b8d4932e5d963e0430ec",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_defense_management.gd": {
|
||||
"source_sha256": "e7debf5746e1ad5976b1afb1d2471c1c2317bcc406ed2716a2368bd4e06e0235",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_dimension_migration_ui.gd": {
|
||||
"source_sha256": "0f0cec88ea8bf5fccdcd5ade02fab70b7dc71135132048cd10db17ad9d964c0d",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_elevator_management.gd": {
|
||||
"source_sha256": "dff2d3f2a1cea84224aee8f70c4ad53d731df173bc7d16d7ec012c0d16c62e11",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_first_operating_day.gd": {
|
||||
"source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_guest_decision_log.gd": {
|
||||
"source_sha256": "8532defab87c075ad3196b44af030cdab785abed365e25d5a56d2d42f115cf71",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_guest_observation.gd": {
|
||||
"source_sha256": "8f5af3d6ef367512b34d0cf35fd8c1d2848d020419dddfa234120206dbe4f6e4",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_layer_skin.gd": {
|
||||
"source_sha256": "aab6f0561e222f88681169a82b47631320495df4c359bcf79d2fb228c60ad83b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"front-owner",
|
||||
"back-owner"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_main_audio_feedback.gd": {
|
||||
"source_sha256": "9bc9e13ef3498941b6e8566c0b7666c42e294b63e18ec0da2cfa1cda3e4617bd",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_main_dashboard.gd": {
|
||||
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_original_build_pointer.gd": {
|
||||
"source_sha256": "a04a79c5e766659d10c4564d1f11c6554a27cb8af71431295e10bc4967012913",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_original_facility_controls.gd": {
|
||||
"source_sha256": "294b39808d3454f96555b981c8f822f17e1248afa803f7c0da74c35799ae55a1",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_rank_pointer.gd": {
|
||||
"source_sha256": "2c51510f80fb57068c6c06aa56566936685e679720b0fd853d8f814566e730f2",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_autosave.gd": {
|
||||
"source_sha256": "1d7d267ef171041f77241c4c2f1a1bb55a46253f803d5c496507e934bc8fa815",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_lifecycle.gd": {
|
||||
"source_sha256": "ed68b120f422e1b37b8cf0654b6d6605458fe01c7e5d84decc3ba6f4e9366c47",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"transition",
|
||||
"finish"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_management.gd": {
|
||||
"source_sha256": "7e37dc47583325a564ef48de31596adeeccfb7151ac5fce952efc6873c8ab704",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"restored-transition",
|
||||
"finish"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_rescue.gd": {
|
||||
"source_sha256": "928179383bda38adf9211065b644a37bed3f8128be42b7e7a0fba9a505a40b9e",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_rest.gd": {
|
||||
"source_sha256": "712f2c30ec89da20835e54f2e83b22a358cc6fc05555147ce635ec2592ef75b5",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_stair_transport_details.gd": {
|
||||
"source_sha256": "3abd3655eecbefe1b7cd49e1b16c42f8161c86f20380c298ec6367b42d31555f",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_supply_auto_purchase_ui.gd": {
|
||||
"source_sha256": "ad3788ae4b3f17918be67cf06c4162635da1ecba1ee0a0465d10acc019f3e3ae",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_supply_management.gd": {
|
||||
"source_sha256": "ee96be8b31eb71e84ab813e427a28bcfb76de4a057bd964584a6a497382ea716",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_ui_audio_feedback.gd": {
|
||||
"source_sha256": "62c5c8080b1a05d243977a293a23ab216ef71de38fe46ca6b31c71e0af4555fe",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": true
|
||||
},
|
||||
"tests/ui/test_ui_presentation_audio_contract.gd": {
|
||||
"source_sha256": "9769b89b61630ddf2ef13a927f329ddaa30e04da77987e7a868d0490244d6a25",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"before-remount",
|
||||
"final"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_upkeep_closed_ui.gd": {
|
||||
"source_sha256": "915db12e539d98bfcb2cfc3712693ca7fca3ff459aaacba419faff04ac712868",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_upkeep_inspector.gd": {
|
||||
"source_sha256": "99895a24bcddc4c2e01d8960a2fd7eba05be237a64700d78879c68c1a0660f34",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_world_tree_rank.gd": {
|
||||
"source_sha256": "8e108e3ae63d1ee3971c7b236f50a673c407835f094de0d38a736c38261767aa",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_runtime_upkeep.gd": {
|
||||
"source_sha256": "eae48823d58d78c419d29728e33a5559fbe5131b49e33d04ca4e6fa3a721c29b",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/transport/test_runtime_transport_comparison.gd": {
|
||||
"source_sha256": "ba577397fa8db5a6cf92cfd398dd7a5ece49e6b59856f14772b67b51ddc0bde9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/transport/test_transport_comparison.gd": {
|
||||
"source_sha256": "7e80e9ef80500278c56f0d1ada5c911f43e3c0a9bc370045fdbebd33c2f02fd5",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_mimi_purchase_quote.gd": {
|
||||
"source_sha256": "01f7760cf0fed33fda6358bd407fc1441a198dce9f2713e49bfcc097ee8c8ada",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false,
|
||||
"standalone_ownership": {
|
||||
"Main_instantiated": false,
|
||||
"configure_audio_called": false,
|
||||
"UIAudio_owner_registered": false,
|
||||
"actual_parent": "SceneTree.root",
|
||||
"owned_supply_panel": "configure(runtime) then add_child; queue_free + await process_frame + is_instance_valid rejection",
|
||||
"autoload_Runtime_Economy_lifetime": "native strict diagnostics and whole profile capture remain mandatory; leak outcome unmeasured",
|
||||
"normal_human_viewport_or_OS": false
|
||||
},
|
||||
"source_only_ownership_review": true
|
||||
},
|
||||
"tests/transport/test_runtime_transport.gd": {
|
||||
"source_sha256": "ec6f8fa8e8f2a76a6f6214b4ee84861aba1bb13845a342c5126905b01f428a15",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_actor_selection.gd": {
|
||||
"source_sha256": "f37a0f4805adce4b538fccde1404c1a417f20639fddf36947f076d88409ba0a3",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"before-remount",
|
||||
"final"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_pending_service_pricing_report.gd": {
|
||||
"source_sha256": "50095c41fe76bac7bd9346ce97651d40610fa69b48c3b24f7acc5b371578e753",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_p08_normal_placement_ops.gd": {
|
||||
"source_sha256": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
}
|
||||
},
|
||||
"outside_routes": {
|
||||
"tests/supply/test_normal_auto_purchase_chain.gd": {
|
||||
"env": "THE_TREE_SUPPLY_EVIDENCE_DIR",
|
||||
"filename": "normal-play-report.json",
|
||||
"stdout_prefix": "NORMAL_AUTO_PURCHASE_REPORT ",
|
||||
"stdout_projection": "subset",
|
||||
"report_owner_source_sha256": "6916d644620c49a09ab110d98fe07477bb5bb9f96da3826a0be962610cc55256"
|
||||
},
|
||||
"tests/supply/test_normal_supply_chain.gd": {
|
||||
"env": "THE_TREE_SUPPLY_EVIDENCE_DIR",
|
||||
"filename": "normal-play-report.json",
|
||||
"stdout_prefix": "NORMAL_SUPPLY_REPORT ",
|
||||
"stdout_projection": "subset",
|
||||
"report_owner_source_sha256": "eedbb301e68285bbd6f701cf7eec15537f116944115807e0d9133a4c2970bb1d"
|
||||
},
|
||||
"tests/ui/test_first_operating_day.gd": {
|
||||
"env": "THE_TREE_FIRST_OPERATING_EVIDENCE_DIR",
|
||||
"filename": "operating-report.json",
|
||||
"stdout_prefix": "FIRST_OPERATING_DAY_REPORT ",
|
||||
"stdout_projection": "full",
|
||||
"report_owner_source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226"
|
||||
},
|
||||
"tests/ui/test_selection_autosave.gd": {
|
||||
"env": "THE_TREE_FIRST_OPERATING_EVIDENCE_DIR",
|
||||
"filename": "operating-report.json",
|
||||
"stdout_prefix": "FIRST_OPERATING_DAY_REPORT ",
|
||||
"stdout_projection": "full",
|
||||
"inherited_source": "tests/ui/test_first_operating_day.gd",
|
||||
"report_owner_source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226"
|
||||
}
|
||||
},
|
||||
"fixed_generated_report_routes": {
|
||||
"tests/mvp/test_runtime_upkeep.gd": [
|
||||
"artifacts/upkeep-2026-09-29/preclose-snapshot.txt",
|
||||
"artifacts/upkeep-2026-09-29/closed-snapshot.txt"
|
||||
],
|
||||
"tests/transport/test_runtime_transport_comparison.gd": [
|
||||
"artifacts/transport/runtime-comparison.json",
|
||||
"artifacts/transport/runtime-comparison-1-trace.json",
|
||||
"artifacts/transport/runtime-comparison-2-trace.json"
|
||||
],
|
||||
"tests/transport/test_transport_comparison.gd": [
|
||||
"artifacts/transport/path-comparison.json",
|
||||
"artifacts/transport/comparison-demand.json"
|
||||
]
|
||||
},
|
||||
"scope": "observed source/proof/IO contracts; no new gameplay assertions"
|
||||
}
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"scope": "Reuse actual local9test command only; no whole-unit/full-roster acceptance. JSON append-position correction does not alter these checker/test/shared-roster code inputs.",
|
||||
"actual_run": "1cde6bdddd3a4d88818d1c38103aedb8",
|
||||
"actual_role": "implementer",
|
||||
"actual_service": "codex",
|
||||
"actual_model": "gpt-6.1-sol",
|
||||
"raw_provider_stdout_sha256": "97bc112da31cb41f938373fc623481d4e10555f2d328ef2dad7e9a326cbc46c1",
|
||||
"actual_command_event": {
|
||||
"id": "item_16",
|
||||
"type": "command_execution",
|
||||
"command": "/bin/zsh -lc 'python3 docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py'",
|
||||
"aggregated_output": "test_1_invented_replacement (__main__.CheckerTests) ... ok\ntest_2_duplicate_padding (__main__.CheckerTests) ... ok\ntest_3_unknown_extra (__main__.CheckerTests) ... ok\ntest_4_required_results (__main__.CheckerTests) ... ok\ntest_5_source_hash (__main__.CheckerTests) ... ok\ntest_6_missing_or_malformed_rows (__main__.CheckerTests) ... ok\ntest_7_env_mismatch_and_positive_head (__main__.CheckerTests) ... ERROR: CANDIDATE_COMMIT mismatch with real git HEAD 90f4d81f674f669c5ea6e8e537648b693ab5af5e\nERROR: TARGET_HEAD mismatch with real git HEAD 90f4d81f674f669c5ea6e8e537648b693ab5af5e\nERROR: TARGET_HEAD mismatch with real git HEAD 90f4d81f674f669c5ea6e8e537648b693ab5af5e\nok\ntest_8_git_unavailable_env_only (__main__.CheckerTests) ... ok\ntest_positive_roster (__main__.CheckerTests) ... ok\n\n----------------------------------------------------------------------\nRan 9 tests in 0.373s\n\nOK\n",
|
||||
"exit_code": 0,
|
||||
"status": "completed"
|
||||
},
|
||||
"dependency_file_sha256": {
|
||||
"tools/check_p24_operations_evidence.py": "3dc04b66ab07e2193595aff4ad63baf1ada732cee02c8b4d67298b933bd21487",
|
||||
"tools/run_all_tests.py": "1d56dc16ab34f5a8f77f3ed7e833fb6d9fe73aa37cf297a0597e41bfa9c9e4b4",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py": "e528dc2939d3561ac1d890d46caf29632316f4ed4aeb8f5efdaed59d130b9234"
|
||||
},
|
||||
"no_dependency_file_change_events_after_actual_test_pass": true
|
||||
}
|
||||
-100
File diff suppressed because one or more lines are too long
-31
@@ -1,31 +0,0 @@
|
||||
# Verified task-local zsh temporary transport
|
||||
|
||||
No policy/permission/source change. Previous JSON phase2cf378d ended before editing because a large zsh here-document tried /tmp, not existing task runtime. Root reproduced failure then success with the exact same saved sandbox, using TMPPREFIX pointed to existing allocated task tmp.
|
||||
|
||||
For EVERY shell command using a here-document, start it with:
|
||||
|
||||
TMPPREFIX=/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/tmp/p24-zsh; export TMPPREFIX;
|
||||
|
||||
Then run the original command. Or use python -c instead of a here-document. Each shell invocation is independent, so prefix every long-heredoc command. For py_compile also prefix PYTHONPYCACHEPREFIX="$TMPDIR/p24-phase-pyc" as authorized by actual Opus. These paths are already writable under unchanged task sandbox. Do not search user folders, request permissions or stop the implementation solely because a transport preparation failed. Root pre-launch duties are already complete. Actual quality-check failure still must be recorded, never waived. Preserve the earlier failure and continue only this same recorded JSON-order correction.
|
||||
|
||||
{
|
||||
"same_saved_sandbox": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/2cf378d728f64bbca470f5603d3299dc/sandbox.sb",
|
||||
"sandbox_sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07",
|
||||
"no_policy_or_permission_change": true,
|
||||
"runtime_tmp": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/tmp",
|
||||
"source_changes": false,
|
||||
"probe_results": [
|
||||
{
|
||||
"name": "original",
|
||||
"exit_code": 1,
|
||||
"stdout": "",
|
||||
"stderr": "zsh:1: can't create temp file for here document: operation not permitted\n"
|
||||
},
|
||||
{
|
||||
"name": "task-local-zsh-temp",
|
||||
"exit_code": 0,
|
||||
"stdout": "P24_TEMP_TRANSPORT_OK\n",
|
||||
"stderr": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
{
|
||||
"contract_id": "P24-02",
|
||||
"title": "操作と通知の実装および証跡収集プロトコル",
|
||||
"worker": "agy",
|
||||
"base_commit": "1a5abc65163097d4b36a060d68f58c92093eb4e9",
|
||||
"spec_sha256": "738268b406e381ccab415b426d4a547b02e7cb2a481cefce65579a1e346834c7",
|
||||
"formal_acceptance_note": "Candidate source alone does not constitute acceptance completion. Native Godot execution has not been run by this worker. Root owns formal test execution, full regression, OS evidence generation, and final submission.",
|
||||
"implemented_paths": [
|
||||
"scenes/main/main.gd",
|
||||
"scenes/main/world_preview.gd",
|
||||
"scripts/ui/event_log_dialog.gd",
|
||||
"scripts/ui/manual_save_slots_dialog.gd",
|
||||
"scripts/ui/operation_feedback.gd",
|
||||
"scripts/ui/operation_feedback.gd.uid",
|
||||
"scripts/ui/operations_camera_controls.gd",
|
||||
"scripts/ui/operations_camera_controls.gd.uid",
|
||||
"tests/ui/test_operations_notification.gd",
|
||||
"tests/ui/test_operations_notification.gd.uid",
|
||||
"tests/ui/fixtures/operations_os_observer.gd",
|
||||
"tests/ui/fixtures/operations_os_observer.gd.uid",
|
||||
"tools/check_p24_operations_evidence.py"
|
||||
],
|
||||
"conditions_status": {
|
||||
"placement_and_invalid_drop": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_root_execution",
|
||||
"details": "Grid snap, connection line warning, single-commit valid placement, rejection reason Japanese feedback without model/ledger corruption, click-based assignment alternative implemented in candidate code. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"modal_and_pause_resume": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_root_execution",
|
||||
"details": "Modal open/close, focus management, modal_input_blocked suppressing behind-dialog input and assignment drops. Clock pause freezing advancement via real delta early-return; single resume continuing simulation. Pending commands and save identity intact on cancel/close. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"unit_bubbles": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_root_execution",
|
||||
"details": "Unit overhead bubbles for Zzz (sleep/incapacitated/break), anger (strike/fleeing/abandoning/interrupted), heart (authoritative RelationshipState / RouteLock / love-shield). No unapproved loyalty/morale thresholds. Stale symbol removal logic implemented. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"event_log": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_root_execution",
|
||||
"details": "Bounded recent 256 events, readable Japanese presentation, formatted amounts/times/reasons, duplicate event ID elimination. Reusing existing 256-entry stream contract. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"important_warning_cutin": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "partially_implemented_upstream_dependencies_pending",
|
||||
"details": "ImportantWarningCutinDialog connected to real DEFENSE_RAID_CREATED and RELATIONSHIP_SHIELD_CHANGED (shield=0, love-shield vanishing) domain events with stop/resume behavior. Generic INCIDENT_CREATED is not falsely treated as NTR. Duel occurrence triggers and full invasion upstream flow remain unimplemented upstream dependencies, explicitly documented as missing and not claimed complete. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"click_alternatives": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_root_execution",
|
||||
"details": "OperationsCameraControls providing click equivalents for zoom in/out, pan up/down/left/right, reset view, grid toggle, layer toggle, and click-based staff assignment. Does not alter gameplay model. Manual P23 held gestures remain deferred. Native Godot execution unverified, pending Root formal execution."
|
||||
},
|
||||
"japanese_input_and_scale": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "code_implemented_unverified_pending_windows_and_root_execution",
|
||||
"details": "ManualSaveSlotsDialog LineEdit for editable Japanese save label (display_name metadata only), control char validation, default name fallback, cryptographic owned path (manual_ui_<hex32>) preservation, cancel discard semantics. Native Godot OS input handling (not browser). Same-Windows-release platform acceptance remains pending formal execution."
|
||||
},
|
||||
"final_validation_review": {
|
||||
"code_implemented": true,
|
||||
"formally_accepted": false,
|
||||
"status": "pending_root_full_roster_and_opus_review",
|
||||
"details": "Local unit suite (tests/ui/test_operations_notification.gd) with FixtureCleanup and OperationsOSObserver implemented and hashed. check_p24_operations_evidence.py strict verify-only checker implemented. Formal full regression, native OS verification, and independent separate Claude Opus review are owned by Root Runner and pending execution."
|
||||
}
|
||||
},
|
||||
"runner_verification_tasks": {
|
||||
"native_godot_test_suite": "Run tests/ui/test_operations_notification.gd under native Godot runner with isolated profile.",
|
||||
"evidence_checker": "tools/check_p24_operations_evidence.py --verify-only",
|
||||
"root_full_roster": "Root owns formal execution of required test roster on exact final game/source/settings.",
|
||||
"windows_release_acceptance": "Candidate Windows platform execution preserved for formal closure; not transferred from prior evidence.",
|
||||
"independent_opus_review": "Independent separate Claude review with actual runtime evidence (not pending templates alone) before formal submit."
|
||||
}
|
||||
}
|
||||
+1431
File diff suppressed because it is too large
Load Diff
+7
File diff suppressed because one or more lines are too long
+49
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"scope": "Authoritative limited-case factual clarification after separate Opus review. Original primary files kept unchanged, no new gameplay/OS execution",
|
||||
"source": {
|
||||
"S": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"M": "565fd805079d8c446f29e30c57979242561113ea",
|
||||
"Q": "42989fd90f5f83db86f846eb42b5cf2d847461a5",
|
||||
"T": "905d844d523529862259d1b7a210fd1e7964f054"
|
||||
},
|
||||
"actual_review_run": "b4160dbc2bca407598d2fc2e22bff24f",
|
||||
"actual_pause_seconds": 89.116049,
|
||||
"actual_clock_samples": 824,
|
||||
"sample_count_scope": "824 clock/paused-state samples, not 847 (which was sequence span); none of the per-sample rows contains a full-model digest",
|
||||
"model_identity_scope": {
|
||||
"checkpoints": {
|
||||
"paused_before_menu": 2254,
|
||||
"new_slot_dialog": 2565,
|
||||
"cancelled": 2797
|
||||
},
|
||||
"digest": "077b7b8106f2448586e2ca9617e7c5525f7a7f90a71d12928a089cbe7ef1d633",
|
||||
"binary_sha256": "7a166acfe98c39dc4432058b054e66aaa5f28485dc78ae9b406d8fa2b35204f3",
|
||||
"continuous_model_identity_not_proven": true
|
||||
},
|
||||
"focus_scope": {
|
||||
"root_viewport_focus_owner_unchanged": "/root/Main/@MarginContainer@13/@VBoxContainer@14/TopBar/@HBoxContainer@15/@Button@42",
|
||||
"dialog_label_focused_on_open": true,
|
||||
"dialog_label_unfocused_after_cancel": true,
|
||||
"restoration_mechanism_proven": false
|
||||
},
|
||||
"input_scope": {
|
||||
"actual_CUA_clicks": 7,
|
||||
"root_mouse_rows": 7,
|
||||
"embedded_popup_and_dialog_native_mouse_rows": false,
|
||||
"embedded_action_evidence": "Actual tool-time windows + actual production menu3/cancel callbacks, not a native-parent mouse ACK",
|
||||
"CUA_log": "exact semantic transcription after close, not a machine-emitted CUA log; first6 before hashes null; after hashes preserved; CUA screen byte files not in local material",
|
||||
"independent_pixels": "five actual viewport PNGs inspected by Opus, never claimed as CUA images"
|
||||
},
|
||||
"schema_scope": {
|
||||
"original8_denominator_unchanged": true,
|
||||
"whole_verify": "honest incomplete rejection at placement group, no modal coverage loop inside fullverify",
|
||||
"supported_record_primitives": "Root checked nonopaque fields/provenance/monotonic receipt range; later exact pointer probe documented separately",
|
||||
"correction_file": "SUPPLEMENT_ACTUAL_POINTER_PROBE.json"
|
||||
},
|
||||
"private_data_scope": "empty pending queue; fresh-profile manual package absent; no existing-save preservation or nonempty pending case inferred",
|
||||
"normal_exit": "owned syntax21759 and OS21770 exited0, all reader/source/default-player/cleanup guards0; both fresh profiles fully retained then cleaned",
|
||||
"remaining_original_conditions": "all8 unaccepted; whole formal review/full roster/normal integration-final/Windows and all unexecuted cases stay required",
|
||||
"original_formal_units": 14,
|
||||
"new_credit": 0,
|
||||
"at_unix_ns": 1792221809906511000
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
# 現在と次の成果単位(2026-10-17)
|
||||
|
||||
正式完了は14/88成果、30パッケージ。今回の限定ケースによる完了加算は0。
|
||||
|
||||
P24-02はin_progress、Runner提出fe44f550750acbf5c510346e7cacbea2ccbdd184、通常統合候補なし。実main565fd805との準備合成Q42989fd9/T905d844dで通常OS操作を採取した。Qは証拠採取用で、正式統合候補ではない。
|
||||
|
||||
通常メニューから別名保存ダイアログを開き、取消して再開し、通常ウィンドウ終了した。824回の時刻・停止サンプル(89.116049秒)で停止を確認し、3節目のモデルが一致した。独立Claude Opus5.5セッションb4160dbc2bca407598d2fc2e22bff24fはこの限定範囲でpass、critical/high/medium0。全8原条件のレビューではなく、フォーカス復元機構・既存保存・非空コマンド列の保全は証明していない。厳密な限界は同梱のAUTHORITATIVE_NARROW_CASE_CLARIFICATIONS.jsonを正とする。
|
||||
|
||||
P24残件は全8原条件、配置と無効ドロップ、確認・復元、IME、倍率、ダイアログ背後の有効対象、吹出し・ログ・代替操作、重要警告の自然発生、最終全回帰・正式独立レビュー・通常統合final・同一Windows等。重要警告はP18/P19/P21等の実装に依存するため、限定プローブだけを積み増さない。原条件を縮小しない。
|
||||
|
||||
次の優先候補はOpus実判断6004541957cd42cf9bae1868df1a31c8が選定したP04-01「同時発生の更新規約」。閉店・停電・破壊・退出・課金・交代・00:00決算の全7領域について、停止中課金0・二重精算0・孤立予約0を満たし、全15条件+EVの版付き証拠、必要検証、独立した全体レビュー、通常統合final、台帳反映まで必要。P06等の基盤で既存証拠が多い点を選定理由とする。
|
||||
|
||||
選定判断に含まれたaccd時点の不足推定を現状態へ読み替える。実Runner再確認ではP04提出は2dde7596、repair29、未稼働、worktree差分0。登録validationはpassでも正式レビュー275d1fd6はD05残4規則未確定などにより不合格。再修正や再試験はまだ起動していない。最新29の実差分と原条件をOpusへ提示し、既修正箇所を再実装せず、残4規則の必須性・具体的選択肢・独立して進める残修正を再判断中。既存2承認を維持し、未回答を承認扱いにしない。
|
||||
|
||||
古いP04文書の13/88や旧mainは作成時点の履歴であり、現時点の正式数・適用版として再利用しない。全条件が揃うまでP04も完了加算しない。
|
||||
|
||||
最新再判断ea12167c:raw結合・getter・HEAD fixture等は既に修正29までに是正済み。重複修正を起動しない。残る規則の具体的選択肢をユーザーへ提示した。回答後に破壊根拠pin/承認記録/現況説明を1回にまとめて通常修正し、必要な最終ゲートへ進む。回答を推定せず、記録のみによる完了加算もしない。
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"created_unix_ns": 1792222099990910000,
|
||||
"files": [
|
||||
{
|
||||
"file": "AUTHORITATIVE_NARROW_CASE_CLARIFICATIONS.json",
|
||||
"source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-os-scenario-20261017-r01/AUTHORITATIVE_NARROW_CASE_CLARIFICATIONS.json",
|
||||
"sha256": "fd83e2edd4ac00bc9f8c568f6283ee47af43f91ef06336d36d775508a96682a5",
|
||||
"bytes": 2833
|
||||
},
|
||||
{
|
||||
"file": "ACTUAL_OPUS_LIMITED_REVIEW.json",
|
||||
"source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-os-scenario-20261017-r01/ACTUAL_ONE_SCENARIO_INDEPENDENT_REVIEW_RESULT_MIRRORED_R02.json",
|
||||
"sha256": "f9feeb5b18d3e67c2b6bd72d130068e856c9145cde89951519169549c2985e16",
|
||||
"bytes": 141526
|
||||
},
|
||||
{
|
||||
"file": "ACTUAL_OPUS_NEXT_UNIT_SELECTION.json",
|
||||
"source": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/6004541957cd42cf9bae1868df1a31c8/result.json",
|
||||
"sha256": "777c7f73e43df8801adfc29b9b0facb0474dba79fc5e8f11883d79e6ab3a8c92",
|
||||
"bytes": 7523
|
||||
},
|
||||
{
|
||||
"file": "FRESH_BINDING_AND_SOURCE_APPLICABILITY.json",
|
||||
"source": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-os-scenario-20261017-r01/FRESH_BINDING_AND_SOURCE_APPLICABILITY.json",
|
||||
"sha256": "f01469d2d8a985750ca4103591067b63db7a319c015b493ad6635640247a3102",
|
||||
"bytes": 307105
|
||||
}
|
||||
],
|
||||
"raw_capture_preserved_at": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/audit-support/p24-os-normal-r01/capture",
|
||||
"formal_credit": 0,
|
||||
"original_packages": 30,
|
||||
"original_units": 88,
|
||||
"original_complete": 14
|
||||
}
|
||||
+2844
File diff suppressed because it is too large
Load Diff
-21
@@ -1,21 +0,0 @@
|
||||
Owner-approved registered P24-02 repair3/3, exact existing W HEAD666c87bd. Earlier GUI messages were truncated input and are superseded. Apply only these two exact patches to scenes/main/main.gd; preserve all gameplay values/conditions and save semantics. Do not launch Godot, retry LSP, edit project.godot/caches/player data/settings/other sources, remove files, change permissions/billing, commit or push. Only git diff --check and git diff -- scenes/main/main.gd for static checks; Root owns native and OS validation. After editing report exact diff and that native/acceptance remain pending.
|
||||
|
||||
--- a/scenes/main/main.gd
|
||||
+++ b/scenes/main/main.gd
|
||||
@@ -793 +793 @@
|
||||
- load_menu.text = "読込 ▾"
|
||||
+ load_menu.text = "保存・読込 ▾"
|
||||
@@ -799,0 +800 @@
|
||||
+ load_menu.get_popup().add_item("新しい名前で別スロット保存",3)
|
||||
@@ -803 +804,2 @@
|
||||
- elif id == 2: _show_manual_load_slots())
|
||||
+ elif id == 2: _show_manual_load_slots()
|
||||
+ elif id == 3: _ensure_manual_save_slots().show_new_save(manual_save_path))
|
||||
|
||||
--- a/scenes/main/main.gd
|
||||
+++ b/scenes/main/main.gd
|
||||
@@ -3199,2 +3199,2 @@
|
||||
- show_warning_cutin(OperationFeedbackScript.CUTIN_INVASION, "重要警告:愛の盾消失", "愛の盾が消失しました。人物関係を確認してください。")
|
||||
-
|
||||
+ show_warning_cutin(OperationFeedbackScript.CUTIN_INVASION, "重要警告:NTR侵食開始", "愛の盾が破られ、NTR侵食が始まりました。人物関係を確認してください。")
|
||||
+
|
||||
-189
@@ -1,189 +0,0 @@
|
||||
# Repair4 JSON order correction — static phase ready
|
||||
|
||||
Task P24-02; commit `9641ed52def2ff8e5b0222449a4a83a1191e1d37`. Same repair4; no new task, permission change or commit. Root prelaunch proof trusted; no ps, external search, engine, OS, full or final checker executed. Root performs normal submission separately. This is static readiness only, never acceptance.
|
||||
|
||||
Only the P24 operations marker row and suite policy key/object were moved from index 2 to the end of their respective containers. Raw entry bodies retained verbatim; existing main entries and their order retained. Both JSON files parse. Before/after structural comparison passed: all values deep-equal, marker rows remain 180, suite policy key set unchanged (48). Only the specified entry position differs.
|
||||
|
||||
JSON SHA256 before → after:
|
||||
|
||||
- completion_marker_contracts.json: `1653c4beac791ec5aa0a6691275ecf5c798ffd689482747c739d7eb2ea5f87d1` → `1063e578eefe6da1b38c24f4c004669bcac67a21884636fb1b9c7e96e4ecf388`
|
||||
- suite-policy.json: `fa395a4d2a98bec607dfa1a030122efe62e9412fccf8dfba2e2db5579561a7b9` → `adc2fbac2463bfdb047bede0182c66083996b75d2bd542a3b8640672d7ca2400`
|
||||
|
||||
`PYTHONPYCACHEPREFIX="$TMPDIR/p24-phase-pyc" python3 -m py_compile` on tools/check_p24_operations_evidence.py, tools/run_all_tests.py, repair4/test_checker_roster_head.py and repair4/check_repair4_preservation.py: exit 0. Cache prefix applied to that command only; no system settings or permissions changed.
|
||||
|
||||
`check_repair4_preservation.py --write-evidence`: exit 0, SOURCE-READY, runtime NOTRUN, schema checks true, failures empty. Both JSON equals_main_plus_p24_only_additions_in_order=true. main.gd remains 279/279; world_preview.gd remains 179 required/180 reconciled with the one allowed bubble adapter; zero missing, duplicate, unexpected or body issues. `git diff --check`: exit 0.
|
||||
|
||||
9 tests reused without rerun: ROOT_LOCAL_VALIDATION_R02_REUSE_RECEIPT.json records actual run 1cde6bdddd3a4d88818d1c38103aedb8, completed exit 0, 9 tests OK. All three dependency SHA256 values match the unchanged files exactly. Earlier 179 result remains historical and is not relabelled.
|
||||
|
||||
Protected SHA256 guard: recorded before any edit, then recomputed after authorized writes; every file below is byte-identical. This includes all task Root instruction/reference/proof files, both GDScripts, all checker/test Python and shared roster. The identical before/after SHA256 is listed for each:
|
||||
|
||||
- `AGENTS.md`: `8d8dc40211390275f858f322743309a0663c4f2d859780a8b8a08cea1450e8b3`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/NEXT_CLOSURE.md`: `9301fa028052174ae9fa5acf006b50fd6c3f21fcbc6e04fc1a398efc7d9be1cb`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/OWNER_REPAIR4_CODE_ONLY_HANDOFF.md`: `940996894b2ea28cf46b992bd5c2719d4ef952452d0585396eae6664a63e6f53`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/OWNER_REPAIR4_GUI_INSTRUCTION.md`: `003724ef4a597298016a59f6198dec2ca3c94115c88afb7dd6cbd7478e0fe1ae`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/OWNER_REPAIR4_JSON_ORDER_CORRECTION.md`: `1e16de00c419467fdfa87b1bf28c004f579576a97cbb04fa5ac06070697532d5`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/OWNER_REPAIR4_SUPPLEMENT_CHECKER.md`: `1eeb4ac0d14347700a9d6e599ce61e36b3324f5fcc4385266aaf16a1c8ab80bb`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/VERIFIED_PRELAUNCH.json`: `c68f35352233d9adb91b1db203cc0e9d47db3f91ec103b9d37a9eeec578f9ba2`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json`: `1653c4beac791ec5aa0a6691275ecf5c798ffd689482747c739d7eb2ea5f87d1`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/scenes/main/main.gd.source.txt`: `f71f8c15493d6b51002ee4afb41cc349efe77e860944c1f79a5b24f928ecbd24`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/scenes/main/world_preview.gd.source.txt`: `8c2daa9e95d56e6e40bb2071b206693069cb7e4731b4d660d59d41c34cb43dfa`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/tools/regression/suite-policy.json`: `fa395a4d2a98bec607dfa1a030122efe62e9412fccf8dfba2e2db5579561a7b9`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_LOCAL_VALIDATION_R02_REUSE_RECEIPT.json`: `ded162f334d6d7a7422ee76d03e26d1544658a06242bc2e2f3f5c6913890d524`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_ZSH_TEMP_TRANSPORT_FIX.md`: `96f0620efdee9b073fcad279de243111a4d5266335d29a93acb19a5dc1b453b3`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/collector_protocol.json`: `bfe94a37304c54ac615bcbd6f938e79933730298fb1c00c6e7ce1922fda3aec2`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/owner-gui-direction-r04.txt`: `2936e33085ce4eae5f556401a55c781b8ac18208ef48f76cacda5faa97e26585`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/check_repair4_preservation.py`: `909c8c283aca5ef6ad14485bea405e248280a1a63cb6f2fd3458b32a8632cee3`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py`: `e528dc2939d3561ac1d890d46caf29632316f4ed4aeb8f5efdaed59d130b9234`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/P24_ALL8_CURRENT_ACCEPTANCE_AND_NEXT_WORK.json`: `5a7c01fc2d6d37046413fc1f81e89005da11616bd0b97c94e6ea1fe0b7668298`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/P24_EXISTING_LIMITED_EVIDENCE_LOCATION_AND_SHA_AUDIT.json`: `ada4a9d2cf612e7cb0b0528f4b4c09b61fb45d47411ed3e78726138d4d233c48`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/REFERENCE_MANIFEST.json`: `08ae7860410859e504bf74a9484d1003f3f8d5f0e6e057a6268a0742af590301`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json`: `6900df6014431ff160c0d18b0dfa65ef0a3fa78eaa08922eaa96de18d5b9fd8c`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/scenes/main/main.gd.source.txt`: `92677e4ac57ed8d418a4a716bf0874cbbaea79cff893e5163c82ad1f75e7140a`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/scenes/main/world_preview.gd.source.txt`: `4bc49a19a38b9c3b4d6bfc243ddf46f1f25469a8273adb5e812911ef9424a1f2`
|
||||
- `docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/tools/regression/suite-policy.json`: `7eb085d7e7a383785b4faedb503d0f6002bcad431e3188785aef901ce123769f`
|
||||
- `scenes/main/main.gd`: `f71f8c15493d6b51002ee4afb41cc349efe77e860944c1f79a5b24f928ecbd24`
|
||||
- `scenes/main/world_preview.gd`: `8c2daa9e95d56e6e40bb2071b206693069cb7e4731b4d660d59d41c34cb43dfa`
|
||||
- `tools/check_p24_operations_evidence.py`: `3dc04b66ab07e2193595aff4ad63baf1ada732cee02c8b4d67298b933bd21487`
|
||||
- `tools/run_all_tests.py`: `1d56dc16ab34f5a8f77f3ed7e833fb6d9fe73aa37cf297a0597e41bfa9c9e4b4`
|
||||
|
||||
Pending: whole8, Root S/M/T/Q composition, native, current full, whole-unit independent review and Windows. No acceptance index created or edited. Earlier failed preparation and quality-check output is retained below as historical evidence; the authorized corrective checks above supersede only the static readiness result.
|
||||
|
||||
---
|
||||
|
||||
## Historical prior phase status (retained verbatim)
|
||||
|
||||
# Repair4 code-only phase — blocked, no submit
|
||||
|
||||
Task P24-02, actual HEAD `9641ed52def2ff8e5b0222449a4a83a1191e1d37`.
|
||||
The trusted Root bridge's VERIFIED_PRELAUNCH.json was read first. Its lease,
|
||||
original-GUI copies, no-competing-job check and quota record are the launch
|
||||
authority. No bridge duties were repeated. No acceptance is claimed.
|
||||
|
||||
## Code changes
|
||||
|
||||
The evidence checker delegates its required roster to the actual
|
||||
`tools/run_all_tests.py:roster(root)` through importlib, without executing main.
|
||||
It compares exact suite sets and rejects malformed/missing/unknown/duplicate
|
||||
rows, missing paths, nonzero or non-integer failures (including bool), missing
|
||||
or non-True passed, and missing/malformed/mismatched source hashes. Optional
|
||||
counts cannot replace rows and must agree exactly when present.
|
||||
HEAD comes from git in the repository root; both environment variables are
|
||||
cross-checks only. Git failure or either mismatch returns an empty value.
|
||||
The other condition, OS/PID, artifact, profile and pending-template guards
|
||||
were left unchanged. Isolated stdlib tests cover S3's eight negative groups
|
||||
and positive roster/HEAD controls; all temporary Git writes are confined to
|
||||
the disposable test repository.
|
||||
|
||||
The preservation script now emits the requested report on the authorized
|
||||
no-argument invocation, including failures. Its METRIC_IDS regex previously
|
||||
stopped at the type annotation's closing bracket in `Array[StringName]`;
|
||||
it now reads the assigned array. The real pinned source contains affection.
|
||||
No preservation rule or protected file was changed to make a check pass.
|
||||
|
||||
## Actual local command results
|
||||
|
||||
1. Exact authorized `python3 -m py_compile` for the four specified Python
|
||||
files: **exit 1**. Python 3.9 attempted to create its configured cache
|
||||
directory outside the workspace and raised:
|
||||
`PermissionError: [Errno 1] Operation not permitted: '/Users/korizatou114/Library/Caches/com.apple.python/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations'`.
|
||||
This was not rerun with an environment override or relabelled as passed.
|
||||
2. Exact authorized importlib import command: **exit 0**.
|
||||
3. Exact authorized `test_checker_roster_head.py`: **exit 0**, 9 tests OK.
|
||||
Expected mismatch diagnostics appeared for CANDIDATE_COMMIT/TARGET_HEAD.
|
||||
4. Exact authorized `check_repair4_preservation.py`: initially **exit 1**
|
||||
with two JSON preservation failures and the regex false negative.
|
||||
After fixing the regex, rerun **exit 1**, SOURCE-NOT-READY, runtime NOTRUN,
|
||||
schema checks true. Remaining failure output:
|
||||
|
||||
- `docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json: reconciled JSON != main snapshot + P24-only additions (value/order)`
|
||||
- `tools/regression/suite-policy.json: reconciled JSON != main snapshot + P24-only additions (value/order)`
|
||||
|
||||
Both GDScript checks have zero missing, duplicate, unexpected or lost-body
|
||||
items. JSON entry presence/duplicate checks also pass. The protected JSON
|
||||
files insert the P24 operations row/policy at position 2; the strict
|
||||
three-way expectation appends P24-only additions after main's entries.
|
||||
The contracts have 180 rows, first difference at index 2. Minimal concrete
|
||||
Root correction if retaining this strict order contract: relocate only
|
||||
`tests/ui/test_operations_notification.gd` to the end of `rows` and to the
|
||||
end of `suite_policies`, preserving its values and every main entry/order.
|
||||
These protected edits require a subsequent authorized Root phase. They
|
||||
were not performed here; the strict check and failure report are preserved.
|
||||
5. Exact authorized `shasum -a 256` on the four protected files: **exit 0**;
|
||||
all four match the pre-launch proof:
|
||||
|
||||
| File | SHA256 |
|
||||
| --- | --- |
|
||||
| scenes/main/main.gd | f71f8c15493d6b51002ee4afb41cc349efe77e860944c1f79a5b24f928ecbd24 |
|
||||
| scenes/main/world_preview.gd | 8c2daa9e95d56e6e40bb2071b206693069cb7e4731b4d660d59d41c34cb43dfa |
|
||||
| tools/regression/suite-policy.json | fa395a4d2a98bec607dfa1a030122efe62e9412fccf8dfba2e2db5579561a7b9 |
|
||||
| docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json | 1653c4beac791ec5aa0a6691275ecf5c798ffd689482747c739d7eb2ea5f87d1 |
|
||||
|
||||
Git status already contained four protected GUI modifications, Root
|
||||
instructions/reference/proof files and the unfinished repair4 script before
|
||||
this phase. Those were preserved. This phase's writes are confined to the
|
||||
five authorized paths: checker, preservation script, its result, stdlib test,
|
||||
and this status. The dirty preexisting worktree is not claimed to have only
|
||||
these five paths relative to HEAD. No commit, branch, push or submission was
|
||||
performed. Failed steps 1 and 4 prohibit normal submit; task stays repair_ready.
|
||||
|
||||
## All eight conditions remain unmet
|
||||
|
||||
| Frozen condition | Status | Remaining dependencies |
|
||||
| --- | --- | --- |
|
||||
| placement_and_invalid_drop | NOTRUN | Genuine composition; Root Godot/local tests and actual valid/invalid placement, model/ledger/selection preservation and click evidence. |
|
||||
| modal_and_pause_resume | NOTRUN | Composed runtime; actual modal focus/input isolation, pending command/save identity, pause freeze and exactly-once resume evidence. |
|
||||
| unit_bubbles | NOTRUN | Static schema now passes, but composed runtime must prove actual state/render binding, switching and removal. |
|
||||
| event_log | NOTRUN | Actual composed production event sequence, bounded log, Japanese values/time/reasons and pause/load deduplication evidence. |
|
||||
| important_warning_cutin | NOTRUN | Actual production invasion/duel/defense triggers and upstream/catalog/assets applicability; dismiss/stop/resume runtime evidence. Injected fixtures cannot establish production triggers. |
|
||||
| click_alternatives | NOTRUN | Composed navigation/assignment runtime evidence; accepted scales/bounds applicability. P23 held-gesture manual checks remain deferred, not waived. |
|
||||
| japanese_input_and_scale | NOTRUN | Actual OS Japanese composition/confirmation/cancel, persisted save label and invalid feedback, representative scales/focus/clipping; macOS development evidence and separate same-candidate Windows acceptance. |
|
||||
| final_validation_review | NOTRUN | All prior conditions; Root composition, static/import and affected Godot tests, exact-final full roster, real-index verify-only, independent Claude runtime review, current-main integration and final validation. |
|
||||
|
||||
SOURCE-READY describes only the narrow checker code/isolated test work, not
|
||||
these eight condition groups or the failed preservation gate.
|
||||
|
||||
## Unresolved Root S/M/T/Q prerequisite (S5)
|
||||
|
||||
The old-base submitted S differs from combined current-main T/Q outside the
|
||||
four reconciled files. A real externally bound submitted SHA (S), main context
|
||||
SHA (M), tested tree (T), tested commit (Q), complete blob bindings and clean
|
||||
genuine composed checkout are still required before heavy final evidence.
|
||||
The current P24 checker has no such Git-provenance contract. HEAD checking
|
||||
does not establish composition. No environment or receipt relabelling is a
|
||||
substitute.
|
||||
|
||||
Root must reuse/adapt the accepted P23 composition functions from current-main
|
||||
`tools/check_p23_life_observation_evidence.py`, absent entirely on this worker
|
||||
base. Explicit missing helper/API dependencies are `strict_json`,
|
||||
`marker_join`, `structural_equal`, `verify_marker_join`, `git_bytes`,
|
||||
`blob_oid`, `git_blob_stream`, `verify_composition`, `tested_checkout`,
|
||||
`root_context`, `input_map`, and `input_provenance`, plus the verified-view
|
||||
registry `_VERIFIED_VIEWS` and externally bound role/blob context. P23's
|
||||
marker join is P23-specific and must receive a reviewed P24 adaptation, not
|
||||
be imported unchanged as proof. Root must use current-main
|
||||
`tools/run_all_tests.py:source_refs` and `roster` on that genuine composed
|
||||
checkout for the complete source/settings/QA map and required suite set.
|
||||
The worker's shared roster delegation is implemented; composition is NOTRUN.
|
||||
No missing helper was stubbed or imported into this old-base worker.
|
||||
|
||||
The static report also names these concrete composition resources:
|
||||
`scenes/main/world_preview.gd`, `scripts/ui/event_log_dialog.gd`,
|
||||
`scripts/ui/manual_save_slots_dialog.gd`, and `scripts/ui/room_presentation.gd`
|
||||
(changed-on-main). Root must resolve their complete current-main context;
|
||||
this phase did not copy or edit them.
|
||||
|
||||
## Historical evidence and GUI stop (S6)
|
||||
|
||||
The GUI phase ended on the actual Antigravity individual quota, Error ID
|
||||
`b866fa14-cff8-4fc1-ac4f-fba529d47498-136`; queued followup failed at the same
|
||||
quota (ending 143). No replacement GUI worker or engine was launched.
|
||||
|
||||
The prior 179 passes, legacy 60 evidence, event-log evidence and every earlier
|
||||
pass are stale/inapplicable as acceptance or full regression for this changed
|
||||
P24 source. P23 full179 remains valid only for its original accepted
|
||||
d2581af/M5041b88/treea700519 source and closed P23-03. Original evidence and
|
||||
closure bytes remain unchanged. No old result was transferred to this source.
|
||||
No Godot, native/OS collector, full roster, run_all_tests main, full checker
|
||||
against an index, acceptance fixture/index, or independent review was run.
|
||||
All mandatory runtime, OS, review, integration and Windows gates remain
|
||||
NOTRUN/pending as listed above. Nothing here counts as acceptance.
|
||||
-1621
File diff suppressed because it is too large
Load Diff
-488
@@ -1,488 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""P24-02 repair4 static overlap/preservation check (SOURCE-READY evidence only).
|
||||
|
||||
This is NOT runtime, import, native, OS or acceptance proof. It only proves,
|
||||
statically and mechanically, that the four reconciled files contain:
|
||||
|
||||
* every scope-qualified GDScript symbol (class_name / class / func / signal /
|
||||
const / enum / class-body var) of the pinned current-main snapshot, and
|
||||
* every symbol the P24 worker diff (base 1a5abc6 -> 9641ed5) added,
|
||||
|
||||
each exactly once in its own scope (so a legitimate ``_init`` or ``_draw`` in a
|
||||
different inner class is never reported as a duplicate), that main's body lines
|
||||
and P24's added body lines survived, that both JSON files equal the exact
|
||||
3-way expectation "main snapshot + P24-only additions" (values and order), and
|
||||
that UI actor bubbles only read fields that exist in the current relation /
|
||||
Staff / Guest schema on main.
|
||||
|
||||
Usage (static, no Godot):
|
||||
python3 docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/check_repair4_preservation.py \
|
||||
[--write-evidence]
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
from collections import Counter
|
||||
from pathlib import Path
|
||||
|
||||
HERE = Path(__file__).resolve().parent
|
||||
ROOT = HERE.parents[5]
|
||||
REF_DIR = HERE.parent / "root-current-main-reference-20261017"
|
||||
MANIFEST = REF_DIR / "REFERENCE_MANIFEST.json"
|
||||
EVIDENCE = HERE / "SOURCE_READY_PRESERVATION_RESULT.json"
|
||||
|
||||
BASE = "1a5abc65163097d4b36a060d68f58c92093eb4e9"
|
||||
P24 = "9641ed52def2ff8e5b0222449a4a83a1191e1d37"
|
||||
MAIN = "51e8657bfbe24856186cc6530358c5459cf909b6"
|
||||
|
||||
# Explicit, reviewed repair4 deviations. Anything not listed here fails.
|
||||
REPAIR4_ADDED_SYMBOLS = {
|
||||
"scenes/main/world_preview.gd": {
|
||||
"world_preview.gd::func::_draw_actor_bubble":
|
||||
"P24 bubble binding re-expressed on main's P23 observation pipeline: "
|
||||
"bubbles are drawn per fitted actor row on the LifeOverlay canvas "
|
||||
"without mutating the observation report.",
|
||||
},
|
||||
}
|
||||
# P24-added body lines intentionally re-expressed (not dropped) in repair4.
|
||||
REPAIR4_REEXPRESSED_P24_LINES = {
|
||||
("scenes/main/world_preview.gd", "world_preview.gd::func::_draw_actors"):
|
||||
"main replaced immediate _draw_pixel_actor with observed rows; P24's inline "
|
||||
"bubble calls are re-bound through _draw_actor_bubble(row, canvas) in "
|
||||
"main's _draw_actors(canvas).",
|
||||
("scenes/main/world_preview.gd", "world_preview.gd::func::_draw_unit_bubble"):
|
||||
"same bubble geometry/glyphs, but draw calls go to the LifeOverlay canvas "
|
||||
"(canvas.draw_*) and follow the fitted row origin/scale.",
|
||||
}
|
||||
|
||||
failures: list[str] = []
|
||||
|
||||
|
||||
def fail(msg: str) -> None:
|
||||
failures.append(msg)
|
||||
|
||||
|
||||
def git_show(rev: str, path: str) -> str | None:
|
||||
try:
|
||||
return subprocess.run(["git", "show", f"{rev}:{path}"], cwd=ROOT, check=True,
|
||||
capture_output=True).stdout.decode("utf-8")
|
||||
except subprocess.CalledProcessError:
|
||||
return None
|
||||
|
||||
|
||||
def git_blob(data: bytes) -> str:
|
||||
return hashlib.sha1(b"blob %d\0" % len(data) + data).hexdigest()
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- GDScript
|
||||
DECL = [
|
||||
("class_name", re.compile(r"^class_name\s+(\w+)")),
|
||||
("class", re.compile(r"^class\s+(\w+)\b")),
|
||||
("func", re.compile(r"^(?:static\s+)?func\s+(\w+)\s*\(")),
|
||||
("signal", re.compile(r"^signal\s+(\w+)")),
|
||||
("const", re.compile(r"^const\s+(\w+)")),
|
||||
("enum", re.compile(r"^enum\s+(\w+)")),
|
||||
("var", re.compile(r"^(?:@\w+(?:\([^)]*\))?\s+)*(?:static\s+)?var\s+(\w+)")),
|
||||
]
|
||||
|
||||
|
||||
def indent_of(line: str) -> int:
|
||||
n = 0
|
||||
for ch in line:
|
||||
if ch == "\t":
|
||||
n += 1
|
||||
elif ch == " ":
|
||||
n += 0.25
|
||||
else:
|
||||
break
|
||||
return int(n)
|
||||
|
||||
|
||||
def gd_symbols(text: str, fname: str) -> list[dict]:
|
||||
"""Scope-qualified declarations with their body line ranges."""
|
||||
lines = text.split("\n")
|
||||
stack: list[tuple[int, str]] = [] # (class indent, qualified scope)
|
||||
out: list[dict] = []
|
||||
in_triple = False
|
||||
for i, raw in enumerate(lines):
|
||||
stripped = raw.strip()
|
||||
if raw.count('"""') % 2 == 1:
|
||||
in_triple = not in_triple
|
||||
continue
|
||||
if in_triple or not stripped or stripped.startswith("#"):
|
||||
continue
|
||||
ind = indent_of(raw)
|
||||
while stack and ind <= stack[-1][0]:
|
||||
stack.pop()
|
||||
scope = stack[-1][1] if stack else fname
|
||||
body_indent = stack[-1][0] + 1 if stack else 0
|
||||
if ind != body_indent:
|
||||
continue
|
||||
for kind, rx in DECL:
|
||||
m = rx.match(stripped)
|
||||
if m:
|
||||
out.append({"id": f"{scope}::{kind}::{m[1]}", "line": i, "indent": ind, "kind": kind})
|
||||
if kind == "class":
|
||||
stack.append((ind, f"{scope}.{m[1]}"))
|
||||
break
|
||||
# body = following lines until next line at indent <= decl indent (non-blank)
|
||||
for sym in out:
|
||||
start, ind = sym["line"], sym["indent"]
|
||||
end = start + 1
|
||||
while end < len(lines):
|
||||
s = lines[end]
|
||||
if s.strip() and not s.strip().startswith("#") and indent_of(s) <= ind:
|
||||
break
|
||||
end += 1
|
||||
sym["body"] = [ln.strip() for ln in lines[start:end] if ln.strip()]
|
||||
return out
|
||||
|
||||
|
||||
def by_id(syms: list[dict]) -> dict[str, dict]:
|
||||
return {s["id"]: s for s in syms}
|
||||
|
||||
|
||||
def check_gd(path: str, main_text: str, report: dict) -> None:
|
||||
fname = Path(path).name
|
||||
base_t, p24_t = git_show(BASE, path), git_show(P24, path)
|
||||
recon_t = (ROOT / path).read_text(encoding="utf-8")
|
||||
if base_t is None or p24_t is None:
|
||||
fail(f"{path}: pinned base/P24 revision unavailable")
|
||||
return
|
||||
base, p24, main, recon = (gd_symbols(t, fname) for t in (base_t, p24_t, main_text, recon_t))
|
||||
B, P, M, R = map(by_id, (base, p24, main, recon))
|
||||
counts = Counter(s["id"] for s in recon)
|
||||
dups = sorted(k for k, c in counts.items() if c > 1)
|
||||
p24_added = sorted(set(P) - set(B))
|
||||
required = sorted(set(M) | set(p24_added))
|
||||
missing = sorted(k for k in required if k not in R)
|
||||
allowed_new = REPAIR4_ADDED_SYMBOLS.get(path, {})
|
||||
unexpected = sorted(k for k in R if k not in required and k not in allowed_new)
|
||||
main_removed = sorted(set(B) - set(M))
|
||||
lost_p24_on_removed = [k for k in main_removed if k in P and P[k]["body"] != B[k]["body"]]
|
||||
for k in dups:
|
||||
fail(f"{path}: duplicate definition {k}")
|
||||
for k in missing:
|
||||
fail(f"{path}: missing symbol {k}")
|
||||
for k in unexpected:
|
||||
fail(f"{path}: unexpected symbol {k}")
|
||||
for k in lost_p24_on_removed:
|
||||
fail(f"{path}: P24 modified {k} but main removed it")
|
||||
# Body preservation (set semantics on stripped lines).
|
||||
body_issues = []
|
||||
for k, m in M.items():
|
||||
if k not in R:
|
||||
continue
|
||||
b_lines = set(B[k]["body"]) if k in B else set()
|
||||
p_lines = set(P[k]["body"]) if k in P else b_lines
|
||||
p24_removed = b_lines - p_lines
|
||||
need = set(m["body"]) - p24_removed
|
||||
lost = sorted(need - set(R[k]["body"]))
|
||||
if lost:
|
||||
body_issues.append({"symbol": k, "side": "main", "lost_lines": lost})
|
||||
fail(f"{path}: main body lines lost in {k}: {len(lost)}")
|
||||
reexpressed = []
|
||||
for k, p in P.items():
|
||||
b_lines = set(B[k]["body"]) if k in B else set()
|
||||
added = set(p["body"]) - b_lines
|
||||
if not added or k not in R:
|
||||
continue
|
||||
lost = sorted(added - set(R[k]["body"]))
|
||||
if not lost:
|
||||
continue
|
||||
reason = REPAIR4_REEXPRESSED_P24_LINES.get((path, k))
|
||||
if reason:
|
||||
reexpressed.append({"symbol": k, "lines": lost, "reason": reason})
|
||||
else:
|
||||
body_issues.append({"symbol": k, "side": "p24", "lost_lines": lost})
|
||||
fail(f"{path}: P24 added body lines lost in {k}: {len(lost)}")
|
||||
report[path] = {
|
||||
"kind": "gdscript",
|
||||
"main_symbols": sorted(M),
|
||||
"p24_side_symbols": sorted(P),
|
||||
"p24_added_symbols": p24_added,
|
||||
"main_removed_vs_base_untouched_by_p24": [k for k in main_removed if k not in lost_p24_on_removed],
|
||||
"required_count": len(required),
|
||||
"reconciled_symbol_count": len(recon),
|
||||
"missing": missing,
|
||||
"duplicates": dups,
|
||||
"unexpected": unexpected,
|
||||
"repair4_added_with_reason": {k: v for k, v in allowed_new.items() if k in R},
|
||||
"body_issues": body_issues,
|
||||
"p24_lines_reexpressed_with_reason": reexpressed,
|
||||
"conflict_markers": bool(re.search(r"^(<<<<<<<|>>>>>>>|\|\|\|\|\|\|\|) ", recon_t, re.M)),
|
||||
}
|
||||
if report[path]["conflict_markers"]:
|
||||
fail(f"{path}: conflict markers present")
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- JSON
|
||||
def load_json_strict(text: str, label: str):
|
||||
def hook(pairs):
|
||||
keys = [k for k, _ in pairs]
|
||||
d = Counter(keys)
|
||||
for k, c in d.items():
|
||||
if c > 1:
|
||||
fail(f"{label}: duplicate JSON key {k!r}")
|
||||
return dict(pairs)
|
||||
return json.loads(text, object_pairs_hook=hook)
|
||||
|
||||
|
||||
def row_key(row):
|
||||
return row.get("test") if isinstance(row, dict) else None
|
||||
|
||||
|
||||
def expect3(base, main, p24, path="$"):
|
||||
"""3-way expectation: main value, plus P24-only changes where main kept base."""
|
||||
if isinstance(main, dict) and isinstance(p24, dict) and isinstance(base, dict):
|
||||
out = {}
|
||||
for k in main:
|
||||
if k in p24 and k in base:
|
||||
out[k] = expect3(base[k], main[k], p24[k], f"{path}.{k}")
|
||||
elif k in p24 and k not in base and p24[k] != main[k]:
|
||||
fail(f"{path}.{k}: added by both main and P24 with different values")
|
||||
out[k] = main[k]
|
||||
else:
|
||||
out[k] = main[k]
|
||||
for k in p24:
|
||||
if k not in base and k not in main:
|
||||
out[k] = p24[k]
|
||||
elif k in base and k not in main and p24[k] != base[k]:
|
||||
fail(f"{path}.{k}: P24 changed a key main removed")
|
||||
return out
|
||||
if (isinstance(main, list) and isinstance(p24, list) and isinstance(base, list)
|
||||
and all(row_key(r) for r in main + p24 + base)):
|
||||
bk = {row_key(r): r for r in base}
|
||||
pk = {row_key(r): r for r in p24}
|
||||
out = []
|
||||
for r in main:
|
||||
k = row_key(r)
|
||||
out.append(expect3(bk[k], r, pk[k], f"{path}[{k}]") if k in bk and k in pk else r)
|
||||
main_keys = {row_key(r) for r in main}
|
||||
for r in p24:
|
||||
k = row_key(r)
|
||||
if k not in bk and k not in main_keys:
|
||||
out.append(r)
|
||||
return out
|
||||
if p24 != base and main == base:
|
||||
return p24
|
||||
if p24 != base and main != base and p24 != main:
|
||||
fail(f"{path}: both main and P24 changed scalar value")
|
||||
return main
|
||||
|
||||
|
||||
def ordered_equal(a, b):
|
||||
if isinstance(a, dict) and isinstance(b, dict):
|
||||
return list(a) == list(b) and all(ordered_equal(a[k], b[k]) for k in a)
|
||||
if isinstance(a, list) and isinstance(b, list):
|
||||
return len(a) == len(b) and all(ordered_equal(x, y) for x, y in zip(a, b))
|
||||
return type(a) is type(b) and a == b
|
||||
|
||||
|
||||
def json_entry_keys(obj) -> list[str]:
|
||||
keys = []
|
||||
for k, v in obj.items():
|
||||
keys.append(k)
|
||||
if isinstance(v, dict):
|
||||
keys += [f"{k}/{s}" for s in v]
|
||||
elif isinstance(v, list) and v and all(row_key(r) for r in v):
|
||||
keys += [f"{k}[{row_key(r)}]" for r in v]
|
||||
return keys
|
||||
|
||||
|
||||
def check_json(path: str, main_text: str, report: dict) -> None:
|
||||
base_t, p24_t = git_show(BASE, path), git_show(P24, path)
|
||||
recon_t = (ROOT / path).read_text(encoding="utf-8")
|
||||
if base_t is None or p24_t is None:
|
||||
fail(f"{path}: pinned base/P24 revision unavailable")
|
||||
return
|
||||
base, main, p24 = (load_json_strict(t, f"{path}@{r}") for t, r in
|
||||
((base_t, "base"), (main_text, "main"), (p24_t, "p24")))
|
||||
recon = load_json_strict(recon_t, f"{path}@reconciled")
|
||||
expected = expect3(base, main, p24)
|
||||
# Repair5 authority permits exactly this P24 source pin rebind; no schema,
|
||||
# cleanup policy, non-P24 row or ordered structure is changed.
|
||||
test = "tests/ui/test_operations_notification.gd"
|
||||
digest = hashlib.sha256((ROOT / test).read_bytes()).hexdigest()
|
||||
if path.endswith("completion_marker_contracts.json"):
|
||||
rows = [r for r in expected["rows"] if r["test"] == test]
|
||||
if len(rows) != 1:
|
||||
fail("exactly one P24 marker row required")
|
||||
else:
|
||||
rows[0]["source_sha256_at_schema_audit"] = digest
|
||||
elif path.endswith("suite-policy.json"):
|
||||
expected["suite_policies"][test]["source_sha256"] = digest
|
||||
ok = ordered_equal(recon, expected)
|
||||
if not ok:
|
||||
fail(f"{path}: reconciled JSON != main snapshot + P24-only additions (value/order)")
|
||||
mk, pk, bk, rk = map(json_entry_keys, (main, p24, base, recon))
|
||||
rc = Counter(rk)
|
||||
p24_added = [k for k in pk if k not in bk]
|
||||
missing = [k for k in list(dict.fromkeys(mk + p24_added)) if k not in rc]
|
||||
dups = sorted(k for k, c in rc.items() if c > 1)
|
||||
for k in missing:
|
||||
fail(f"{path}: missing JSON entry {k}")
|
||||
for k in dups:
|
||||
fail(f"{path}: duplicate JSON entry {k}")
|
||||
report[path] = {
|
||||
"kind": "json",
|
||||
"main_entry_keys": mk,
|
||||
"p24_side_entry_keys": pk,
|
||||
"p24_added_entry_keys": p24_added,
|
||||
"missing": missing,
|
||||
"duplicates": dups,
|
||||
"equals_main_plus_p24_only_additions_in_order": ok,
|
||||
"main_entries_value_identical": all(
|
||||
ordered_equal(recon.get(k), main[k]) for k in main if not isinstance(main[k], (dict, list))),
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- schema
|
||||
def enum_members(text: str, enum: str) -> set[str]:
|
||||
m = re.search(r"enum\s+" + enum + r"\s*\{(.*?)\}", text, re.S)
|
||||
return set(re.findall(r"\b([A-Z_][A-Z0-9_]*)\b", m[1])) if m else set()
|
||||
|
||||
|
||||
def top_vars(text: str) -> set[str]:
|
||||
return set(re.findall(r"^var\s+(\w+)", text, re.M))
|
||||
|
||||
|
||||
def check_bubble_schema(report: dict) -> None:
|
||||
fb = (ROOT / "scripts/ui/operation_feedback.gd").read_text(encoding="utf-8")
|
||||
wp = (ROOT / "scenes/main/world_preview.gd").read_text(encoding="utf-8")
|
||||
srcs = {
|
||||
"relationship_state": "scripts/relationship/relationship_state.gd",
|
||||
"staff_runtime": "scripts/staff/staff_runtime.gd",
|
||||
"guest_runtime": "scripts/guest/guest_runtime.gd",
|
||||
"relationship_service": "scripts/relationship/relationship_service.gd",
|
||||
"staff_service": "scripts/staff/staff_service.gd",
|
||||
"guest_service": "scripts/guest/guest_service.gd",
|
||||
}
|
||||
main_src = {k: git_show(MAIN, p) for k, p in srcs.items()}
|
||||
if any(v is None for v in main_src.values()):
|
||||
fail("schema: main revision source unavailable")
|
||||
return
|
||||
rel_vars = top_vars(main_src["relationship_state"])
|
||||
metric_ids = set(re.findall(r'&"(\w+)"', re.search(r"const METRIC_IDS[^=]*=\s*\[(.*?)\]", main_src["relationship_state"], re.S)[1]))
|
||||
checks = []
|
||||
|
||||
def need(label, cond):
|
||||
checks.append({"check": label, "ok": bool(cond)})
|
||||
if not cond:
|
||||
fail(f"schema: {label}")
|
||||
|
||||
staff_used = set(re.findall(r"StaffRuntime\.State\.(\w+)", fb))
|
||||
guest_used = set(re.findall(r"GuestRuntime\.State\.(\w+)", fb))
|
||||
lock_used = set(re.findall(r"RelationshipState\.RouteLock\.(\w+)", fb))
|
||||
rel_fields = set(re.findall(r"relationship\.(\w+)", fb)) - {"get"}
|
||||
rel_fields |= set(re.findall(r'relationship\.get\(&"(\w+)"', fb))
|
||||
need(f"StaffRuntime.State members {sorted(staff_used)} exist on main",
|
||||
staff_used and staff_used <= enum_members(main_src["staff_runtime"], "State"))
|
||||
need(f"GuestRuntime.State members {sorted(guest_used)} exist on main",
|
||||
guest_used and guest_used <= enum_members(main_src["guest_runtime"], "State"))
|
||||
need(f"RelationshipState.RouteLock members {sorted(lock_used)} exist on main",
|
||||
lock_used and lock_used <= enum_members(main_src["relationship_state"], "RouteLock"))
|
||||
need(f"RelationshipState fields {sorted(rel_fields)} exist on main", rel_fields and rel_fields <= rel_vars)
|
||||
need("relationship metric 'affection' is a main METRIC_ID", "affection" in metric_ids)
|
||||
need("GuestRuntime.patience_remaining exists on main", "patience_remaining" in top_vars(main_src["guest_runtime"]))
|
||||
wp_rel = set(re.findall(r"rel_val\.(\w+)", wp))
|
||||
need(f"world_preview relation lookup fields {sorted(wp_rel)} exist on main", wp_rel and wp_rel <= rel_vars)
|
||||
for svc, meth in (("relationship_service", "get_relationships"), ("staff_service", "get_staff"),
|
||||
("guest_service", "get_guest")):
|
||||
need(f"main {svc}.{meth}() exists", re.search(r"^func\s+" + meth + r"\s*\(", main_src[svc], re.M))
|
||||
for k in ("relationship_state", "staff_runtime", "guest_runtime"):
|
||||
wt = (ROOT / srcs[k]).read_text(encoding="utf-8")
|
||||
need(f"worker {srcs[k]} identical to main (schema not diverged)", wt == main_src[k])
|
||||
report["bubble_relation_schema"] = {"checks": checks, "relationship_state_vars_main": sorted(rel_vars)}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- deps
|
||||
def root_composition_dependencies(report: dict) -> None:
|
||||
ls_main = subprocess.run(["git", "ls-tree", "-r", "--name-only", MAIN], cwd=ROOT,
|
||||
capture_output=True, text=True).stdout.split("\n")
|
||||
main_files = set(filter(None, ls_main))
|
||||
main_classes: dict[str, str] = {}
|
||||
grep = subprocess.run(["git", "grep", "-h", "-E", r"^class_name\s+\w+", MAIN, "--", "*.gd"], cwd=ROOT,
|
||||
capture_output=True, text=True).stdout
|
||||
for m in re.finditer(r"class_name\s+(\w+)", grep):
|
||||
main_classes[m[1]] = "main"
|
||||
worker_classes = set()
|
||||
for p in ROOT.rglob("*.gd"):
|
||||
if ".godot" in p.parts:
|
||||
continue
|
||||
for m in re.finditer(r"^class_name\s+(\w+)", p.read_text(encoding="utf-8", errors="ignore"), re.M):
|
||||
worker_classes.add(m[1])
|
||||
deps = []
|
||||
for path in ("scenes/main/main.gd", "scenes/main/world_preview.gd"):
|
||||
text = (ROOT / path).read_text(encoding="utf-8")
|
||||
for res in sorted(set(re.findall(r'(?:pre)?load\("res://([^"]+)"\)', text))):
|
||||
in_worker = (ROOT / res).exists()
|
||||
in_main = res in main_files
|
||||
changed = None
|
||||
if in_worker and in_main:
|
||||
mt = git_show(MAIN, res)
|
||||
changed = mt is not None and mt != (ROOT / res).read_text(encoding="utf-8", errors="ignore")
|
||||
if (in_main and not in_worker) or changed:
|
||||
deps.append({"file": path, "resource": res, "kind": "main-only" if not in_worker else "changed-on-main"})
|
||||
words = set(re.findall(r"\b([A-Z]\w+)\b", text))
|
||||
for cls in sorted(words & (set(main_classes) - worker_classes)):
|
||||
deps.append({"file": path, "class_name": cls, "kind": "main-only class_name"})
|
||||
report["root_composition_dependencies"] = {
|
||||
"note": "Reconciled files keep main snapshot text; these symbols/resources resolve only on the "
|
||||
"composed current-main tree. Not stubbed, not copied (outside allowed_paths).",
|
||||
"items": deps,
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- main
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument("--write-evidence", action="store_true")
|
||||
args = ap.parse_args()
|
||||
manifest = json.loads(MANIFEST.read_text(encoding="utf-8"))
|
||||
if (manifest["submitted"], manifest["main_reference"], manifest["registered_base_unchanged"]) != (P24, MAIN, BASE):
|
||||
fail("manifest revisions differ from pinned P24/main/base")
|
||||
report: dict = {"pins": []}
|
||||
files: dict = {}
|
||||
for entry in manifest["all4_current_main_files"]:
|
||||
data = (ROOT / entry["reference_path"]).read_bytes()
|
||||
sha, blob = hashlib.sha256(data).hexdigest(), git_blob(data)
|
||||
ok = sha == entry["sha256"] and blob == entry["main_blob"]
|
||||
live = git_show(MAIN, entry["path"])
|
||||
same_as_main_commit = live is not None and live.encode("utf-8") == data
|
||||
report["pins"].append({"path": entry["path"], "sha256": sha, "blob": blob, "pin_ok": ok,
|
||||
"snapshot_equals_main_commit_blob": same_as_main_commit})
|
||||
if not ok:
|
||||
fail(f"pin mismatch: {entry['path']}")
|
||||
files[entry["path"]] = data.decode("utf-8")
|
||||
results: dict = {}
|
||||
for path, text in files.items():
|
||||
(check_gd if path.endswith(".gd") else check_json)(path, text, results)
|
||||
report["files"] = results
|
||||
check_bubble_schema(report)
|
||||
root_composition_dependencies(report)
|
||||
report["status"] = "SOURCE-READY" if not failures else "SOURCE-NOT-READY"
|
||||
report["runtime_status"] = "NOTRUN"
|
||||
report["scope"] = ("Static source preservation only. Not Godot/import/native/OS/full-roster proof and "
|
||||
"not acceptance. Root owns current-main composition and all execution.")
|
||||
report["failures"] = failures
|
||||
if args.write_evidence:
|
||||
EVIDENCE.write_text(json.dumps(report, ensure_ascii=False, indent=2) + "\n", encoding="utf-8")
|
||||
summary = {p: {k: (len(v) if isinstance(v, list) else v) for k, v in r.items()
|
||||
if k in ("missing", "duplicates", "unexpected", "required_count", "reconciled_symbol_count",
|
||||
"equals_main_plus_p24_only_additions_in_order", "body_issues")}
|
||||
for p, r in results.items()}
|
||||
print(json.dumps({"status": report["status"], "runtime_status": "NOTRUN", "files": summary,
|
||||
"schema_checks_ok": all(c["ok"] for c in report.get("bubble_relation_schema", {}).get("checks", [])),
|
||||
"root_composition_dependencies": len(report["root_composition_dependencies"]["items"]),
|
||||
"failures": failures}, ensure_ascii=False, indent=2))
|
||||
return 0 if not failures else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
-116
@@ -1,116 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Isolated checker tests; no acceptance index, engine, or full test execution."""
|
||||
import copy
|
||||
import importlib.util
|
||||
import os
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
import unittest
|
||||
from unittest.mock import patch
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[6]
|
||||
spec = importlib.util.spec_from_file_location('checker', ROOT / 'tools/check_p24_operations_evidence.py')
|
||||
checker = importlib.util.module_from_spec(spec)
|
||||
spec.loader.exec_module(checker)
|
||||
|
||||
|
||||
class CheckerTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tmp = tempfile.TemporaryDirectory()
|
||||
self.addCleanup(self.tmp.cleanup)
|
||||
self.root = Path(self.tmp.name)
|
||||
(self.root / 'tools').mkdir()
|
||||
shutil.copyfile(ROOT / 'tools/run_all_tests.py', self.root / 'tools/run_all_tests.py')
|
||||
(self.root / 'tests').mkdir()
|
||||
for name in ('run_tests.gd', 'test_alpha.gd', 'test_beta.gd'):
|
||||
(self.root / 'tests' / name).write_text('# isolated fixture ' + name)
|
||||
self.rows = [dict(test=p, failures=0, passed=True,
|
||||
source_sha256=checker.compute_sha256(self.root / p))
|
||||
for p in checker.get_required_suite_roster(self.root)]
|
||||
|
||||
def validate(self, rows, **counts):
|
||||
data = dict(test_suite='tests/ui/test_operations_notification.gd', failures=0, checks=1,
|
||||
full_roster=dict(results=rows, **counts))
|
||||
# Repair5 deliberately resolves suite bytes from the verified T view,
|
||||
# never from cwd. This TEST-ONLY adapter supplies that isolated view.
|
||||
with patch.object(checker, 'VERIFIED_ROOT', self.root):
|
||||
return checker._validate_condition_artifact_content(
|
||||
'final_validation_review', data, 'json', self.root, {}, {})
|
||||
|
||||
def test_positive_roster(self):
|
||||
for counts in ({}, dict(total_suites=3, suites_count=3, failures=0)):
|
||||
self.assertEqual(self.validate(self.rows, **counts), (True, ''))
|
||||
|
||||
def test_1_invented_replacement(self):
|
||||
rows = copy.deepcopy(self.rows)
|
||||
rows[0]['test'] = 'tests/invented.gd'
|
||||
self.assertFalse(self.validate(rows)[0])
|
||||
self.assertFalse(self.validate(rows + [rows[0]])[0])
|
||||
|
||||
def test_2_duplicate_padding(self):
|
||||
self.assertFalse(self.validate(self.rows[1:] + [self.rows[1]])[0])
|
||||
|
||||
def test_3_unknown_extra(self):
|
||||
self.assertFalse(self.validate(self.rows + [dict(test='invented')])[0])
|
||||
|
||||
def test_4_required_results(self):
|
||||
for field, value in [('failures', 1), ('failures', False), ('failures', '0'),
|
||||
('passed', False), ('passed', 1), ('passed', None), ('failures', None)]:
|
||||
with self.subTest(field=field, value=value):
|
||||
rows = copy.deepcopy(self.rows)
|
||||
if value is None:
|
||||
del rows[0][field]
|
||||
else:
|
||||
rows[0][field] = value
|
||||
self.assertFalse(self.validate(rows)[0])
|
||||
|
||||
def test_5_source_hash(self):
|
||||
for value in (None, 'bad', '0' * 64, 42):
|
||||
with self.subTest(value=value):
|
||||
rows = copy.deepcopy(self.rows)
|
||||
if value is None:
|
||||
del rows[0]['source_sha256']
|
||||
else:
|
||||
rows[0]['source_sha256'] = value
|
||||
self.assertFalse(self.validate(rows)[0])
|
||||
|
||||
def test_6_missing_or_malformed_rows(self):
|
||||
for rows in (None, [], {}, 'missing', [None], [{}]):
|
||||
with self.subTest(rows=rows):
|
||||
self.assertFalse(self.validate(rows, total_suites=3, failures=0)[0])
|
||||
for counts in (dict(total_suites=4), dict(suites_count=True), dict(failures=None)):
|
||||
self.assertFalse(self.validate(self.rows, **counts)[0])
|
||||
|
||||
def init_repo(self):
|
||||
subprocess.run(['git', 'init', '-q', str(self.root)], check=True, capture_output=True)
|
||||
# Only the disposable repo is written; no workspace git mutation.
|
||||
subprocess.run(['git', '-c', 'user.name=Checker Test', '-c', 'user.email=checker@example.invalid',
|
||||
'-c', 'commit.gpgsign=false', 'commit', '--allow-empty', '-qm', 'fixture'],
|
||||
cwd=self.root, check=True, capture_output=True)
|
||||
return subprocess.run(['git', 'rev-parse', 'HEAD'], cwd=self.root,
|
||||
check=True, capture_output=True, text=True).stdout.strip()
|
||||
|
||||
def test_7_env_mismatch_and_positive_head(self):
|
||||
head = self.init_repo()
|
||||
with patch.dict(os.environ, {}, clear=True):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), head)
|
||||
for name in ('CANDIDATE_COMMIT', 'TARGET_HEAD'):
|
||||
with patch.dict(os.environ, {name: head}):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), head)
|
||||
with patch.dict(os.environ, {name: '1' * 40}):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), '')
|
||||
with patch.dict(os.environ, dict(CANDIDATE_COMMIT=head, TARGET_HEAD='1' * 40)):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), '')
|
||||
|
||||
def test_8_git_unavailable_env_only(self):
|
||||
with patch.dict(os.environ, {'CANDIDATE_COMMIT': '1' * 40}, clear=True):
|
||||
with patch('subprocess.run', side_effect=FileNotFoundError('git unavailable')):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), '')
|
||||
with patch('subprocess.run', return_value=subprocess.CompletedProcess([], 128, '', 'not a repo')):
|
||||
self.assertEqual(checker.get_actual_git_head(self.root), '')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main(verbosity=2)
|
||||
-98
@@ -1,98 +0,0 @@
|
||||
{
|
||||
"plan_id": "P24-02",
|
||||
"title": "操作と通知",
|
||||
"state": "in_progress; existing Runner submitted, read-only acceptance re-audit started",
|
||||
"original_denominator": {
|
||||
"packages": 30,
|
||||
"units": 88,
|
||||
"completed": 14,
|
||||
"partial_credit": false
|
||||
},
|
||||
"source": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
|
||||
"current_main": "32c8d1ce4314f821fe2eb3713fe5c6309b98e4c3",
|
||||
"existing_project": "the-tree-p24-02-operations",
|
||||
"existing_worker_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"runner_repairs_used": 3,
|
||||
"max_repairs": null,
|
||||
"worker_registered": "agy (existing UI assignment retained; no new worker or model switch performed)",
|
||||
"spec_sha256": "7f4258ef94169c516b5cd1a49a96d0c41f306ca2a05203a8c2a6475b69a1a9ee",
|
||||
"actual_opus_selection": "docs/plans/original-completion-2026-10-02/execution/next-closure-after-p23-20261017/result.json",
|
||||
"all_eight_original_conditions": [
|
||||
{
|
||||
"condition_id": "placement_and_invalid_drop",
|
||||
"all_original_required_text": "Original grid snap and connection warnings; valid placement commits once, invalid placement/assignment explains the actual rejection, leaves model/ledger/selection intact, supports equivalent click-based operation.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "ordinary-controls-observations-r05.json; limited valid reception and overlap rejection, full model/selection preserved.",
|
||||
"missing_or_dependencies": "Invalid assignment/drop, real rejection call paths and equivalent click operations require exact final-source coverage."
|
||||
},
|
||||
{
|
||||
"condition_id": "modal_and_pause_resume",
|
||||
"all_original_required_text": "Modal open/cancel/confirm, input focus, pausing and resuming preserve pending commands and save identity. Behind-dialog input cannot accidentally build or change assignment. Actual pause freezes simulation and ordinary resume continues exactly once.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "ordinary-controls-observations-r05.json and ordinary-menu-os-observations-r02.json; limited modal open/cancel, IME focus, save/load.",
|
||||
"missing_or_dependencies": "All modal cancel/confirm, actual behind-dialog input limits, pending commands, actual pause freeze/resume once require mapped evidence."
|
||||
},
|
||||
{
|
||||
"condition_id": "unit_bubbles",
|
||||
"all_original_required_text": "Unit overhead Zzz, anger, heart correspond to actual existing state. Observe source/model/render bindings and switching/removal without stale symbols; do not invent gameplay thresholds or hidden approved values.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "Existing source bindings were retained by old 9641 candidate; no new whole-condition evidence inferred.",
|
||||
"missing_or_dependencies": "Real Zzz/anger/heart states, switching and removal without stale symbol; recheck current Runtime and draw source after integration conflicts resolved."
|
||||
},
|
||||
{
|
||||
"condition_id": "event_log",
|
||||
"all_original_required_text": "Actual production events reach bounded recent log in sequence, readable Japanese with correct amounts/time/reasons, no duplicate events across pause/load. Reuse accepted256-entry log only with matching source applicability.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "Existing local log34 and accepted P24-03 bounded256 evidence are candidates for exact applicability reuse.",
|
||||
"missing_or_dependencies": "Current production event sequence, readable time/amount/reason, pause/load no duplicate; current UI and Runtime source must match."
|
||||
},
|
||||
{
|
||||
"condition_id": "important_warning_cutin",
|
||||
"all_original_required_text": "Original important-warning UI for invasion start, duel, defense start is connected to actual existing signals/states with clear text, dismiss/stop/resume behavior; fixture-only signal injection is local testing, not proof ordinary production trigger. Missing upstream/catalog/assets remain explicit dependencies, do not claim complete.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "Prior limited shield-positive-to-zero warning text review; fixtures are local-only. P18 backend265ce30 integrated5f6bc11 is accepted backend only.",
|
||||
"missing_or_dependencies": "Actual ordinary NTR/duel/defense triggers still depend on whole P18-01/02, P19-01, P21-01 and required content; no synthetic signal pass or invented values. Read upstream-audit-r01 before choosing implementation."
|
||||
},
|
||||
{
|
||||
"condition_id": "click_alternatives",
|
||||
"all_original_required_text": "Provide/verify click equivalents for necessary pointer/drag/modifier navigation and assignment operations. Reuse existing step/zoom/bounds mechanisms and scales; presentation controls must not change gameplay model. Manual P23 held gestures remain deferred, not waived or relabeled.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "Actual normal menu save-label entrance and limited placement controls.",
|
||||
"missing_or_dependencies": "Map every required navigation/assignment equivalent. Preserve deferred P23 held gestures as unmet, not waived."
|
||||
},
|
||||
{
|
||||
"condition_id": "japanese_input_and_scale",
|
||||
"all_original_required_text": "Actual OS Japanese composition/confirmation/cancel, persisted display of valid Japanese text and clear invalid-input feedback, representative window/display scales with clipping/focus/modal inspection. Use existing save display_name metadata for an editable optional Japanese save label if a suitable text field is absent; retain existing default name, cryptographic owned path, old-save preservation and cancel semantics. Do not add new gameplay numbers or rename save paths to user text. Explicitly classify macOS current development verification and still-required same-Windows-release platform acceptance; do not transfer prior Windows evidence.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "ordinary-menu-os-observations-r02.json and preservation-r03: actual IME cancel/confirm, Japanese display_name, old4file content preservation, distinct PID snapshot equality for one construction scenario.",
|
||||
"missing_or_dependencies": "Invalid labels, every required scale/focus/clip/modal scenario, full applicable content and same-Windows candidate real-device conditions remain. Reuse only if exact relevant UI/input/source/settings/environment match."
|
||||
},
|
||||
{
|
||||
"condition_id": "final_validation_review",
|
||||
"all_original_required_text": "Static/import, local/affected tests first; batch related fixes then run required full roster on exact final game/source/settings. Exact version/source hashes/config/inputs/artifacts and condition status. Independent separate Claude review with actual runtime evidence (not pending templates alone), current-main integration and final validation. All required conditions/evidence must hold to close P24-02; no partial credit, no counts as acceptance.",
|
||||
"whole_condition_accepted": false,
|
||||
"existing_limited_evidence_candidate": "Submitted local-r06 3suites167checks, parse and limited independent delta review only; no whole8 acceptance.",
|
||||
"missing_or_dependencies": "Resolve actual four current-main merge conflicts retaining both accepted P23/source guards and existing P24 implementation; then static/local/impact, missing actual OS/upstream scenarios, exact final full once, registered validate, separate whole8 Opus review, normal prepare-integration/integration/final and ledger. Reuse matching current full only when all selected source/settings/input/engine pins truly match."
|
||||
}
|
||||
],
|
||||
"current_main_preflight": {
|
||||
"exit_code": 1,
|
||||
"conflict_paths": [
|
||||
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"scenes/main/main.gd",
|
||||
"scenes/main/world_preview.gd",
|
||||
"tools/regression/suite-policy.json"
|
||||
],
|
||||
"not_an_integration_candidate": true,
|
||||
"not_tested_or_accepted": true
|
||||
},
|
||||
"registered_build_directory_currently_exists": false,
|
||||
"raw_proof_location_audit": "docs/plans/original-completion-2026-10-02/execution/next-closure-after-p23-20261017/P24_EXISTING_LIMITED_EVIDENCE_LOCATION_AND_SHA_AUDIT.json",
|
||||
"next_bounded_action": "Have the existing P24 commander inspect these actual eight-condition/source/conflict/proof facts and direct one legal same-task continuation. Root does not start a duplicate worker or force submitted to repair_pending. Missing local old proof must use exact archive restore if needed; no repeated full run just to replace available proof.",
|
||||
"P04_four_unapproved_rules": "Remain pending independent of P24; approved hold/reservation/18:00 rules unchanged.",
|
||||
"new_engine_runs": 0,
|
||||
"new_worker_runs": 0,
|
||||
"new_full_regression_runs": 0,
|
||||
"unit_accepted": false,
|
||||
"audited_at_jst": "2026-10-17T00:26:02.956343+09:00"
|
||||
}
|
||||
-491
@@ -1,491 +0,0 @@
|
||||
{
|
||||
"source": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
|
||||
"audited_at_jst": "2026-10-17T00:26:02.956343+09:00",
|
||||
"scope": "Read-only legacy proof availability/pins only; does not establish current main/source applicability or full P24 acceptance. No engine/OS/test started.",
|
||||
"total_references": 60,
|
||||
"local_matching": 60,
|
||||
"local_mismatching": 0,
|
||||
"local_unavailable": 0,
|
||||
"rows": [
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/submitted-local-r06.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-local-native-preflight-r06/local-ended.json",
|
||||
"expected_sha256": "a49a9229bc3bde09aebff72daafbfe99d159da9bf1dfc702b036640946654b64",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "a49a9229bc3bde09aebff72daafbfe99d159da9bf1dfc702b036640946654b64",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/submitted-local-r06.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-local-native-preflight-r06/runner-input.json",
|
||||
"expected_sha256": "577442ab27679b03c4c25a8b0d362aed871599d7c37675aaafd41fa80579dd70",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "577442ab27679b03c4c25a8b0d362aed871599d7c37675aaafd41fa80579dd70",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-r02/started.json",
|
||||
"expected_sha256": "d40a0252aa547b049d30cdc9a15774131438b2535f808ead128f0f86f7bf5954",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "d40a0252aa547b049d30cdc9a15774131438b2535f808ead128f0f86f7bf5954",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-r02/process-started.json",
|
||||
"expected_sha256": "5ba807e0ee65944815542648108322586f4730b074abebb0b117dd61071140b1",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "5ba807e0ee65944815542648108322586f4730b074abebb0b117dd61071140b1",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-r02/ended.json",
|
||||
"expected_sha256": "0b188dcb42995ee09205f233116665cbf54f59a7d1e93f9d2aafc07779ae19a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "0b188dcb42995ee09205f233116665cbf54f59a7d1e93f9d2aafc07779ae19a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-r02/events.jsonl",
|
||||
"expected_sha256": "efa3f0eca8bf0001edc89041d968a0fdf9f474ddd5a6803db2a138e4dfd53cc5",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "efa3f0eca8bf0001edc89041d968a0fdf9f474ddd5a6803db2a138e4dfd53cc5",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-r02/passive_os.gd",
|
||||
"expected_sha256": "66e60f81f836fe648f9011660d0255f5c4b780bfdacc820829c90bb655022880",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "66e60f81f836fe648f9011660d0255f5c4b780bfdacc820829c90bb655022880",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-consumer-r02/started.json",
|
||||
"expected_sha256": "64ad63ae5b4339cd639f2d22fa076caa7d8d3f9501337fadadc1d4dcfcbbe2d0",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "64ad63ae5b4339cd639f2d22fa076caa7d8d3f9501337fadadc1d4dcfcbbe2d0",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-consumer-r02/process-started.json",
|
||||
"expected_sha256": "f116952d77720858065576f41df7116f384801e6c27acb6cf339a329589627b0",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "f116952d77720858065576f41df7116f384801e6c27acb6cf339a329589627b0",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-consumer-r02/ended.json",
|
||||
"expected_sha256": "22d0ffd1ea18c06a46dc7aa977613385d3ae5f4a81dab9ed4650f9c10d044d68",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "22d0ffd1ea18c06a46dc7aa977613385d3ae5f4a81dab9ed4650f9c10d044d68",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-ime-normal-consumer-r02/events.jsonl",
|
||||
"expected_sha256": "369eb5e182fcf5b21693380198df187654b508e288c08f6ecb0d3aa6af4ec0ca",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "369eb5e182fcf5b21693380198df187654b508e288c08f6ecb0d3aa6af4ec0ca",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-393c3655f3e84483b9c24fd5d2955dd2-p24-02-os/saves/manual_ui_5e9f8ca3662a2ddf42984ba1403675a7/manifest.json",
|
||||
"expected_sha256": "e8537a6f6cba53683cca36794adc08f7c5958b78ced74fa06e499a3f8c123e4a",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "e8537a6f6cba53683cca36794adc08f7c5958b78ced74fa06e499a3f8c123e4a",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-menu-os-observations-r02.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-393c3655f3e84483b9c24fd5d2955dd2-p24-02-os/saves/manual_ui_5e9f8ca3662a2ddf42984ba1403675a7/world.bin",
|
||||
"expected_sha256": "0424074b51f327ffb3ce3dc8e92ccb2d9d04d657db6e1461cdb83541f1cc0bee",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "0424074b51f327ffb3ce3dc8e92ccb2d9d04d657db6e1461cdb83541f1cc0bee",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/started.json",
|
||||
"expected_sha256": "bc05d5ef0ec62a3fc46e5b957f3724ef95c339078bc02eee04b3c42632bbe1ab",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "bc05d5ef0ec62a3fc46e5b957f3724ef95c339078bc02eee04b3c42632bbe1ab",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/process-started.json",
|
||||
"expected_sha256": "d6d981e157cd7e68a08e9e0133f81faac4113a48d03e74deb04d380cb03e41b1",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "d6d981e157cd7e68a08e9e0133f81faac4113a48d03e74deb04d380cb03e41b1",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/ended.json",
|
||||
"expected_sha256": "bf42d9666d4fe27051403f7d00a96f17abaa1e9b551db9d13c49ee8f7130d5c6",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "bf42d9666d4fe27051403f7d00a96f17abaa1e9b551db9d13c49ee8f7130d5c6",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/events.jsonl",
|
||||
"expected_sha256": "104fb16b406dd123b77356ef98bd5a8f0bd595d660be0870c881cfbf30ce7302",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "104fb16b406dd123b77356ef98bd5a8f0bd595d660be0870c881cfbf30ce7302",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/passive_os.gd",
|
||||
"expected_sha256": "6dceadb5abdf48fda403571f84b6a682a05e7f9ccd64391f2f51176cb5dd842b",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "6dceadb5abdf48fda403571f84b6a682a05e7f9ccd64391f2f51176cb5dd842b",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/preexisting-slot-before.json",
|
||||
"expected_sha256": "aed601473efa522c41e5ca8890c11f1eeb2b06e786fb76cba1e96263934efe82",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "aed601473efa522c41e5ca8890c11f1eeb2b06e786fb76cba1e96263934efe82",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-r03/preexisting-slot-after.json",
|
||||
"expected_sha256": "efb7170f0579bed92a42ead7c03b70dfc37df1e55dde05a96ae67666c6e38063",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "efb7170f0579bed92a42ead7c03b70dfc37df1e55dde05a96ae67666c6e38063",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/started.json",
|
||||
"expected_sha256": "135b779ce605d491bc6110235e9827c4091fefe8b86a49222655b3b713adcad7",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "135b779ce605d491bc6110235e9827c4091fefe8b86a49222655b3b713adcad7",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/process-started.json",
|
||||
"expected_sha256": "e33badfd0b68ff97ce8459fed3a6a6d7275d938fbc1705c82cea94e7ded66314",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "e33badfd0b68ff97ce8459fed3a6a6d7275d938fbc1705c82cea94e7ded66314",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/ended.json",
|
||||
"expected_sha256": "353cfa8e5ea703cb777bf0796b8a0f2f7fa55a5a36b69585414d5e7a16fae94c",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "353cfa8e5ea703cb777bf0796b8a0f2f7fa55a5a36b69585414d5e7a16fae94c",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/events.jsonl",
|
||||
"expected_sha256": "2f93c17152ed41dbbbd7b70b79383591a02ef0f9939d03cf340665ed4ee70ef7",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "2f93c17152ed41dbbbd7b70b79383591a02ef0f9939d03cf340665ed4ee70ef7",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/passive_os.gd",
|
||||
"expected_sha256": "6dceadb5abdf48fda403571f84b6a682a05e7f9ccd64391f2f51176cb5dd842b",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "6dceadb5abdf48fda403571f84b6a682a05e7f9ccd64391f2f51176cb5dd842b",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/snapshot-000.bin",
|
||||
"expected_sha256": "b242cc87abd49bb80d74b7904cfa3492ef57b59e9acfe014e12b35387990da3d",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "b242cc87abd49bb80d74b7904cfa3492ef57b59e9acfe014e12b35387990da3d",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-preservation-consumer-r03/loaded-stored-snapshot.bin",
|
||||
"expected_sha256": "b242cc87abd49bb80d74b7904cfa3492ef57b59e9acfe014e12b35387990da3d",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "b242cc87abd49bb80d74b7904cfa3492ef57b59e9acfe014e12b35387990da3d",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41ed37cd3b6c4de8908b4bba8fe20724-p24-02-os/saves/manual_ui/manifest.json",
|
||||
"expected_sha256": "62d801bb42100ade11f3f4957bff85cac7fea573dcefea97faf3806c8a29c669",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "62d801bb42100ade11f3f4957bff85cac7fea573dcefea97faf3806c8a29c669",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41ed37cd3b6c4de8908b4bba8fe20724-p24-02-os/saves/manual_ui/world.bin",
|
||||
"expected_sha256": "da65a181c934bf8fe0a2969db5c074863b03cf2483f2b039e5dd588b809b80b3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "da65a181c934bf8fe0a2969db5c074863b03cf2483f2b039e5dd588b809b80b3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41ed37cd3b6c4de8908b4bba8fe20724-p24-02-os/saves/manual_ui_6789d75c74d103ad3912e8992a815680/manifest.json",
|
||||
"expected_sha256": "cd450b442c37d497735888f6b96076ba482dca72a420aed1cf6568eb3723824b",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "cd450b442c37d497735888f6b96076ba482dca72a420aed1cf6568eb3723824b",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-save-preservation-observations-r03.json",
|
||||
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-41ed37cd3b6c4de8908b4bba8fe20724-p24-02-os/saves/manual_ui_6789d75c74d103ad3912e8992a815680/world.bin",
|
||||
"expected_sha256": "a0eb8af6fbb6abcdaea0375b4298164013229c3ba187a9d4c1e54d37ecb75202",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "a0eb8af6fbb6abcdaea0375b4298164013229c3ba187a9d4c1e54d37ecb75202",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/started.json",
|
||||
"expected_sha256": "64397b2e4b9cf67faf78bd02848492895111ac0b0b32c9d4fd629e481103b094",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "64397b2e4b9cf67faf78bd02848492895111ac0b0b32c9d4fd629e481103b094",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/process-started.json",
|
||||
"expected_sha256": "3b73172fa0124a5ef47f7004d5ae4144b057279b7246e8dd4eb84cc5a1097c17",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "3b73172fa0124a5ef47f7004d5ae4144b057279b7246e8dd4eb84cc5a1097c17",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ended.json",
|
||||
"expected_sha256": "9bbdf3d512b5f5ae4a8f9595da1cac52587a5f05009869ec7e0d7c8099c4ed8a",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "9bbdf3d512b5f5ae4a8f9595da1cac52587a5f05009869ec7e0d7c8099c4ed8a",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/events.jsonl",
|
||||
"expected_sha256": "f456f8013343264573c6cab8c7be99807210cb889a78f0a1db1461989d46a3dc",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "f456f8013343264573c6cab8c7be99807210cb889a78f0a1db1461989d46a3dc",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/passive_os.gd",
|
||||
"expected_sha256": "552f9bb40770f1a88bbfb41586782e4f8ba8dff29776336ab83ba64dbd2f4767",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "552f9bb40770f1a88bbfb41586782e4f8ba8dff29776336ab83ba64dbd2f4767",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-000.bin",
|
||||
"expected_sha256": "dfea6817f87a9c79cc970f65e19991e60741277244106f770341d71185321fd4",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "dfea6817f87a9c79cc970f65e19991e60741277244106f770341d71185321fd4",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-001.bin",
|
||||
"expected_sha256": "dfea6817f87a9c79cc970f65e19991e60741277244106f770341d71185321fd4",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "dfea6817f87a9c79cc970f65e19991e60741277244106f770341d71185321fd4",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-002.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-003.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-004.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-005.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-006.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-007.bin",
|
||||
"expected_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "17399e4292ef33b29079f361bf91d853f0a1b036066e4e23707840d30deac4a3",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-000.json",
|
||||
"expected_sha256": "ec054c36513cf2bc19b4743862b99a6d56ae0cffebe413d731c9ebb6ab53f237",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "ec054c36513cf2bc19b4743862b99a6d56ae0cffebe413d731c9ebb6ab53f237",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-001.json",
|
||||
"expected_sha256": "ec054c36513cf2bc19b4743862b99a6d56ae0cffebe413d731c9ebb6ab53f237",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "ec054c36513cf2bc19b4743862b99a6d56ae0cffebe413d731c9ebb6ab53f237",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-002.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-003.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-004.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-005.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-006.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/ui-snapshot-007.json",
|
||||
"expected_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "07cebb2a71ff0c63608f8a218a03618e9504fd171d8c7059b15bcf901dc5f8ec",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-000.png",
|
||||
"expected_sha256": "4516abb706e829094c19632e6c8005ad68877c7856af4ccfdf346e98b8dabe95",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "4516abb706e829094c19632e6c8005ad68877c7856af4ccfdf346e98b8dabe95",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-001.png",
|
||||
"expected_sha256": "9d61efee38fee61447a3ae10e95e07381f9560254388cc4ce38a79f7a0a21e6d",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "9d61efee38fee61447a3ae10e95e07381f9560254388cc4ce38a79f7a0a21e6d",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-002.png",
|
||||
"expected_sha256": "4f53747098468b37bc23078d70d091a8b1d8c78ae44547476df70d40c153d03e",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "4f53747098468b37bc23078d70d091a8b1d8c78ae44547476df70d40c153d03e",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-003.png",
|
||||
"expected_sha256": "dd60776d2370d79814e874a3944f7bce9152d6d3640bee434c624940f6e000e8",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "dd60776d2370d79814e874a3944f7bce9152d6d3640bee434c624940f6e000e8",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-004.png",
|
||||
"expected_sha256": "e8c2b8027767cd26850f02a2d87d2e594bab4c3d6ebcc5f288ec6140f332146d",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "e8c2b8027767cd26850f02a2d87d2e594bab4c3d6ebcc5f288ec6140f332146d",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-005.png",
|
||||
"expected_sha256": "7795cc8c2ee590c673f7bcd16d83e8fbfb85a8fef0af913282e9aa1df54e54c8",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "7795cc8c2ee590c673f7bcd16d83e8fbfb85a8fef0af913282e9aa1df54e54c8",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-006.png",
|
||||
"expected_sha256": "7795cc8c2ee590c673f7bcd16d83e8fbfb85a8fef0af913282e9aa1df54e54c8",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "7795cc8c2ee590c673f7bcd16d83e8fbfb85a8fef0af913282e9aa1df54e54c8",
|
||||
"sha_match": true
|
||||
},
|
||||
{
|
||||
"record": "docs/plans/original-completion-2026-10-02/execution/p24-02/native-os-input-r01/ordinary-controls-observations-r05.json",
|
||||
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p24-02-native-os-controls-r05/frame-007.png",
|
||||
"expected_sha256": "0854ba41fd73e5b092d71e7d11e99fe3efb7b25ee04c2b0c8750b5d9de6d84b3",
|
||||
"local_exists": true,
|
||||
"actual_sha256": "0854ba41fd73e5b092d71e7d11e99fe3efb7b25ee04c2b0c8750b5d9de6d84b3",
|
||||
"sha_match": true
|
||||
}
|
||||
]
|
||||
}
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"submitted": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
|
||||
"main_reference": "51e8657bfbe24856186cc6530358c5459cf909b6",
|
||||
"reference_only_not_product_edits": true,
|
||||
"registered_base_unchanged": "1a5abc65163097d4b36a060d68f58c92093eb4e9",
|
||||
"all4_current_main_files": [
|
||||
{
|
||||
"path": "scenes/main/main.gd",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/scenes/main/main.gd.source.txt",
|
||||
"sha256": "92677e4ac57ed8d418a4a716bf0874cbbaea79cff893e5163c82ad1f75e7140a",
|
||||
"main_blob": "fff37f082d750bb91c71f2aa54d168c9e2cb8fe7"
|
||||
},
|
||||
{
|
||||
"path": "scenes/main/world_preview.gd",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/scenes/main/world_preview.gd.source.txt",
|
||||
"sha256": "4bc49a19a38b9c3b4d6bfc243ddf46f1f25469a8273adb5e812911ef9424a1f2",
|
||||
"main_blob": "fa32fe0344d20565b6d542da1256a94e8dee1845"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"sha256": "6900df6014431ff160c0d18b0dfa65ef0a3fa78eaa08922eaa96de18d5b9fd8c",
|
||||
"main_blob": "2eecb803f5eb6774ff38cd353de1f02847aeb0f9"
|
||||
},
|
||||
{
|
||||
"path": "tools/regression/suite-policy.json",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-current-main-reference-20261017/main-source/tools/regression/suite-policy.json",
|
||||
"sha256": "7eb085d7e7a383785b4faedb503d0f6002bcad431e3188785aef901ce123769f",
|
||||
"main_blob": "ad194ae425fb8123fa191ed3635f404c098f692d"
|
||||
}
|
||||
],
|
||||
"instruction": "Root reference snapshots in allowed docs only. Do not copy arbitrary other current-main source or merge whole main into original-base worker; this would violate unchanged contract scope. Resolve all4 targeted content conflicts preserving source behavior from both branches, then Root builds exact combined current-main test composition. No product values/acceptance weakened.",
|
||||
"non_importing_reference_extensions": "Godot source snapshots are stored as .gd.source.txt to prevent duplicate class registration in later Godot imports; full source bytes and SHA pins unchanged."
|
||||
}
|
||||
-3777
File diff suppressed because it is too large
Load Diff
-3202
File diff suppressed because it is too large
Load Diff
-2232
File diff suppressed because it is too large
Load Diff
-466
@@ -1,466 +0,0 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"suite_policies": {
|
||||
"tests/s4/test_original_relationship_model.gd": {
|
||||
"source_sha256": "c74b243dbbb54dba9bbc165e29508cca910f0beb63e32d25ebbb8ea606dccce9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/s4/test_original_relationship_runtime.gd": {
|
||||
"source_sha256": "c56bdb99dd43a4e7ceb3ca2861e8db39972c5c4e805126a77e2f7da32ca5bdc9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_departure.gd": {
|
||||
"source_sha256": "3137f36f547514f25ce6ac775fa7a5141d12f83ca4b95da0be45fecfafe9d9b4",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": ["single"],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_anri_recruitment.gd": {
|
||||
"source_sha256": "74cfaf73ed01769c49498e5395fda009b70f2f6667f4f902abf4697f01f87962",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_event_log_ui.gd": {
|
||||
"source_sha256": "9b1d7cb112790bb58969338ab1dc0bbe2a1c26b4307c4bfcd37491cf950c557b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_amelia_donations.gd": {
|
||||
"source_sha256": "1bd622a3d88374f01e3d8885a84a816572ed296928f6ce7e3f8134ab15f60793",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_fine_cleaning_effect.gd": {
|
||||
"source_sha256": "7c7df0bac1c072ed4423140e8afe431952ec2a47f76df7dbc24cab62283cae06",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_normal_auto_purchase_chain.gd": {
|
||||
"source_sha256": "6916d644620c49a09ab110d98fe07477bb5bb9f96da3826a0be962610cc55256",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_normal_supply_chain.gd": {
|
||||
"source_sha256": "eedbb301e68285bbd6f701cf7eec15537f116944115807e0d9133a4c2970bb1d",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_approved_free_unique_arrears_ui.gd": {
|
||||
"source_sha256": "ff684e2f227896c1b5df6026f130d45f4289fc6cae40989be51ddc95b2cf135b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_business_management.gd": {
|
||||
"source_sha256": "2c76697f9a911e9dded63ebbbc2b82ee9e616777c50a637eebd91dc4932f85a5",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_chapel_gameplay.gd": {
|
||||
"source_sha256": "e1996d6bd6caf46bae7becf1de2514e91a6168a686e83563b00803ac71109735",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_cleaning_gameplay.gd": {
|
||||
"source_sha256": "38593cd17829611dd34561ec46a0d746492a6cffebc35a659d49fe69de4234ac",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_dashboard_coalescing.gd": {
|
||||
"source_sha256": "2f4bd8e9d43911067a7e82864454f6779ae92acc48e0b8d4932e5d963e0430ec",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_defense_management.gd": {
|
||||
"source_sha256": "e7debf5746e1ad5976b1afb1d2471c1c2317bcc406ed2716a2368bd4e06e0235",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_dimension_migration_ui.gd": {
|
||||
"source_sha256": "0f0cec88ea8bf5fccdcd5ade02fab70b7dc71135132048cd10db17ad9d964c0d",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_elevator_management.gd": {
|
||||
"source_sha256": "dff2d3f2a1cea84224aee8f70c4ad53d731df173bc7d16d7ec012c0d16c62e11",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_first_operating_day.gd": {
|
||||
"source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_guest_decision_log.gd": {
|
||||
"source_sha256": "8532defab87c075ad3196b44af030cdab785abed365e25d5a56d2d42f115cf71",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_guest_observation.gd": {
|
||||
"source_sha256": "8f5af3d6ef367512b34d0cf35fd8c1d2848d020419dddfa234120206dbe4f6e4",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_layer_skin.gd": {
|
||||
"source_sha256": "aab6f0561e222f88681169a82b47631320495df4c359bcf79d2fb228c60ad83b",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"front-owner",
|
||||
"back-owner"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_main_audio_feedback.gd": {
|
||||
"source_sha256": "9bc9e13ef3498941b6e8566c0b7666c42e294b63e18ec0da2cfa1cda3e4617bd",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_main_dashboard.gd": {
|
||||
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_original_build_pointer.gd": {
|
||||
"source_sha256": "a04a79c5e766659d10c4564d1f11c6554a27cb8af71431295e10bc4967012913",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_original_facility_controls.gd": {
|
||||
"source_sha256": "294b39808d3454f96555b981c8f822f17e1248afa803f7c0da74c35799ae55a1",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_rank_pointer.gd": {
|
||||
"source_sha256": "2c51510f80fb57068c6c06aa56566936685e679720b0fd853d8f814566e730f2",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_autosave.gd": {
|
||||
"source_sha256": "1d7d267ef171041f77241c4c2f1a1bb55a46253f803d5c496507e934bc8fa815",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_selection_lifecycle.gd": {
|
||||
"source_sha256": "ed68b120f422e1b37b8cf0654b6d6605458fe01c7e5d84decc3ba6f4e9366c47",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"transition",
|
||||
"finish"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_management.gd": {
|
||||
"source_sha256": "7e37dc47583325a564ef48de31596adeeccfb7151ac5fce952efc6873c8ab704",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"restored-transition",
|
||||
"finish"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_rescue.gd": {
|
||||
"source_sha256": "928179383bda38adf9211065b644a37bed3f8128be42b7e7a0fba9a505a40b9e",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_staff_rest.gd": {
|
||||
"source_sha256": "712f2c30ec89da20835e54f2e83b22a358cc6fc05555147ce635ec2592ef75b5",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_stair_transport_details.gd": {
|
||||
"source_sha256": "3abd3655eecbefe1b7cd49e1b16c42f8161c86f20380c298ec6367b42d31555f",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_supply_auto_purchase_ui.gd": {
|
||||
"source_sha256": "ad3788ae4b3f17918be67cf06c4162635da1ecba1ee0a0465d10acc019f3e3ae",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_supply_management.gd": {
|
||||
"source_sha256": "ee96be8b31eb71e84ab813e427a28bcfb76de4a057bd964584a6a497382ea716",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": true,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_ui_audio_feedback.gd": {
|
||||
"source_sha256": "62c5c8080b1a05d243977a293a23ab216ef71de38fe46ca6b31c71e0af4555fe",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": true
|
||||
},
|
||||
"tests/ui/test_ui_presentation_audio_contract.gd": {
|
||||
"source_sha256": "9769b89b61630ddf2ef13a927f329ddaa30e04da77987e7a868d0490244d6a25",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"before-remount",
|
||||
"final"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_upkeep_closed_ui.gd": {
|
||||
"source_sha256": "915db12e539d98bfcb2cfc3712693ca7fca3ff459aaacba419faff04ac712868",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_upkeep_inspector.gd": {
|
||||
"source_sha256": "99895a24bcddc4c2e01d8960a2fd7eba05be237a64700d78879c68c1a0660f34",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_world_tree_rank.gd": {
|
||||
"source_sha256": "8e108e3ae63d1ee3971c7b236f50a673c407835f094de0d38a736c38261767aa",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_runtime_upkeep.gd": {
|
||||
"source_sha256": "eae48823d58d78c419d29728e33a5559fbe5131b49e33d04ca4e6fa3a721c29b",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/transport/test_runtime_transport_comparison.gd": {
|
||||
"source_sha256": "ba577397fa8db5a6cf92cfd398dd7a5ece49e6b59856f14772b67b51ddc0bde9",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/transport/test_transport_comparison.gd": {
|
||||
"source_sha256": "7e80e9ef80500278c56f0d1ada5c911f43e3c0a9bc370045fdbebd33c2f02fd5",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/supply/test_mimi_purchase_quote.gd": {
|
||||
"source_sha256": "01f7760cf0fed33fda6358bd407fc1441a198dce9f2713e49bfcc097ee8c8ada",
|
||||
"ordinary_cleanup_prepared": false,
|
||||
"ordinary_control_labels": [],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false,
|
||||
"standalone_ownership": {
|
||||
"Main_instantiated": false,
|
||||
"configure_audio_called": false,
|
||||
"UIAudio_owner_registered": false,
|
||||
"actual_parent": "SceneTree.root",
|
||||
"owned_supply_panel": "configure(runtime) then add_child; queue_free + await process_frame + is_instance_valid rejection",
|
||||
"autoload_Runtime_Economy_lifetime": "native strict diagnostics and whole profile capture remain mandatory; leak outcome unmeasured",
|
||||
"normal_human_viewport_or_OS": false
|
||||
},
|
||||
"source_only_ownership_review": true
|
||||
},
|
||||
"tests/transport/test_runtime_transport.gd": {
|
||||
"source_sha256": "ec6f8fa8e8f2a76a6f6214b4ee84861aba1bb13845a342c5126905b01f428a15",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_actor_selection.gd": {
|
||||
"source_sha256": "f37a0f4805adce4b538fccde1404c1a417f20639fddf36947f076d88409ba0a3",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"before-remount",
|
||||
"final"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/mvp/test_pending_service_pricing_report.gd": {
|
||||
"source_sha256": "50095c41fe76bac7bd9346ce97651d40610fa69b48c3b24f7acc5b371578e753",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
},
|
||||
"tests/ui/test_p08_normal_placement_ops.gd": {
|
||||
"source_sha256": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
|
||||
"ordinary_cleanup_prepared": true,
|
||||
"ordinary_control_labels": [
|
||||
"single"
|
||||
],
|
||||
"old_bounded_teardown": false,
|
||||
"new_audio_QA": false
|
||||
}
|
||||
},
|
||||
"outside_routes": {
|
||||
"tests/supply/test_normal_auto_purchase_chain.gd": {
|
||||
"env": "THE_TREE_SUPPLY_EVIDENCE_DIR",
|
||||
"filename": "normal-play-report.json",
|
||||
"stdout_prefix": "NORMAL_AUTO_PURCHASE_REPORT ",
|
||||
"stdout_projection": "subset",
|
||||
"report_owner_source_sha256": "6916d644620c49a09ab110d98fe07477bb5bb9f96da3826a0be962610cc55256"
|
||||
},
|
||||
"tests/supply/test_normal_supply_chain.gd": {
|
||||
"env": "THE_TREE_SUPPLY_EVIDENCE_DIR",
|
||||
"filename": "normal-play-report.json",
|
||||
"stdout_prefix": "NORMAL_SUPPLY_REPORT ",
|
||||
"stdout_projection": "subset",
|
||||
"report_owner_source_sha256": "eedbb301e68285bbd6f701cf7eec15537f116944115807e0d9133a4c2970bb1d"
|
||||
},
|
||||
"tests/ui/test_first_operating_day.gd": {
|
||||
"env": "THE_TREE_FIRST_OPERATING_EVIDENCE_DIR",
|
||||
"filename": "operating-report.json",
|
||||
"stdout_prefix": "FIRST_OPERATING_DAY_REPORT ",
|
||||
"stdout_projection": "full",
|
||||
"report_owner_source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226"
|
||||
},
|
||||
"tests/ui/test_selection_autosave.gd": {
|
||||
"env": "THE_TREE_FIRST_OPERATING_EVIDENCE_DIR",
|
||||
"filename": "operating-report.json",
|
||||
"stdout_prefix": "FIRST_OPERATING_DAY_REPORT ",
|
||||
"stdout_projection": "full",
|
||||
"inherited_source": "tests/ui/test_first_operating_day.gd",
|
||||
"report_owner_source_sha256": "fcba5cee4ea7b16340871d98634cef56d80ca2197b1b069d47ae6cf287693226"
|
||||
}
|
||||
},
|
||||
"fixed_generated_report_routes": {
|
||||
"tests/mvp/test_runtime_upkeep.gd": [
|
||||
"artifacts/upkeep-2026-09-29/preclose-snapshot.txt",
|
||||
"artifacts/upkeep-2026-09-29/closed-snapshot.txt"
|
||||
],
|
||||
"tests/transport/test_runtime_transport_comparison.gd": [
|
||||
"artifacts/transport/runtime-comparison.json",
|
||||
"artifacts/transport/runtime-comparison-1-trace.json",
|
||||
"artifacts/transport/runtime-comparison-2-trace.json"
|
||||
],
|
||||
"tests/transport/test_transport_comparison.gd": [
|
||||
"artifacts/transport/path-comparison.json",
|
||||
"artifacts/transport/comparison-demand.json"
|
||||
]
|
||||
},
|
||||
"scope": "observed source/proof/IO contracts; no new gameplay assertions"
|
||||
}
|
||||
+405
@@ -0,0 +1,405 @@
|
||||
{
|
||||
"scope": "All actual raw native outputs outside reusable stage. Full bytes retained at original paths, no acceptance inferred",
|
||||
"files": [
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-profile.json",
|
||||
"bytes": 942,
|
||||
"sha256": "36e08965ea543a08555f914f2508d02f6ef008dd2bbae46ed4801285bd700def"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-receipt.json",
|
||||
"bytes": 23639,
|
||||
"sha256": "4809dfe0d77113aa99cbab9eeac97a45529220c157341bbc39596f303f589387"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/tests__ui__test_event_log_ui.gd.log",
|
||||
"bytes": 21179,
|
||||
"sha256": "fc7aa8fd4c41d7e0247f20d555a285694c589ead1c79ec01f9e3865f83ed80f6"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-startup-profile-before.json",
|
||||
"bytes": 202,
|
||||
"sha256": "f6115c56fa208b8cbdf7494814451f20ef9a24b2dca2034ffc924eec9875b18c"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse-startup-profile-before.json",
|
||||
"bytes": 204,
|
||||
"sha256": "4f7e1d1534e9edf1b01b08e13ffa96abf3a97b11fb936426dec34c5f1bf0a418"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-receipt.json",
|
||||
"bytes": 23568,
|
||||
"sha256": "5c9a00451bde77dcfec5ac4043115f2cb8cce840109a4f6e047711db79cad31d"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-profile.json",
|
||||
"bytes": 942,
|
||||
"sha256": "9609c2b230f800ccbeca0144ed6f75e968b5d47490aa7a5de65a0c0a8b4b7fe4"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/tests__ui__test_operations_notification.gd.log",
|
||||
"bytes": 20952,
|
||||
"sha256": "a295fb00be4f4f8ff2b8804416add427ea938d9bdc76718a5060bc142d88c186"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/local-ended.json",
|
||||
"bytes": 200599,
|
||||
"sha256": "a18539bbf4c6b25904064b6f8e613c5c42af85e85045aa48551c8a4fba68a577"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-startup-profile-before.json",
|
||||
"bytes": 202,
|
||||
"sha256": "923072a283c3cdf09cd3e2a4602a67e67711597c1ad989a13f5fcc2a0a01bf13"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse-profile.json",
|
||||
"bytes": 952,
|
||||
"sha256": "288a53cd54ef045c8abb2f471f3d2aaac842b0c4e9a0fae6fc718ed1e2f149bb"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse-receipt.json",
|
||||
"bytes": 12385,
|
||||
"sha256": "052e3b4e248771a61f50b7a7df3466195f1762ac87f9713594d6a827949243e6"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import-startup-profile-before.json",
|
||||
"bytes": 205,
|
||||
"sha256": "75c06f1a563e63a0aa2238c2d32c601c361e19c3492c012e7814939edfa8efb5"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse-paths.json",
|
||||
"bytes": 16183,
|
||||
"sha256": "5db81ede4dd075c2fd8e9d36c396cf98c98cac04f12c3c54352da7cc119428d5"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/tests__ui__test_selection_autosave.gd.log",
|
||||
"bytes": 25380,
|
||||
"sha256": "e888340660e167823996d75bfe60ea45ca398a86360e7c73de244c2644550905"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-startup-profile-before.json",
|
||||
"bytes": 202,
|
||||
"sha256": "1e5c647349cd3a21e51822cae15c090c600aa0420dbe039136627591e3ba4d6a"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/runner-input.json",
|
||||
"bytes": 328447,
|
||||
"sha256": "4157032a1e3187b899e244a2e3559d57073e100ad475071fa71c83222f9bf966"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-profile.json",
|
||||
"bytes": 942,
|
||||
"sha256": "df05426e13daa3817d624cbf682e45b48583a411c6ab4019d71fd8d8940cb4f2"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import-receipt.json",
|
||||
"bytes": 9348,
|
||||
"sha256": "f6e5144ab6c0908def382121f99b12d5d32385694ba63adf09d4f1d59193c526"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-receipt.json",
|
||||
"bytes": 30802,
|
||||
"sha256": "da4e6b8b0a31e1b555af38e6cb5d1a7439a66f177e6fbe669b8692a95cb8ae38"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/bootstrap/profile_guard.gd",
|
||||
"bytes": 2276,
|
||||
"sha256": "597696c705cc8f0e79a35265ca3ef8df55f7fc3c4e0e5a2ce9a4e20e29e29a6f"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/bootstrap/parse_full_dependencies.gd",
|
||||
"bytes": 760,
|
||||
"sha256": "585a0c1da5c050e3bebc5f66793a625419d2db27299f1131cf3a62ffd3236126"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-teardown/control.json",
|
||||
"bytes": 1122,
|
||||
"sha256": "671c18fc7c9c5ec272160a333f642cef331a7a1b37f1d9670f4bc8c8d2e70e38"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-teardown/control.json",
|
||||
"bytes": 1122,
|
||||
"sha256": "41a454f0976c1ac29311d50223ca7739a9a1434911d3ba44d25a69658965a447"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/starters/001.gd",
|
||||
"bytes": 314,
|
||||
"sha256": "45fdbf1a193fe4549efc65c7088a02d7727b0ca30cac692e818e7395e9288c7f"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/starters/000.gd",
|
||||
"bytes": 325,
|
||||
"sha256": "f5c9f39cde19e662860ae4f277e1aa2a8488d2bd2e251ab561003b275ae34f22"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/starters/002.gd",
|
||||
"bytes": 320,
|
||||
"sha256": "b72a77952164118ba1cc12307f790b5d56b928a540e68ac5f4f5cdeb8df48fbe"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/ended.json",
|
||||
"bytes": 1608,
|
||||
"sha256": "169b1149b54b57d78b7865366d556a9c49e7d42638d896b0fddb70a4bd2130f4"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/adapter-owned-cleanup.json",
|
||||
"bytes": 351,
|
||||
"sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/engine-native.log",
|
||||
"bytes": 20802,
|
||||
"sha256": "20cd78f636175d262300a83bded59c152500dc2802dcea11a68f021ccc003c15"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/stdout.log",
|
||||
"bytes": 20952,
|
||||
"sha256": "a295fb00be4f4f8ff2b8804416add427ea938d9bdc76718a5060bc142d88c186"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/started.json",
|
||||
"bytes": 2143,
|
||||
"sha256": "1520d3a2b00e893adab4db013b111b68f3fa9f82648e83d44264e386b452a49a"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/process.json",
|
||||
"bytes": 6169,
|
||||
"sha256": "12106a42311117555a99dcb75c44a02acc1c88d3fc2c2eac17cf67dd5832a2fd"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000/outer-owned-finally.json",
|
||||
"bytes": 964,
|
||||
"sha256": "4854eab064de15120ac47dfe5fb4e120fd25e39bc89a787f767a500b6884bbcc"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/ended.json",
|
||||
"bytes": 1654,
|
||||
"sha256": "e9297c771a3703ec11cbd50612b7cb1f15f2fa8907ec845852cd3f9b2887722b"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/adapter-owned-cleanup.json",
|
||||
"bytes": 351,
|
||||
"sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/engine-native.log",
|
||||
"bytes": 65341,
|
||||
"sha256": "a955c23b717b5b16c20ec164519424c03e7896280531791ae4e742f93fd57921"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/stdout.log",
|
||||
"bytes": 65491,
|
||||
"sha256": "59ed52c1f943d1e889868bb45b2157d076e821706792cd9a8b424a0effb4e891"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/started.json",
|
||||
"bytes": 2212,
|
||||
"sha256": "6842db56a0928971311d5c76df223e4d6b6cef0d377066fb4db763135ceeeb5f"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/process.json",
|
||||
"bytes": 6307,
|
||||
"sha256": "7b2751c4cde02e16a20ab03f9558b1419737f1dd34f4fd43a81a26ac1fd94078"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/outer-owned-finally.json",
|
||||
"bytes": 964,
|
||||
"sha256": "23006db7c2964ebcc2a01ae48fcc0431e6dfa2dd593dc2a80cfe3877da436b33"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse/combined-raw.log",
|
||||
"bytes": 65491,
|
||||
"sha256": "59ed52c1f943d1e889868bb45b2157d076e821706792cd9a8b424a0effb4e891"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/ended.json",
|
||||
"bytes": 1608,
|
||||
"sha256": "48e3154a952ef267b494132f54ca8dfa70bc633d9caa5338f893e314d3a2fe99"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/adapter-owned-cleanup.json",
|
||||
"bytes": 351,
|
||||
"sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/engine-native.log",
|
||||
"bytes": 21029,
|
||||
"sha256": "9ef51e9e738dcf66496ee5888535d5b211d6cfb0fc6c13b524c0e15c686dfa62"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/stdout.log",
|
||||
"bytes": 21179,
|
||||
"sha256": "fc7aa8fd4c41d7e0247f20d555a285694c589ead1c79ec01f9e3865f83ed80f6"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/started.json",
|
||||
"bytes": 2143,
|
||||
"sha256": "d585536d7c469584cd3fbd0245694c823a2a9583928ae0e88ec748120a926b78"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/process.json",
|
||||
"bytes": 6170,
|
||||
"sha256": "385a9e9f812182206167f2534b2479712095777cbb5b70eb2cc7ac49f7f94bb3"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001/outer-owned-finally.json",
|
||||
"bytes": 964,
|
||||
"sha256": "e2731b236633bad912fd73d76d4af20e2fb8a458bfafdc995da818cc8545710b"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-teardown/control.json",
|
||||
"bytes": 1122,
|
||||
"sha256": "c4af4a6157c412f92e53de88dd71af4b0faf97e97c55b5f1213608a8f6035895"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/ended.json",
|
||||
"bytes": 1608,
|
||||
"sha256": "67706a6783496fe111485d23533def7e457c46ef2c265a9f37cd7899609992ba"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/adapter-owned-cleanup.json",
|
||||
"bytes": 351,
|
||||
"sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/engine-native.log",
|
||||
"bytes": 25230,
|
||||
"sha256": "71c4dd1e53fe370756212b76997da66862c0791b93fbbf30509dc92b3198a308"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/stdout.log",
|
||||
"bytes": 25380,
|
||||
"sha256": "e888340660e167823996d75bfe60ea45ca398a86360e7c73de244c2644550905"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/started.json",
|
||||
"bytes": 2143,
|
||||
"sha256": "6b08f24f4592a631c72ede2a58f6fcb82e17e3ab427f727e976dd355007ed3da"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/process.json",
|
||||
"bytes": 6169,
|
||||
"sha256": "c848ad757cefb6cb3b564257bbfe5b3977df712d8acfec499a23f02d95950c51"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002/outer-owned-finally.json",
|
||||
"bytes": 964,
|
||||
"sha256": "53e4a72b484c3c1dee2d65d794ae66cbb26c275875aff2ce5a8fa9f6aec1a636"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/ended.json",
|
||||
"bytes": 1388,
|
||||
"sha256": "9edb5784dc863042da01a24f6331c77538e6c442d062ac64075db8702b256725"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/adapter-owned-cleanup.json",
|
||||
"bytes": 351,
|
||||
"sha256": "c1f3d289b362cc61b9be169a3994be27df39f35e6221881b4a9678ce3c72ba54"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/engine-native.log",
|
||||
"bytes": 119610,
|
||||
"sha256": "fb3f0d442eac184ee4da46d7d85f63951e3ecc77c3e4cd4cd7c0727edbc64d0d"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/stdout.log",
|
||||
"bytes": 148303,
|
||||
"sha256": "8a0d3059755d0f11f7977595e7e2e73abd776563d9fa35f023c6676b23807dd4"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/started.json",
|
||||
"bytes": 1806,
|
||||
"sha256": "f032db6ee62fc8289e97074bc167577d4fc3af557fa0e9cb8a5d20722d606d2f"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/process.json",
|
||||
"bytes": 5511,
|
||||
"sha256": "87de574b8b6cf391c11123c58ff8306763f3374878d43742e1c6c33dba806e47"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/outer-owned-finally.json",
|
||||
"bytes": 964,
|
||||
"sha256": "0204641f0f7bc8f5cd8438c7d805fe6582c9ae779ddccfe1ab02c1b6d6f44b1c"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/import/combined-raw.log",
|
||||
"bytes": 148303,
|
||||
"sha256": "8a0d3059755d0f11f7977595e7e2e73abd776563d9fa35f023c6676b23807dd4"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-evidence/operating-report.json",
|
||||
"bytes": 4840,
|
||||
"sha256": "9791a9367ed16eaffe8d2221931d0649eb451d3f9cc752411840fb6ca8a89b3d"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-teardown/owned-audio/owner_133496309385-after.varbytes",
|
||||
"bytes": 81896,
|
||||
"sha256": "6154afb5360751073c645c594c4361e9bf0da842501540cef00cc229c039c168"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-teardown/owned-audio/owner_133496309385-before.varbytes",
|
||||
"bytes": 81896,
|
||||
"sha256": "6154afb5360751073c645c594c4361e9bf0da842501540cef00cc229c039c168"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/001-teardown/owned-audio/owner_133496309385.json",
|
||||
"bytes": 5310,
|
||||
"sha256": "e7b085fe03b1226cf6b525f9749327b883ace9d3260910b02f3e76ed2d2e7319"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-teardown/owned-audio/owner_137153742490.json",
|
||||
"bytes": 5316,
|
||||
"sha256": "3e888e2c82527c17660cab8e070b611ca7bdce1eb23a457c39d1816125b07fab"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-teardown/owned-audio/owner_137153742490-before.varbytes",
|
||||
"bytes": 154396,
|
||||
"sha256": "a250311864747a1af2995005ae27df01fafee669014bb90e9ee7692021098b5d"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/000-teardown/owned-audio/owner_137153742490-after.varbytes",
|
||||
"bytes": 154396,
|
||||
"sha256": "a250311864747a1af2995005ae27df01fafee669014bb90e9ee7692021098b5d"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-teardown/owned-audio/owner_136281327246-after.varbytes",
|
||||
"bytes": 891296,
|
||||
"sha256": "7764fb698cd3cf993ebf653b67bdf4f6b3ce14eb95516de7d02ec3b93adeb0dd"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-teardown/owned-audio/owner_136281327246-before.varbytes",
|
||||
"bytes": 891296,
|
||||
"sha256": "7764fb698cd3cf993ebf653b67bdf4f6b3ce14eb95516de7d02ec3b93adeb0dd"
|
||||
},
|
||||
{
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/002-teardown/owned-audio/owner_136281327246.json",
|
||||
"bytes": 5022,
|
||||
"sha256": "aa18b8d3b2185eae1b84269c4ebba02fb39c7b0aff57b04df61476a7df8047c0"
|
||||
}
|
||||
]
|
||||
}
|
||||
+151
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"plan_id": "P24-02",
|
||||
"unit_state": "in_progress",
|
||||
"runner_state": "submitted",
|
||||
"submitted_sha": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"source_backup_remote_branch": "codex/p24-02-source-fe44f55",
|
||||
"same_existing_task": "the-tree-p24-02-operations/P24-02",
|
||||
"repair_count": 6,
|
||||
"max_repair_attempts": null,
|
||||
"actual_roles": "Actual Claude Opus5.5 commander selected Codex Astra for bounded source repair5/6; same existing Runner task/nonUI continuation; actual separate Opus reviewers; Root owned actual post-submit tests and native gates. No duplicate implementation.",
|
||||
"limited_independent_review": {
|
||||
"actual_run": "3cd228580842457e85619910491e37cf",
|
||||
"status": "pass",
|
||||
"critical_high_medium": 0,
|
||||
"low": 5,
|
||||
"scope": "TwoMedium source readiness delta plus actual post-submit proof only; acceptance_ids=[]; not formal whole8 review"
|
||||
},
|
||||
"post_submit_reproduction": {
|
||||
"actual_S": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"actual_Q": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"actual_runs": 4,
|
||||
"all_exit_codes": 0,
|
||||
"proof": "root/REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json"
|
||||
},
|
||||
"actual_native_limited": {
|
||||
"Q": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"T": "1c1355608b9c53ba207ad567de38e6e6d104c8f1",
|
||||
"import_pass": true,
|
||||
"parse_scripts": 326,
|
||||
"affected_suites": [
|
||||
{
|
||||
"test": "tests/ui/test_operations_notification.gd",
|
||||
"checks": 62,
|
||||
"passed": true,
|
||||
"actual_pid": 12153
|
||||
},
|
||||
{
|
||||
"test": "tests/ui/test_event_log_ui.gd",
|
||||
"checks": 34,
|
||||
"passed": true,
|
||||
"actual_pid": 12186
|
||||
},
|
||||
{
|
||||
"test": "tests/ui/test_selection_autosave.gd",
|
||||
"checks": 75,
|
||||
"passed": true,
|
||||
"actual_pid": 12202
|
||||
}
|
||||
],
|
||||
"checks_scope_only": 171,
|
||||
"owned_pids_ended": [
|
||||
12008,
|
||||
12112,
|
||||
12153,
|
||||
12186,
|
||||
12202
|
||||
],
|
||||
"guard_errors": [],
|
||||
"cleanup_errors": [],
|
||||
"OS_input_executed": false,
|
||||
"full_regression": false,
|
||||
"proof": "actual-native/local-ended.json"
|
||||
},
|
||||
"prepared_composition": {
|
||||
"scope": "Prospective actual Git composition, not a normal integration candidate or runtime evidence",
|
||||
"S": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"M": "54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"Q": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"T": "1c1355608b9c53ba207ad567de38e6e6d104c8f1",
|
||||
"parents": [
|
||||
"54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"fe44f550750acbf5c510346e7cacbea2ccbdd184"
|
||||
],
|
||||
"worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"conflict_paths": [
|
||||
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"scenes/main/main.gd",
|
||||
"scenes/main/world_preview.gd",
|
||||
"tools/regression/suite-policy.json"
|
||||
],
|
||||
"resolution": "Exact actual submitted S blobs in four already-reconciled paths, no Root source edits",
|
||||
"all8_accepted": false,
|
||||
"normal_integration_candidate": false,
|
||||
"formally_closed_units": 14
|
||||
},
|
||||
"prepared_version_applicability": "Actual M54/Qefd/T1c source-only prospective evidence. This ledger update changes Main documentation only. Before actual formal candidate, bind fresh actual M/Q; reuse proof only on verified identical selected source/settings/marker/policy/engine/input/environment. Never relabel old Q as normal integration candidate.",
|
||||
"required_roster_size_NOT_EXECUTED": 180,
|
||||
"all8_conditions": [
|
||||
{
|
||||
"id": "placement_and_invalid_drop",
|
||||
"required": "Original grid snap and connection warnings; valid placement commits once, invalid placement/assignment explains the actual rejection, leaves model/ledger/selection intact, supports equivalent click-based operation.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Local native coverage passed. Ordinary OS valid/invalid placement and assignment/drop, actual explanation, valid-target behind-modal attempts and click equivalence with model/ledger/selection proof remain."
|
||||
},
|
||||
{
|
||||
"id": "modal_and_pause_resume",
|
||||
"required": "Modal open/cancel/confirm, input focus, pausing and resuming preserve pending commands and save identity. Behind-dialog input cannot accidentally build or change assignment. Actual pause freezes simulation and ordinary resume continues exactly once.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Defense visibility callback and native operation/pause/cancel checks passed. Real valid-target positive control, all required normal modal/focus/pending/save identity and distinct-process continuity remain."
|
||||
},
|
||||
{
|
||||
"id": "unit_bubbles",
|
||||
"required": "Unit overhead Zzz, anger, heart correspond to actual existing state. Observe source/model/render bindings and switching/removal without stale symbols; do not invent gameplay thresholds or hidden approved values.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Local source/model tests passed; actual render/state transitions/removal and original-state semantics need actual runtime/visual evidence. Prior first-link/heart/scan observations remain whole-unit review items."
|
||||
},
|
||||
{
|
||||
"id": "event_log",
|
||||
"required": "Actual production events reach bounded recent log in sequence, readable Japanese with correct amounts/time/reasons, no duplicate events across pause/load. Reuse accepted256-entry log only with matching source applicability.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Current native event-log suite passed. Real production sequence, Japanese amounts/time/reasons and pause/load nonduplication remain; legacy evidence stays original-version unless applicability proven."
|
||||
},
|
||||
{
|
||||
"id": "important_warning_cutin",
|
||||
"required": "Original important-warning UI for invasion start, duel, defense start is connected to actual existing signals/states with clear text, dismiss/stop/resume behavior; fixture-only signal injection is local testing, not proof ordinary production trigger. Missing upstream/catalog/assets remain explicit dependencies, do not claim complete.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Real ordinary invasion/duel/defense triggers and upstream whole P18-01/02/P19-01/P21-01/content/approved production input remain. Backend265ce30 is already completed and is never restarted. No fixture-only credit or invented values."
|
||||
},
|
||||
{
|
||||
"id": "click_alternatives",
|
||||
"required": "Provide/verify click equivalents for necessary pointer/drag/modifier navigation and assignment operations. Reuse existing step/zoom/bounds mechanisms and scales; presentation controls must not change gameplay model. Manual P23 held gestures remain deferred, not waived or relabeled.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Actual staff-panel facility_option/apply_button OS click and required navigation input remain. Direct handler calls are not map-click evidence. Held P23 gestures deferred, not waived."
|
||||
},
|
||||
{
|
||||
"id": "japanese_input_and_scale",
|
||||
"required": "Actual OS Japanese composition/confirmation/cancel, persisted display of valid Japanese text and clear invalid-input feedback, representative window/display scales with clipping/focus/modal inspection. Use existing save display_name metadata for an editable optional Japanese save label if a suitable text field is absent; retain existing default name, cryptographic owned path, old-save preservation and cancel semantics. Do not add new gameplay numbers or rename save paths to user text. Explicitly classify macOS current development verification and still-required same-Windows-release platform acceptance; do not transfer prior Windows evidence.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Current ordinary OS IME composition/cancel/confirm/invalid input, Japanese persisted save, distinct-process load and required scale/focus/clipping remain. Same Windows release device requirements remain explicitly separate and unaccepted."
|
||||
},
|
||||
{
|
||||
"id": "final_validation_review",
|
||||
"required": "Static/import, local/affected tests first; batch related fixes then run required full roster on exact final game/source/settings. Exact version/source hashes/config/inputs/artifacts and condition status. Independent separate Claude review with actual runtime evidence (not pending templates alone), current-main integration and final validation. All required conditions/evidence must hold to close P24-02; no partial credit, no counts as acceptance.",
|
||||
"status": "unaccepted",
|
||||
"current_gap": "Source/composition guard and twoMedium corrections passed limited review; actual newS/Q post-submit stdlib proof and native import/326parse/3 affected suites passed. Real typed OS/runtime/command/roster artifact assembly and schema end-to-end positive, exact final full180-or-current roster once, whole8 formal Opus review, normal candidate/integration/final remain. Rebind actual current M/Q before formal gates; oldQ is never relabelled."
|
||||
}
|
||||
],
|
||||
"next_single_delivery_unit": "P24-02",
|
||||
"next_gate": "Prepare genuine typed ordinary OS/runtime evidence and an end-to-end index positive for the real schema, preserve producer/end-time identities at capture. Resolve upstream actual production-trigger dependencies through existing Opus-directed work; do not rerun accepted P18 backend. No need to reimplement repair6 checker. Batch further necessary fixes before one exact final full roster, then formal whole8/normal integration/final.",
|
||||
"known_cleanup_only": "One Root-generated tracked .pyc is frozen in S6, excluded from selected game/source_refs; preserve exact S/Q and remove in the next genuine source-change batch through normal Runner. It is not an acceptance blocker. Future Root Python uses -B.",
|
||||
"original_denominator": {
|
||||
"packages": 30,
|
||||
"units": 88,
|
||||
"formally_complete": 14,
|
||||
"new_credit": 0,
|
||||
"partial_credit": false
|
||||
},
|
||||
"whole_unit_accepted": false,
|
||||
"game_complete": false,
|
||||
"updated_at_jst": "2026-10-17T15:19:09.416187+09:00"
|
||||
}
|
||||
+282
@@ -0,0 +1,282 @@
|
||||
{
|
||||
"scope": "Complete listed raw/canonical proof files are retained; this is readiness, not unit acceptance",
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/REPAIR6_LIMITED_STATIC_REVIEW_RESULT.json",
|
||||
"sha256": "8c66abc4903cff54312e432c7c9590601d25c2c4210b69b3319a968bdd88a9f4",
|
||||
"bytes": 8081,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/REPAIR6_LIMITED_STATIC_REVIEW_RESULT.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json",
|
||||
"sha256": "5523468bfe0b19cb60333863579f2f48e18f47826c841a83b616cdf89b8d0514",
|
||||
"bytes": 2963,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/ROOT_REPAIR6_LOCAL_PROOF_REAUDIT.json",
|
||||
"sha256": "1bd8612b84a792dd49222342790795820bdc5b2ac70bcd9aa436bd922b9ec6f9",
|
||||
"bytes": 41683,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/ROOT_REPAIR6_LOCAL_PROOF_REAUDIT.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/ACTUAL_REPAIR6_PREPARED_COMPOSITION.json",
|
||||
"sha256": "8359321e0bbcf3490e5d31f4bbdbecc7aabb6545454634b423a3c8199d4e7341",
|
||||
"bytes": 976,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/ACTUAL_REPAIR6_PREPARED_COMPOSITION.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/ACTUAL_REPAIR6_COMPOSITION_PREREQUISITE.json",
|
||||
"sha256": "ae908e42e80788b00c7bf040f505c2741cbb3dbe7cb0a379804378a5297c8754",
|
||||
"bytes": 299243,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/ACTUAL_REPAIR6_COMPOSITION_PREREQUISITE.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/REPAIR6_REVIEW_MATERIAL_RETAINED_OUTSIDE_SOURCE.json",
|
||||
"sha256": "35a533a72be358bf42eb1bba80e56d995132f7bbfd9fd275a790d49bcb93e842",
|
||||
"bytes": 8593,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/REPAIR6_REVIEW_MATERIAL_RETAINED_OUTSIDE_SOURCE.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/ROOT_GENERATED_CACHE_PRELAUNCH_CORRECTION.json",
|
||||
"sha256": "840565bc7638318b67e065c09fffa8e2e247aabded72c109d2af7ef1faff1ad5",
|
||||
"bytes": 1110,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/ROOT_GENERATED_CACHE_PRELAUNCH_CORRECTION.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/CLOSED_OLD_SOURCE_CHECKOUTS_RETIRED_WITH_FULL_PROOF_RETAINED.json",
|
||||
"sha256": "b0e6b10ec4ac0f47b9732e1c12d3c66c53d4bf3ad45c6c0cb5f8af1a7f36734f",
|
||||
"bytes": 9810,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/CLOSED_OLD_SOURCE_CHECKOUTS_RETIRED_WITH_FULL_PROOF_RETAINED.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/CLOSED_78F7_SOURCE_ONLY_VALIDATOR_RETIRED.json",
|
||||
"sha256": "34e58bb71779fb98e37299bc79d3a5c400add239dcfc1b32042d2286a8aef8c8",
|
||||
"bytes": 873,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/CLOSED_78F7_SOURCE_ONLY_VALIDATOR_RETIRED.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/CLOSED_SOURCE_ONLY_FAILED_VALIDATORS_RETIRED.json",
|
||||
"sha256": "8684d46d6ade019f1bf2435712ae8a48515db2f12f97564c80bca0999fad28f9",
|
||||
"bytes": 4067,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/CLOSED_SOURCE_ONLY_FAILED_VALIDATORS_RETIRED.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/result.json",
|
||||
"sha256": "105278a32d65a09d54ea3032d0170e05dc36b3f998e729b2d6dfbe65622f2a9f",
|
||||
"bytes": 7483,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/result.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/stdout.log",
|
||||
"sha256": "e0ccc429e1bb3b1caef3eaf5f31e741485b9d792530279f2749fa3c7e88dba8e",
|
||||
"bytes": 16386,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/stdout.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/stderr.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/packet.txt",
|
||||
"sha256": "db327135bdfcc3058085b8c21df4ee57228ccddecb8b1485f2e886f2a7376e0f",
|
||||
"bytes": 4619,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/packet.txt"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/command.json",
|
||||
"sha256": "19708668d9ba4547df664675ad0fc5ce8cc74fedbba2192f69d0120408b15e39",
|
||||
"bytes": 1890,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/command.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-independent-review/sandbox.sb",
|
||||
"sha256": "8ffe360376b0e15109baacdb8bcfee85fb354755c3f0376c1caa0bef3f9500a2",
|
||||
"bytes": 2022,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf/sandbox.sb"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-native/local-ended.json",
|
||||
"sha256": "a18539bbf4c6b25904064b6f8e613c5c42af85e85045aa48551c8a4fba68a577",
|
||||
"bytes": 200599,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/local-ended.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-native/runner-input.json",
|
||||
"sha256": "4157032a1e3187b899e244a2e3559d57073e100ad475071fa71c83222f9bf966",
|
||||
"bytes": 328447,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/runner-input.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-native/parse-paths.json",
|
||||
"sha256": "5db81ede4dd075c2fd8e9d36c396cf98c98cac04f12c3c54352da7cc119428d5",
|
||||
"bytes": 16183,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build/p24-local-r6-fe44f55-r01/parse-paths.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-native/actual-controller.py.source.txt",
|
||||
"sha256": "73eaa13be1bd05a842fc97d318b2544370d3d9ae8056e99fd6d9dc939f88cb12",
|
||||
"bytes": 6096,
|
||||
"actual_original_path": "/private/tmp/thetree-p24-repair6-local-affected.py"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/worker-pre-submit/STATUS.json",
|
||||
"sha256": "2f557bb3f965e1957ae87b2003cc75be03f06c4a24d503b85ae8748882948ea4",
|
||||
"bytes": 5364,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/STATUS.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/worker-pre-submit/SOURCE_MANIFEST.json",
|
||||
"sha256": "18ebcd990f2c02975e0ee3fbdbee6adc783f5f5e92e0591bb4fb7975d64b5a02",
|
||||
"bytes": 11856,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/SOURCE_MANIFEST.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/worker-pre-submit/LOCAL_COMMAND_RESULTS.json",
|
||||
"sha256": "a0f3a59b641c09a0df71932eb86bb6af6a6011977a3d96eb1a70ad2629869929",
|
||||
"bytes": 17465,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/LOCAL_COMMAND_RESULTS.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/worker-pre-submit/PROTOCOL.md",
|
||||
"sha256": "6f315d6e73d4526727d26a9d69c29dd222ead2c1499da06e4f6efaa2fef84a56",
|
||||
"bytes": 8937,
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/PROTOCOL.md"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair5/stderr.log",
|
||||
"sha256": "1d68ecb3a0e174b0ae8221e6d80bc8a0939280c1baeb79d3ed1b94316c1b3a57",
|
||||
"bytes": 1718,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8/stderr.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair5/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8/stdout.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair5/sandbox.sb",
|
||||
"sha256": "66b4fafca85a17f76406a3818ea9427239f5871feb0f600bacd8368ba03dad53",
|
||||
"bytes": 1947,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8/sandbox.sb"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair5/command.json",
|
||||
"sha256": "2b504fde7f1590a8af079c03465b76bf2cf2ab316e8a6ed40c3d7f87e0bd91eb",
|
||||
"bytes": 783,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8/command.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair5/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8/packet.txt"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair6/stderr.log",
|
||||
"sha256": "dac53b4524b48e9f22d29bee6d7fe40b5ac9941e14b0ad4363940091faea1806",
|
||||
"bytes": 1172,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3/stderr.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair6/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3/stdout.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair6/sandbox.sb",
|
||||
"sha256": "66b4fafca85a17f76406a3818ea9427239f5871feb0f600bacd8368ba03dad53",
|
||||
"bytes": 1947,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3/sandbox.sb"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair6/command.json",
|
||||
"sha256": "b85851c72cdcde8a5c504b865429a9c9dc5793fdaa3aa12e3f40d31e4e36e7dc",
|
||||
"bytes": 783,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3/command.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/submitted_S_test_repair6/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3/packet.txt"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair5/stderr.log",
|
||||
"sha256": "bb3b5fdf49ec01d24ae52400e32a5eb91ba51eb58bf3c85598c1e60ddeb671e1",
|
||||
"bytes": 1718,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1/stderr.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair5/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1/stdout.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair5/sandbox.sb",
|
||||
"sha256": "651c50e4ebd5dd4e6ecb9ca93ea847a5e27c87075781c2e8f839520daaa583af",
|
||||
"bytes": 1963,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1/sandbox.sb"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair5/command.json",
|
||||
"sha256": "d428416c41b5064f4e664177ae4606f8f92b7c71d35df4ca33f5b45305552841",
|
||||
"bytes": 799,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1/command.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair5/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1/packet.txt"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair6/stderr.log",
|
||||
"sha256": "eb4ebd4b4f3ae4ba5711b2620070d3acab28fdf8aac8c4d80f45a3c48f32ad5a",
|
||||
"bytes": 1172,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824/stderr.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair6/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824/stdout.log"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair6/sandbox.sb",
|
||||
"sha256": "651c50e4ebd5dd4e6ecb9ca93ea847a5e27c87075781c2e8f839520daaa583af",
|
||||
"bytes": 1963,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824/sandbox.sb"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair6/command.json",
|
||||
"sha256": "9db4ffe5485940be82461c56732f2c1c9184be3fa76ebc2299a9f2e0b63dd87f",
|
||||
"bytes": 799,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824/command.json"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-post-submit/prepared_Q_test_repair6/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"bytes": 0,
|
||||
"actual_original_path": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824/packet.txt"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/actual-native/complete-raw-excluding-reusable-stage.tar.gz",
|
||||
"sha256": "fef2acc1b825d8a5b585cd6697a0af315cbb36b96d62f9691ee198a0fc0fb348",
|
||||
"bytes": 379480,
|
||||
"scope": "All80 actual raw native outputs excluding reusable source stage; complete member-by-member SHA/length verified against ACTUAL_NATIVE_RAW_MANIFEST.json. Raw retained for upcoming whole8 review."
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-readiness-repair6-20261017/root/SUPERSEDED_REPAIR5_SOURCE_CHECKOUT_RETIRED.json",
|
||||
"bytes": 8185,
|
||||
"sha256": "dc81b4e2edfc6ab0ecc98e77c98fae19f8c2d0c6abe15a87007db46d7af7c07f",
|
||||
"actual_original_path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/SUPERSEDED_REPAIR5_SOURCE_CHECKOUT_RETIRED.json"
|
||||
}
|
||||
],
|
||||
"native_raw_manifest": "ACTUAL_NATIVE_RAW_MANIFEST.json"
|
||||
}
|
||||
+4
-2
@@ -17,11 +17,11 @@
|
||||
"--permission-mode",
|
||||
"plan",
|
||||
"--json-schema",
|
||||
"{\"type\": \"object\", \"additionalProperties\": false, \"required\": [\"task_id\", \"commit\", \"status\", \"summary\", \"acceptance_ids\", \"findings\"], \"properties\": {\"task_id\": {\"type\": \"string\", \"enum\": [\"P24-02\"]}, \"commit\": {\"type\": \"string\", \"enum\": [\"78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08\"]}, \"status\": {\"type\": \"string\", \"enum\": [\"pass\", \"changes_requested\"]}, \"summary\": {\"type\": \"string\"}, \"acceptance_ids\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"maxItems\": 0}, \"findings\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"additionalProperties\": false, \"required\": [\"severity\", \"message\"], \"properties\": {\"severity\": {\"type\": \"string\", \"enum\": [\"critical\", \"high\", \"medium\", \"low\"]}, \"message\": {\"type\": \"string\"}}}}}}",
|
||||
"{\"type\": \"object\", \"additionalProperties\": false, \"required\": [\"task_id\", \"commit\", \"status\", \"summary\", \"acceptance_ids\", \"findings\"], \"properties\": {\"task_id\": {\"type\": \"string\", \"enum\": [\"P24-02\"]}, \"commit\": {\"type\": \"string\", \"enum\": [\"fe44f550750acbf5c510346e7cacbea2ccbdd184\"]}, \"status\": {\"type\": \"string\", \"enum\": [\"pass\", \"changes_requested\"]}, \"summary\": {\"type\": \"string\"}, \"acceptance_ids\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"maxItems\": 0}, \"findings\": {\"type\": \"array\", \"items\": {\"type\": \"object\", \"additionalProperties\": false, \"required\": [\"severity\", \"message\"], \"properties\": {\"severity\": {\"type\": \"string\", \"enum\": [\"critical\", \"high\", \"medium\", \"low\"]}, \"message\": {\"type\": \"string\"}}}}}}",
|
||||
"--model",
|
||||
"claude-opus-5-5"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01",
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"env_names": [
|
||||
"AGY_CLI_DISABLE_AUTO_UPDATE",
|
||||
"BROWSER_PROFILE_DIR",
|
||||
@@ -37,11 +37,13 @@
|
||||
"PATH",
|
||||
"PORT",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
"PYTHONPYCACHEPREFIX",
|
||||
"TEMP",
|
||||
"TERM",
|
||||
"TEST_DATABASE_PATH",
|
||||
"TMP",
|
||||
"TMPDIR",
|
||||
"TMPPREFIX",
|
||||
"USER"
|
||||
],
|
||||
"execution": "sandbox"
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
Latest owner review-material policy: fixed 500000-byte limits are removed. Do not omit required sources or evidence or perform compression/re-submission merely to satisfy the obsolete cap. Claude commander/reviewer can inspect their source checkout with Read,Grep,Glob; reviewer validation materials are mirrored into .review-material within the frozen checkout. Other services keep their own tool sets. Preserve scope, acceptance, exact-version evidence and independent review. Read relevant dependencies directly and report required context gaps.
|
||||
Actual independent limited static DELTA review for repair6, not formal unit acceptance. Return commit fe44f550750acbf5c510346e7cacbea2ccbdd184, acceptance_ids=[], pass only if no critical/high/medium source readiness defect. You are in actual fresh Q with complete Main dependencies. Original30/88/formal14 unchanged, all8 not accepted. No Godot/native/OS/full/Windows on these sources. Read/Grep/Glob complete relevant sources and raw proof; no execution/edit. No material cap. Roles {"scope": "Prospective actual Git composition, not a normal integration candidate or runtime evidence", "S": "fe44f550750acbf5c510346e7cacbea2ccbdd184", "M": "54cade4181f6c3c4f5701ba54ac5fcbeca695945", "Q": "efd5466e45a8977057a63d27e0c477f99a8385f9", "T": "1c1355608b9c53ba207ad567de38e6e6d104c8f1", "parents": ["54cade4181f6c3c4f5701ba54ac5fcbeca695945", "fe44f550750acbf5c510346e7cacbea2ccbdd184"], "worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01", "conflict_paths": ["docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json", "scenes/main/main.gd", "scenes/main/world_preview.gd", "tools/regression/suite-policy.json"], "resolution": "Exact actual submitted S blobs in four already-reconciled paths, no Root source edits", "all8_accepted": false, "normal_integration_candidate": false, "formally_closed_units": 14}.
|
||||
Focus the TWO MEDIUM findings from actual independent f725571e5b46473ea04a90424a404bd5 (full result and raw output supplied in .review-material/p24-repair6-static/manifest.json). (M1) PreservationTests references pinned bd3a134 pre-repair baseline for Main/test/World, GIT_* scrubbed; exact identical test now actually rerun AFTER normal submit at real committed S AND actual genuine Q; both raw command/exit receipts supplied. Do not confuse old uncommitted21-pass with these actual post-submit results. (M2) Real typed nonOS producers and receipts for commands/full-roster/Claude-review/composition/spec-doc facts; never require OS pid/session/in-window timestamps for nonOS facts. Actual runtime meanings retain OS guards. Coverage roster rows must be the SAME rows validated by legacy suite-set/hash/results gate, not a receipt-only list or unbound alternate roster. Stage semantics normal_validation vs integration_final must remove circular future requirements honestly: normal marks later gates not-yet-applicable and never complete; final enforces all8 actual review+integration; no flags or criterion waiver/false OS provenance. Assess meaningful positives and negatives for every new kind and stage, references to actual artifact hashes and producer lifecycle/order, composition reused rather than reimplemented. Scope new helper/test/protocol/status edits and checker deltas. Actual composition.py and world_preview are protected byte-identical and prior f725 reviewed composition sound; reuse that scoped review by actual SHA instead of redoing it. Review any optional native positive-control change if present, otherwise prior guard fix remains source-only and weak behind-dialog target assertion explicitly pending actual runtime. No unrelated low cleanup requirement; unchanged old lows remain future whole8 review items, not newly waived. Full prior/raw actual codeworker800,941 commander,f725 reviewer plus Root local proof/newS/Q and both post-submit validation command logs are mirrored here. Old historical sourceReady5 manifests/logs refer only to their original source, not the corrected phase6; new phase6 must clearly pin own source and all8 gaps. Root's new prospective Q is not a normal integration candidate nor runtime proof. Source-only review cannot grant original acceptance. Natural upstream triggers, ordinary OS IME/save/scale/click, native bubble/render/modal proof, exact final full roster, whole8 review, actual normal integration/final and Windows remain applicable gates. Do not require fake runtime artifacts for this limited static review. Identify real concrete remaining static/code defect or pass scoped source readiness.
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"task_id": "P24-02",
|
||||
"commit": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"status": "pass",
|
||||
"summary": "Limited independent static DELTA review of repair6. S=fe44f55, M=54cade4, Q=efd5466, T=1c13556, run in the Root prospective Q worktree. I used only Read, Grep and Glob, ran nothing and edited nothing. This is not formal acceptance: acceptance_ids=[], all 8 conditions stay unaccepted, original 30/88 and the 14 formally closed units are unchanged, and nothing here counts as Godot, native, OS, full-roster or Windows evidence. Q is not a normal integration candidate.\n\nM1 is fixed. In test_repair5.py:368-394 every PreservationTests comparison reads the pinned baseline bd3a13405115fc9bf6c5acec55bcfef7dd15266a:\n- the marker and policy JSON;\n- world_preview.gd (byte-identical);\n- the UI test (only the exact inserted block differs);\n- main.gd (baseline plus exactly the one visibility_changed connect line).\nReads go through composition.git_bytes, which strips inherited GIT_*. test_inherited_git_overrides_are_scrubbed sets invalid GIT_DIR, GIT_WORK_TREE and GIT_INDEX_FILE and still runs the whole check. No moving-HEAD baseline remains. Post-submit receipts:\n- committed S fe44f55 in P24-02-implement: test_repair5 22/22 OK (39b3e922…) and test_repair6 12/12 OK (86809742…);\n- genuine Q efd5466 in this worktree: test_repair5 22/22 OK (5c96883a…) and test_repair6 12/12 OK (054209e9…).\nAll four exited 0, and the file SHAs match SOURCE_MANIFEST (d3c8e8ea…, f4e289c8…). These are separate from the earlier uncommitted 21-pass run.\n\nM2 is fixed. In correspondence.py:106-235 the six non-OS meanings map to typed kinds: command_log, roster_controller, claude_review, composition_result, held_gestures_document and platform_document. Each kind:\n- has provenance limited to {root,S,T,source_map_sha256};\n- forbids OS keys on both the artifact and the record;\n- has a producer receipt with an exact schema (kind, identity, pid, run_id, Unix start/end, lifecycle [started,ended], canonical records_sha256) whose pid and run_id may not reuse the OS pid or session;\n- is reached through a /records/N pointer with an exact kind and meaning.\nOS meanings keep all their prior guards: /events/N, action==meaning, in-window monotonic_ns, full provenance, and the bubble, cut-in and restart checks.\n\nPer-kind checks:\n- command_log: argv, absolute cwd, its own pid, exit 0, hashed stdout and stderr, the source-map SHA, and times inside the producer's run; results must equal the exit-code list.\n- roster_controller: the checker hands correspondence the exact row objects accepted by the legacy suite-set, source-SHA and result gate (check_p24_operations_evidence.py:432-435, extended only on success). The record's results must canonically equal those rows per suite, order ignored, and each row must match source_hashes, pass verify_engine, and carry its own pid/run_id pair (no reuse, no OS identity) inside the controller interval. Receipt-only, altered, duplicate, source-mismatched and missing-validated-rows cases are rejected by tests.\n- claude_review: reviewer and run id come from the receipt; its identity and run must differ from every other typed producer; provider must be Claude with decision pass; review_sha256 binds the review; it must reference exactly the SHA set of the untyped runtime artifacts plus the roster controller, and its producer must start after all of them end.\n- composition_result: the record's result must equal the dict returned by composition.verify_composition during the same checker run, with mode integration_final. Composition is reused, not reimplemented.\n- held_gestures_document and platform_document: both bind the source map and spec, and windows_status must stay NOTRUN.\n\nStage semantics:\n- normal_validation: the final group must be passed=false with status prerequisites-only. The review and integration-final links must be exactly {status:not-yet-applicable}; anything else, or extra later artifacts, is rejected. The stage report says complete=false.\n- integration_final: requires all eight conditions, every meaning, and real review and composition records. There is no flag or waiver path.\nTests cover a positive case and relabelling, OS-provenance, lifecycle and hash negatives for each kind, and positives and negatives for both stages.\n\ncomposition.py (b2fc058b…) and world_preview.gd are byte-identical, so the scoped composition review from f725 is reused. The optional defense-test positive control was not added. The visibility_changed guard fix therefore stays source-only, and the weak behind-dialog target assertion still waits for a real runtime run.\n\nThe later gates still apply: natural upstream triggers, ordinary OS IME/save/scale/click, native bubble/render/modal proof, the exact final full roster, the whole-8 review, normal integration and final validation, and Windows.",
|
||||
"acceptance_ids": [],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "correspondence.verify_typed (composition_result) checks `composition_result == roles`. In the checker path this always holds, because composition.verify_composition (composition.py:262) returns the same roles dict it was given. The real binding is record['result'] == the verified roles, which do include C and blob_bindings. That is sound, but PROTOCOL's wording ('actual dictionary returned … including C and blob bindings') implies a separate result object. Clarify this during the whole-8 review; no change is needed for source readiness."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "The legacy final_validation_review fields (test_suite/failures/checks/full_roster) must sit on a typed artifact, in practice roster_controller (or command_log), and be listed in final_validation_review.artifact_ids. An untyped artifact would need OS pid/session provenance or would be rejected as unused, and a separate list-valued rows artifact (the string-reference path at checker:389) is rejected by verify ('artifact object required'). The unit tests check legacy validation and correspondence.verify separately. No end-to-end _verify_evidence positive test runs one index through both. Add one when Root builds the real index schema."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "The claude_review timing check requires real ended_unix_ns on every untyped runtime artifact (OS receipt and trace). No game-side producer emits it today (no .gd source writes it), so the runtime harness must record the artifact end time when it writes the artifact, not insert it later. PROTOCOL.md documents this; it is a future harness obligation, not a code defect."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "A typed artifact's records array can contain extra records that no coverage link points to. records_sha256 binds them, but they are never checked for meaning. This is minor hardening: consider requiring every typed record to be covered."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "Status files are stale relative to the submitted commit. The committed repair6 STATUS.json and SOURCE_MANIFEST.json describe 'uncommitted worker bytes' on 78f7cba and list the S/Q re-runs as NOTRUN. A file committed in S cannot name S's own commit, and Root's REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json now records the actual S/Q runs (all exit 0). Keep that Root record as the authoritative post-submit pin, and do not cite the worker STATUS as post-submit proof."
|
||||
}
|
||||
]
|
||||
}
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
(version 1)
|
||||
(allow default)
|
||||
(deny file-write*)
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.claude.json")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.claude.json")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(allow file-write* (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02"))
|
||||
(allow file-write* (literal "/dev/null") (literal "/dev/tty") (literal "/dev/stdout") (literal "/dev/stderr"))
|
||||
(deny file-read* file-write* (subpath "/private/tmp/the-tree-p24-02-control-r02"))
|
||||
+1
File diff suppressed because one or more lines are too long
+50
@@ -0,0 +1,50 @@
|
||||
import importlib.util,hashlib,json,os,shutil,sys,uuid
|
||||
from pathlib import Path
|
||||
sys.dont_write_bytecode=True
|
||||
CO=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02')
|
||||
context=json.loads((CO/'ACTUAL_REPAIR6_PREPARED_COMPOSITION.json').read_text())
|
||||
review=json.loads((CO/'REPAIR6_LIMITED_STATIC_REVIEW_RESULT.json').read_text())
|
||||
assert review['S']==context['S'] and review['Q']==context['Q'] and review['result']['status']=='pass'
|
||||
assert not [f for f in review['result']['findings'] if f['severity'] in ('critical','high','medium')]
|
||||
ROOT=Path(context['worktree'])
|
||||
OUT=Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/build')/('p24-local-r6-'+context['S'][:7]+'-r01')
|
||||
spec=importlib.util.spec_from_file_location('p24_existing_native_runner',ROOT/'tools/run_all_tests.py');r=importlib.util.module_from_spec(spec);spec.loader.exec_module(r)
|
||||
paths=['tests/ui/test_operations_notification.gd','tests/ui/test_event_log_ui.gd','tests/ui/test_selection_autosave.gd']
|
||||
import subprocess
|
||||
candidate=subprocess.check_output(['git','rev-parse','HEAD'],cwd=ROOT,text=True).strip()
|
||||
r.require(len(sys.argv)==2 and candidate==sys.argv[1]==context['Q'], 'exact prepared actual Q; not normal integration candidate')
|
||||
dirty_status=subprocess.check_output(['git','status','--porcelain'],cwd=ROOT,text=True)
|
||||
r.require(not dirty_status, 'submitted candidate clean')
|
||||
# Preflight only: exact source map and ordinary guards remain; no submitted-version acceptance.
|
||||
|
||||
refs=r.source_refs(ROOT);before=refs;expected={n:{'bytes':v['bytes'],'sha256':v['sha256']} for n,v in refs.items()};policy=r.read(ROOT/'tools/regression/suite-policy.json');r.policy_coverage(paths,refs,policy)
|
||||
markers=r.module('p24_local_markers',ROOT/'tools/strict_test_markers.py');cp=ROOT/'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json';contracts=markers.load_contracts(cp)
|
||||
OUT.parent.mkdir(parents=True,exist_ok=True)
|
||||
outer=r.module('p24_local_owned_outer',ROOT/'tools/regression/owned_outer.py');r.require(not outer.native.helper['live_engines'](),'another Godot is live');r.require(shutil.disk_usage(OUT.parent).free>=500*1024*1024,'local admission free>=500MiB')
|
||||
OUT.mkdir(parents=True,exist_ok=False);stage=OUT/'stage';stage.mkdir();(OUT/'starters').mkdir();(OUT/'bootstrap').mkdir()
|
||||
for n,pin in r.read(ROOT/'tools/regression/bootstrap-scripts.json').items():
|
||||
data=pin['text'].encode();r.require(hashlib.sha256(data).hexdigest()==pin['sha256'],'bootstrap exact');(OUT/'bootstrap'/n).write_bytes(data)
|
||||
for n,pin in refs.items():
|
||||
target=stage/n;target.parent.mkdir(parents=True,exist_ok=True);r.copy_source(Path(pin['path']),target)
|
||||
r.require(r.inventory(stage,stage=True)==expected,'whole separate CoW stage exact')
|
||||
protected=r.default_player(ROOT);public=(stage/'project.godot').read_bytes();parse=['res://'+n for n in sorted(refs) if n.endswith('.gd')];r.write(OUT/'parse-paths.json',parse)
|
||||
selected={'root_before':before,'map':{n:p['sha256'] for n,p in refs.items()},'timeout':300};engine='/Applications/Godot.app/Contents/MacOS/Godot'
|
||||
r.write(OUT/'runner-input.json',{'protocol':'guarded-operations-local-v1','full_regression':False,'source_commit':candidate,'source_state':'exact prepared Q/T local affected verification; not normal integration candidate or whole-unit acceptance','S':context['S'],'M':context['M'],'Q':context['Q'],'T':context['T'],'dirty_status':dirty_status,'selected_source_map':selected['map'],'roster':paths,'full_roster':r.roster(ROOT),'owner_runner_pid':os.getpid(),'stage':str(stage),'default_player_before':protected,'engine':engine,'engine_sha256':r.sha(engine),'marker_contract_sha256':r.sha(cp),'execution_controller_sha256':r.sha(Path(__file__)),'existing_phase_controller_sha256':r.sha(ROOT/'tools/run_all_tests.py')})
|
||||
diagnostics=r.module('p24_local_diagnostics',ROOT/'tools/regression/diagnostic_gate.py');owners=r.module('p24_local_owners',ROOT/'tools/regression/ordinary_proof_gate.py');audio=r.module('p24_local_audio',ROOT/'tools/regression/audio_evidence_gate.py')
|
||||
rows=[];phases=[];previous={};error=None
|
||||
try:
|
||||
for label,test in [('import',None),('parse',None)]+[(str(i).zfill(3),n)for i,n in enumerate(paths)]:
|
||||
row=r.execute_phase(engine,stage,OUT,label,test,selected,expected,previous,policy,contracts,parse,public,protected,ROOT,outer,markers,diagnostics,owners,audio);phases.append(row)
|
||||
if test:rows.append(row)
|
||||
print(json.dumps({'phase':label,'test':test,'passed':row['passed'],'actual_pid':row.get('actual_pid'),'checks':row.get('reported_checks'),'error':row.get('validation_error') or row.get('guard_error')},ensure_ascii=False),flush=True)
|
||||
r.require(row['passed'],'first local phase failure; no retry')
|
||||
except BaseException as e:error=type(e).__name__+': '+str(e)
|
||||
finally:cleanup,cleanup_errors=outer.finish_captured(outer.OWNED)
|
||||
guards=[]
|
||||
try:
|
||||
r.require(r.source_refs(ROOT)==before,'whole source unchanged');r.require(r.default_player(ROOT)==protected,'default player unchanged');r.require(r.inventory(stage,stage=True)==dict(expected,**previous),'whole stage and generated file set exact')
|
||||
except BaseException as e:guards.append(type(e).__name__+': '+str(e))
|
||||
passed=not error and not guards and not cleanup_errors and len(phases)==len(paths)+2 and all(x['passed'] for x in phases)
|
||||
r.write(OUT/'local-ended.json',{'protocol':'guarded-operations-local-v1','full_regression':False,'passed':passed,'error':error,'guard_errors':guards,'cleanup_errors':cleanup_errors,'final_owned_cleanup':cleanup,'actual_captured_pids':[p.pid for p in outer.OWNED],'phases':phases,'rows':rows,'original_unit_accepted':False,'preflight_only':True,'S':context['S'],'M':context['M'],'Q':context['Q'],'T':context['T'],'OS_input_executed':False,'cross_process_executed':False,'independent_review_executed':False})
|
||||
print(json.dumps({'selected_local_passed':passed,'executed_suites':len(rows),'planned_local_suites':len(paths),'error':error,'guard_errors':guards,'cleanup_errors':cleanup_errors,'full_regression':False}),flush=True)
|
||||
sys.exit(0 if passed else 1)
|
||||
BIN
Binary file not shown.
+4799
File diff suppressed because it is too large
Load Diff
+328
@@ -0,0 +1,328 @@
|
||||
[
|
||||
"res://autoload/event_bus.gd",
|
||||
"res://autoload/game_clock.gd",
|
||||
"res://autoload/game_state.gd",
|
||||
"res://autoload/simulation_runtime.gd",
|
||||
"res://scenes/main/main.gd",
|
||||
"res://scenes/main/world_preview.gd",
|
||||
"res://scripts/authority/authority_service.gd",
|
||||
"res://scripts/authority/evidence.gd",
|
||||
"res://scripts/authority/heat_state.gd",
|
||||
"res://scripts/authority/incident.gd",
|
||||
"res://scripts/authority/inspection.gd",
|
||||
"res://scripts/construction/construction_job.gd",
|
||||
"res://scripts/construction/construction_service.gd",
|
||||
"res://scripts/construction/excavation_service.gd",
|
||||
"res://scripts/construction/facility_resize_preview.gd",
|
||||
"res://scripts/construction/facility_resize_routes.gd",
|
||||
"res://scripts/construction/placement_report.gd",
|
||||
"res://scripts/core/command.gd",
|
||||
"res://scripts/core/command_queue.gd",
|
||||
"res://scripts/core/command_result.gd",
|
||||
"res://scripts/core/definition_registry.gd",
|
||||
"res://scripts/core/deterministic_rng.gd",
|
||||
"res://scripts/core/domain_event.gd",
|
||||
"res://scripts/core/domain_event_stream.gd",
|
||||
"res://scripts/core/performance_budget.gd",
|
||||
"res://scripts/core/save_migration_registry.gd",
|
||||
"res://scripts/core/save_service.gd",
|
||||
"res://scripts/core/simulation_digest.gd",
|
||||
"res://scripts/core/simulation_kernel.gd",
|
||||
"res://scripts/core/simulation_snapshot.gd",
|
||||
"res://scripts/core/stable_id_generator.gd",
|
||||
"res://scripts/core/state_transaction.gd",
|
||||
"res://scripts/data/facility_catalog.gd",
|
||||
"res://scripts/data/facility_definition.gd",
|
||||
"res://scripts/data/mvp_content_catalog.gd",
|
||||
"res://scripts/defense/defense_service.gd",
|
||||
"res://scripts/economy/economy_service.gd",
|
||||
"res://scripts/economy/facility_upkeep_accrual.gd",
|
||||
"res://scripts/economy/facility_upkeep_settlement.gd",
|
||||
"res://scripts/economy/ledger_backed_resource_state.gd",
|
||||
"res://scripts/economy/ledger_entry.gd",
|
||||
"res://scripts/environment/facility_cleaning_bridge.gd",
|
||||
"res://scripts/environment/facility_cleaning_policy.gd",
|
||||
"res://scripts/environment/facility_cleanliness_service.gd",
|
||||
"res://scripts/environment/weather_timeline.gd",
|
||||
"res://scripts/events/event_action.gd",
|
||||
"res://scripts/events/event_choice.gd",
|
||||
"res://scripts/events/event_condition.gd",
|
||||
"res://scripts/events/event_definition.gd",
|
||||
"res://scripts/events/event_instance.gd",
|
||||
"res://scripts/events/event_service.gd",
|
||||
"res://scripts/facility/facility_instance.gd",
|
||||
"res://scripts/facility/facility_pricing.gd",
|
||||
"res://scripts/facility/facility_service.gd",
|
||||
"res://scripts/facility/service_instance.gd",
|
||||
"res://scripts/facility/service_request.gd",
|
||||
"res://scripts/guest/guest_definition.gd",
|
||||
"res://scripts/guest/guest_runtime.gd",
|
||||
"res://scripts/guest/guest_service.gd",
|
||||
"res://scripts/inventory/inventory_reservation.gd",
|
||||
"res://scripts/inventory/inventory_service.gd",
|
||||
"res://scripts/inventory/logistics_dispatcher.gd",
|
||||
"res://scripts/inventory/logistics_request.gd",
|
||||
"res://scripts/mana/mana_network_service.gd",
|
||||
"res://scripts/mana/mana_power_projection.gd",
|
||||
"res://scripts/mana/mana_reserve_balance.gd",
|
||||
"res://scripts/operations/operations_coordinator.gd",
|
||||
"res://scripts/progression/progression_service.gd",
|
||||
"res://scripts/relationship/original_relationship_state.gd",
|
||||
"res://scripts/relationship/placement_risk_preview_service.gd",
|
||||
"res://scripts/relationship/relationship_service.gd",
|
||||
"res://scripts/relationship/relationship_state.gd",
|
||||
"res://scripts/staff/shift_instance.gd",
|
||||
"res://scripts/staff/staff_commute_service.gd",
|
||||
"res://scripts/staff/staff_runtime.gd",
|
||||
"res://scripts/staff/staff_service.gd",
|
||||
"res://scripts/staff/staff_task.gd",
|
||||
"res://scripts/staff/task_dispatcher.gd",
|
||||
"res://scripts/supply/kitchen_production_service.gd",
|
||||
"res://scripts/supply/supply_auto_purchase_plans.gd",
|
||||
"res://scripts/supply/supply_auto_purchase_quote_plans.gd",
|
||||
"res://scripts/supply/supply_catalog.gd",
|
||||
"res://scripts/supply/supply_logistics_bridge.gd",
|
||||
"res://scripts/supply/supply_management_service.gd",
|
||||
"res://scripts/supply/supply_purchase_quote_v2.gd",
|
||||
"res://scripts/transport/elevator_service.gd",
|
||||
"res://scripts/ui/business_management_panel.gd",
|
||||
"res://scripts/ui/defense_management_panel.gd",
|
||||
"res://scripts/ui/event_log_dialog.gd",
|
||||
"res://scripts/ui/guest_observation_panel.gd",
|
||||
"res://scripts/ui/inactive_layer_rooms.gd",
|
||||
"res://scripts/ui/infirmary_room_art.gd",
|
||||
"res://scripts/ui/inn_opening_guide.gd",
|
||||
"res://scripts/ui/layer_interface_skin.gd",
|
||||
"res://scripts/ui/manual_save_slots_dialog.gd",
|
||||
"res://scripts/ui/operating_ledger_panel.gd",
|
||||
"res://scripts/ui/operation_feedback.gd",
|
||||
"res://scripts/ui/operations_camera_controls.gd",
|
||||
"res://scripts/ui/paired_bgm.gd",
|
||||
"res://scripts/ui/pixel_people.gd",
|
||||
"res://scripts/ui/pixel_tower_art.gd",
|
||||
"res://scripts/ui/pixel_tower_demo.gd",
|
||||
"res://scripts/ui/room_presentation.gd",
|
||||
"res://scripts/ui/staff_management_panel.gd",
|
||||
"res://scripts/ui/standard_room_art.gd",
|
||||
"res://scripts/ui/supply_management_panel.gd",
|
||||
"res://scripts/ui/ui_audio_feedback.gd",
|
||||
"res://scripts/ui/ui_audio_owner_shutdown.gd",
|
||||
"res://scripts/ui/ui_audio_settings_dialog.gd",
|
||||
"res://scripts/ui/visual_theme_profile.gd",
|
||||
"res://scripts/ui/world_tree_rank_dialog.gd",
|
||||
"res://scripts/world/facility_infrastructure_projector.gd",
|
||||
"res://scripts/world/legacy_stair_service.gd",
|
||||
"res://scripts/world/path_service.gd",
|
||||
"res://scripts/world/route_subslot_path_adapter.gd",
|
||||
"res://scripts/world/spatial_subslot_service.gd",
|
||||
"res://scripts/world/world_service.gd",
|
||||
"res://tests/business/test_business_closure.gd",
|
||||
"res://tests/business/test_business_operations.gd",
|
||||
"res://tests/business/test_required_kitchen.gd",
|
||||
"res://tests/environment/test_cleaning_access.gd",
|
||||
"res://tests/environment/test_facility_cleanliness.gd",
|
||||
"res://tests/environment/test_runtime_cleanliness.gd",
|
||||
"res://tests/environment/test_runtime_weather.gd",
|
||||
"res://tests/environment/test_weather_recovery.gd",
|
||||
"res://tests/environment/test_weather_timeline.gd",
|
||||
"res://tests/export/test_exported_opening.gd",
|
||||
"res://tests/fixtures/p08-02/mixed_world.gd",
|
||||
"res://tests/fixtures/p08-02/reader.gd",
|
||||
"res://tests/fixtures/p08-02/writer.gd",
|
||||
"res://tests/fixtures/p08-03/passive_placement.gd",
|
||||
"res://tests/fixtures/p08-03/placement.gd",
|
||||
"res://tests/fixtures/p23-03/diagnostic_stream.gd",
|
||||
"res://tests/fixtures/p23-03/layout_comparison.gd",
|
||||
"res://tests/fixtures/p23-03/observation.gd",
|
||||
"res://tests/fixtures/p23-03/passive_observation.gd",
|
||||
"res://tests/fixtures/p23-03/passive_os_recorder.gd",
|
||||
"res://tests/fixtures/pre_auto_purchase_runtime.gd",
|
||||
"res://tests/fixtures/pre_upkeep_runtime.gd",
|
||||
"res://tests/fixtures/required_kitchen_setup.gd",
|
||||
"res://tests/helpers/ui_audio_fixture_cleanup.gd",
|
||||
"res://tests/helpers/ui_audio_teardown.gd",
|
||||
"res://tests/mvp/test_amelia_donations.gd",
|
||||
"res://tests/mvp/test_anri_floor_pricing.gd",
|
||||
"res://tests/mvp/test_approved_free_unique_arrears.gd",
|
||||
"res://tests/mvp/test_chapel_boundaries.gd",
|
||||
"res://tests/mvp/test_chapel_service.gd",
|
||||
"res://tests/mvp/test_fine_cleaning_effect.gd",
|
||||
"res://tests/mvp/test_mvp_content_catalog.gd",
|
||||
"res://tests/mvp/test_operations_coordinator.gd",
|
||||
"res://tests/mvp/test_original_midnight_settlement.gd",
|
||||
"res://tests/mvp/test_original_room_zones.gd",
|
||||
"res://tests/mvp/test_pending_service_pricing_report.gd",
|
||||
"res://tests/mvp/test_premium_room.gd",
|
||||
"res://tests/mvp/test_premium_room_guest_flow.gd",
|
||||
"res://tests/mvp/test_progression_service.gd",
|
||||
"res://tests/mvp/test_runtime_content_progression.gd",
|
||||
"res://tests/mvp/test_runtime_mana_depletion.gd",
|
||||
"res://tests/mvp/test_runtime_operations_acceptance.gd",
|
||||
"res://tests/mvp/test_runtime_operations_integration.gd",
|
||||
"res://tests/mvp/test_runtime_upkeep.gd",
|
||||
"res://tests/mvp/test_staff_unique_contract_report.gd",
|
||||
"res://tests/mvp/test_tomari_floor_trouble.gd",
|
||||
"res://tests/mvp/test_unique_character_validation_policy.gd",
|
||||
"res://tests/mvp/test_upkeep_construction_boundaries.gd",
|
||||
"res://tests/mvp/test_upkeep_legacy_midnight.gd",
|
||||
"res://tests/mvp/test_upkeep_loss_streak.gd",
|
||||
"res://tests/performance/fixtures/linear_path_reference.gd",
|
||||
"res://tests/performance/fixtures/simulation_digest_v1_reference.gd",
|
||||
"res://tests/performance/fixtures/uncached_preview_reference.gd",
|
||||
"res://tests/performance/perf_mvp_001_harness.gd",
|
||||
"res://tests/performance/profile_production_scene.gd",
|
||||
"res://tests/performance/test_digest_performance.gd",
|
||||
"res://tests/performance/test_facility_reachability.gd",
|
||||
"res://tests/performance/test_lazy_digest.gd",
|
||||
"res://tests/performance/test_mvp_manifest_cache.gd",
|
||||
"res://tests/performance/test_path_membership.gd",
|
||||
"res://tests/performance/test_perf_mvp_001.gd",
|
||||
"res://tests/performance/test_snapshot_ownership.gd",
|
||||
"res://tests/performance/test_system_optimization.gd",
|
||||
"res://tests/performance/test_world_snapshot_cache.gd",
|
||||
"res://tests/run_tests.gd",
|
||||
"res://tests/s0/test_command_snapshot_key_order.gd",
|
||||
"res://tests/s0/test_command_transaction.gd",
|
||||
"res://tests/s0/test_definition_registry.gd",
|
||||
"res://tests/s0/test_determinism.gd",
|
||||
"res://tests/s0/test_domain_events.gd",
|
||||
"res://tests/s0/test_kernel_and_save.gd",
|
||||
"res://tests/s0/test_runtime_integration.gd",
|
||||
"res://tests/s0/test_stable_id_generator.gd",
|
||||
"res://tests/s1/test_construction_service.gd",
|
||||
"res://tests/s1/test_dimension_batch_save.gd",
|
||||
"res://tests/s1/test_excavation_service.gd",
|
||||
"res://tests/s1/test_facility_infrastructure_projector.gd",
|
||||
"res://tests/s1/test_facility_resize_preview.gd",
|
||||
"res://tests/s1/test_original_facility_dimensions.gd",
|
||||
"res://tests/s1/test_p08_combined_migration.gd",
|
||||
"res://tests/s1/test_path_congestion.gd",
|
||||
"res://tests/s1/test_path_service.gd",
|
||||
"res://tests/s1/test_path_snapshot_transit_guard.gd",
|
||||
"res://tests/s1/test_route_subslot_path_adapter.gd",
|
||||
"res://tests/s1/test_runtime_infrastructure_integration.gd",
|
||||
"res://tests/s1/test_runtime_world_construction.gd",
|
||||
"res://tests/s1/test_spatial_subslot_service.gd",
|
||||
"res://tests/s1/test_weighted_resize_runtime.gd",
|
||||
"res://tests/s1/test_world_service.gd",
|
||||
"res://tests/s2/test_economy_service.gd",
|
||||
"res://tests/s2/test_facility_pricing.gd",
|
||||
"res://tests/s2/test_facility_service.gd",
|
||||
"res://tests/s2/test_facility_upkeep_accrual.gd",
|
||||
"res://tests/s2/test_facility_upkeep_settlement.gd",
|
||||
"res://tests/s2/test_inventory_logistics.gd",
|
||||
"res://tests/s2/test_kitchen_production.gd",
|
||||
"res://tests/s2/test_ledger_backed_resources.gd",
|
||||
"res://tests/s2/test_mana_network_service.gd",
|
||||
"res://tests/s2/test_mana_power_projection.gd",
|
||||
"res://tests/s2/test_mana_reserve_balance.gd",
|
||||
"res://tests/s2/test_original_facility_parameters.gd",
|
||||
"res://tests/s2/test_runtime_operations_cycle.gd",
|
||||
"res://tests/s2/test_service_start_slots.gd",
|
||||
"res://tests/s3/test_guest_observation_restore_order.gd",
|
||||
"res://tests/s3/test_guest_service.gd",
|
||||
"res://tests/s3/test_runtime_actor_cycle.gd",
|
||||
"res://tests/s3/test_runtime_actor_hardening.gd",
|
||||
"res://tests/s3/test_runtime_path_traffic.gd",
|
||||
"res://tests/s3/test_runtime_staff_assignment.gd",
|
||||
"res://tests/s3/test_staff_payroll_operations.gd",
|
||||
"res://tests/s3/test_staff_service.gd",
|
||||
"res://tests/s4/test_original_relationship_model.gd",
|
||||
"res://tests/s4/test_original_relationship_runtime.gd",
|
||||
"res://tests/s4/test_placement_risk_preview_service.gd",
|
||||
"res://tests/s4/test_relationship_event_service.gd",
|
||||
"res://tests/s4/test_runtime_relationship_events.gd",
|
||||
"res://tests/s5/test_authority_service.gd",
|
||||
"res://tests/s5/test_defense_service.gd",
|
||||
"res://tests/s5/test_runtime_authority_cycle.gd",
|
||||
"res://tests/s5/test_runtime_defense_autonomy.gd",
|
||||
"res://tests/s5/test_runtime_defense_cycle.gd",
|
||||
"res://tests/s5/test_runtime_event_defense.gd",
|
||||
"res://tests/s6/test_performance_budget.gd",
|
||||
"res://tests/s6/test_runtime_save_lifecycle.gd",
|
||||
"res://tests/s6/test_runtime_snapshot_serialization.gd",
|
||||
"res://tests/s6/test_save_operations.gd",
|
||||
"res://tests/s6/test_save_preflight.gd",
|
||||
"res://tests/s6/test_save_recovery_preservation.gd",
|
||||
"res://tests/staff/test_dormitory_dimension_migration.gd",
|
||||
"res://tests/staff/test_dormitory_shift_cycle.gd",
|
||||
"res://tests/staff/test_rescue_elevator.gd",
|
||||
"res://tests/staff/test_shift_rush.gd",
|
||||
"res://tests/staff/test_staff_commute.gd",
|
||||
"res://tests/staff/test_staff_dormitory.gd",
|
||||
"res://tests/staff/test_staff_rescue.gd",
|
||||
"res://tests/staff/test_staff_rest.gd",
|
||||
"res://tests/staff/test_task_work_clock.gd",
|
||||
"res://tests/supply/test_mimi_purchase_quote.gd",
|
||||
"res://tests/supply/test_normal_auto_purchase_chain.gd",
|
||||
"res://tests/supply/test_normal_supply_chain.gd",
|
||||
"res://tests/supply/test_supply_auto_purchase.gd",
|
||||
"res://tests/supply/test_supply_auto_purchase_boundaries.gd",
|
||||
"res://tests/supply/test_supply_auto_purchase_destruction.gd",
|
||||
"res://tests/supply/test_supply_logistics_bridge.gd",
|
||||
"res://tests/supply/test_supply_management_service.gd",
|
||||
"res://tests/supply/test_supply_save_migration.gd",
|
||||
"res://tests/transport/test_elevator_service.gd",
|
||||
"res://tests/transport/test_runtime_build_preview.gd",
|
||||
"res://tests/transport/test_runtime_stairs.gd",
|
||||
"res://tests/transport/test_runtime_transport.gd",
|
||||
"res://tests/transport/test_runtime_transport_comparison.gd",
|
||||
"res://tests/transport/test_transport_boundaries.gd",
|
||||
"res://tests/transport/test_transport_comparison.gd",
|
||||
"res://tests/transport/test_transport_density_migration.gd",
|
||||
"res://tests/transport/test_transport_save.gd",
|
||||
"res://tests/ui/capture_main_dashboard.gd",
|
||||
"res://tests/ui/capture_pixel_tower.gd",
|
||||
"res://tests/ui/fixtures/counted_dashboard.gd",
|
||||
"res://tests/ui/fixtures/opening_restart_flow.gd",
|
||||
"res://tests/ui/fixtures/operations_os_observer.gd",
|
||||
"res://tests/ui/fixtures/selection_cross_process.gd",
|
||||
"res://tests/ui/test_actor_selection.gd",
|
||||
"res://tests/ui/test_anri_recruitment.gd",
|
||||
"res://tests/ui/test_approved_free_unique_arrears_ui.gd",
|
||||
"res://tests/ui/test_business_management.gd",
|
||||
"res://tests/ui/test_chapel_gameplay.gd",
|
||||
"res://tests/ui/test_cleaning_gameplay.gd",
|
||||
"res://tests/ui/test_dashboard_coalescing.gd",
|
||||
"res://tests/ui/test_defense_management.gd",
|
||||
"res://tests/ui/test_dimension_migration_ui.gd",
|
||||
"res://tests/ui/test_elevator_management.gd",
|
||||
"res://tests/ui/test_event_log_ui.gd",
|
||||
"res://tests/ui/test_first_operating_day.gd",
|
||||
"res://tests/ui/test_guest_decision_log.gd",
|
||||
"res://tests/ui/test_guest_observation.gd",
|
||||
"res://tests/ui/test_layer_presentation.gd",
|
||||
"res://tests/ui/test_layer_skin.gd",
|
||||
"res://tests/ui/test_main_audio_feedback.gd",
|
||||
"res://tests/ui/test_main_dashboard.gd",
|
||||
"res://tests/ui/test_opening_assignment.gd",
|
||||
"res://tests/ui/test_operations_notification.gd",
|
||||
"res://tests/ui/test_original_build_pointer.gd",
|
||||
"res://tests/ui/test_original_facility_controls.gd",
|
||||
"res://tests/ui/test_p08_normal_placement_ops.gd",
|
||||
"res://tests/ui/test_p23_life_observation.gd",
|
||||
"res://tests/ui/test_paired_bgm.gd",
|
||||
"res://tests/ui/test_pixel_tower.gd",
|
||||
"res://tests/ui/test_rank_pointer.gd",
|
||||
"res://tests/ui/test_room_presentation.gd",
|
||||
"res://tests/ui/test_selection_autosave.gd",
|
||||
"res://tests/ui/test_selection_departure.gd",
|
||||
"res://tests/ui/test_selection_lifecycle.gd",
|
||||
"res://tests/ui/test_staff_management.gd",
|
||||
"res://tests/ui/test_staff_rescue.gd",
|
||||
"res://tests/ui/test_staff_rest.gd",
|
||||
"res://tests/ui/test_stair_transport_details.gd",
|
||||
"res://tests/ui/test_supply_auto_purchase_ui.gd",
|
||||
"res://tests/ui/test_supply_management.gd",
|
||||
"res://tests/ui/test_ui_audio_feedback.gd",
|
||||
"res://tests/ui/test_ui_presentation_audio_contract.gd",
|
||||
"res://tests/ui/test_upkeep_closed_ui.gd",
|
||||
"res://tests/ui/test_upkeep_inspector.gd",
|
||||
"res://tests/ui/test_world_tree_rank.gd",
|
||||
"res://tests/world/test_elevator_topology.gd",
|
||||
"res://tests/world/test_legacy_stairs.gd",
|
||||
"res://tests/world/test_path_transit_density.gd",
|
||||
"res://tests/world/test_path_vertical_policy.gd",
|
||||
"res://tests/world/test_stair_infrastructure.gd",
|
||||
"res://tools/capture_facility_audit.gd"
|
||||
]
|
||||
+5118
File diff suppressed because it is too large
Load Diff
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-B",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"env_names": [
|
||||
"AGY_CLI_DISABLE_AUTO_UPDATE",
|
||||
"BROWSER_PROFILE_DIR",
|
||||
"BUILD_OUTPUT_DIR",
|
||||
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
|
||||
"GIT_TERMINAL_PROMPT",
|
||||
"HOME",
|
||||
"LANG",
|
||||
"LC_ALL",
|
||||
"LOGNAME",
|
||||
"MAC_CHROMIUM_TMPDIR",
|
||||
"PATH",
|
||||
"PORT",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
"PYTHONPYCACHEPREFIX",
|
||||
"TEMP",
|
||||
"TERM",
|
||||
"TEST_DATABASE_PATH",
|
||||
"TMP",
|
||||
"TMPDIR",
|
||||
"TMPPREFIX",
|
||||
"USER"
|
||||
],
|
||||
"execution": "sandbox"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
(version 1)
|
||||
(allow default)
|
||||
(deny file-write*)
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(allow file-write* (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02"))
|
||||
(allow file-write* (literal "/dev/null") (literal "/dev/tty") (literal "/dev/stdout") (literal "/dev/stderr"))
|
||||
(deny file-read* file-write* (subpath "/private/tmp/the-tree-p24-02-control-r02"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Application Support/agent-control"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.ssh"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.aws"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.azure"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.config/gcloud"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Keychains"))
|
||||
(deny file-write* (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))
|
||||
+1
-1
@@ -22,6 +22,6 @@ test_exact_nonp24_and_schema_preservation (__main__.PreservationTests) ... ok
|
||||
test_inherited_git_overrides_are_scrubbed (__main__.PreservationTests) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 22 tests in 10.241s
|
||||
Ran 22 tests in 13.739s
|
||||
|
||||
OK
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-B",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"env_names": [
|
||||
"AGY_CLI_DISABLE_AUTO_UPDATE",
|
||||
"BROWSER_PROFILE_DIR",
|
||||
"BUILD_OUTPUT_DIR",
|
||||
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
|
||||
"GIT_TERMINAL_PROMPT",
|
||||
"HOME",
|
||||
"LANG",
|
||||
"LC_ALL",
|
||||
"LOGNAME",
|
||||
"MAC_CHROMIUM_TMPDIR",
|
||||
"PATH",
|
||||
"PORT",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
"PYTHONPYCACHEPREFIX",
|
||||
"TEMP",
|
||||
"TERM",
|
||||
"TEST_DATABASE_PATH",
|
||||
"TMP",
|
||||
"TMPDIR",
|
||||
"TMPPREFIX",
|
||||
"USER"
|
||||
],
|
||||
"execution": "sandbox"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
(version 1)
|
||||
(allow default)
|
||||
(deny file-write*)
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(allow file-write* (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02"))
|
||||
(allow file-write* (literal "/dev/null") (literal "/dev/tty") (literal "/dev/stdout") (literal "/dev/stderr"))
|
||||
(deny file-read* file-write* (subpath "/private/tmp/the-tree-p24-02-control-r02"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Application Support/agent-control"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.ssh"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.aws"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.azure"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.config/gcloud"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Keychains"))
|
||||
(deny file-write* (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))
|
||||
+1
-1
@@ -12,6 +12,6 @@ test_roster_receipt_only_differing_rows_and_source_sets (__main__.TypedProducerT
|
||||
test_roster_uses_exact_legacy_validated_objects (__main__.TypedProducerTests) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 12 tests in 0.804s
|
||||
Ran 12 tests in 0.950s
|
||||
|
||||
OK
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-B",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"env_names": [
|
||||
"AGY_CLI_DISABLE_AUTO_UPDATE",
|
||||
"BROWSER_PROFILE_DIR",
|
||||
"BUILD_OUTPUT_DIR",
|
||||
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
|
||||
"GIT_TERMINAL_PROMPT",
|
||||
"HOME",
|
||||
"LANG",
|
||||
"LC_ALL",
|
||||
"LOGNAME",
|
||||
"MAC_CHROMIUM_TMPDIR",
|
||||
"PATH",
|
||||
"PORT",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
"PYTHONPYCACHEPREFIX",
|
||||
"TEMP",
|
||||
"TERM",
|
||||
"TEST_DATABASE_PATH",
|
||||
"TMP",
|
||||
"TMPDIR",
|
||||
"TMPPREFIX",
|
||||
"USER"
|
||||
],
|
||||
"execution": "sandbox"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
(version 1)
|
||||
(allow default)
|
||||
(deny file-write*)
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(allow file-write* (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02"))
|
||||
(allow file-write* (literal "/dev/null") (literal "/dev/tty") (literal "/dev/stdout") (literal "/dev/stderr"))
|
||||
(deny file-read* file-write* (subpath "/private/tmp/the-tree-p24-02-control-r02"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Application Support/agent-control"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.ssh"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.aws"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.azure"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.config/gcloud"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Keychains"))
|
||||
(deny file-write* (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))
|
||||
+1
-1
@@ -22,6 +22,6 @@ test_exact_nonp24_and_schema_preservation (__main__.PreservationTests) ... ok
|
||||
test_inherited_git_overrides_are_scrubbed (__main__.PreservationTests) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 22 tests in 10.413s
|
||||
Ran 22 tests in 13.895s
|
||||
|
||||
OK
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-B",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"env_names": [
|
||||
"AGY_CLI_DISABLE_AUTO_UPDATE",
|
||||
"BROWSER_PROFILE_DIR",
|
||||
"BUILD_OUTPUT_DIR",
|
||||
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
|
||||
"GIT_TERMINAL_PROMPT",
|
||||
"HOME",
|
||||
"LANG",
|
||||
"LC_ALL",
|
||||
"LOGNAME",
|
||||
"MAC_CHROMIUM_TMPDIR",
|
||||
"PATH",
|
||||
"PORT",
|
||||
"PYTHONDONTWRITEBYTECODE",
|
||||
"PYTHONPYCACHEPREFIX",
|
||||
"TEMP",
|
||||
"TERM",
|
||||
"TEST_DATABASE_PATH",
|
||||
"TMP",
|
||||
"TMPDIR",
|
||||
"TMPPREFIX",
|
||||
"USER"
|
||||
],
|
||||
"execution": "sandbox"
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
(version 1)
|
||||
(allow default)
|
||||
(deny file-write*)
|
||||
(deny file-read-data (require-all (subpath "/Users/korizatou114") (require-not (literal "/Users/korizatou114")) (require-not (literal "/Users/korizatou114/.local")) (require-not (literal "/Users/korizatou114/.local/share")) (require-not (literal "/Users/korizatou114/Projects")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations")) (require-not (literal "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime")) (require-not (subpath "/Users/korizatou114/.local/bin")) (require-not (subpath "/Users/korizatou114/.local/share/claude")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02")) (require-not (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement")) (require-not (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))))
|
||||
(allow file-write* (subpath "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02"))
|
||||
(allow file-write* (literal "/dev/null") (literal "/dev/tty") (literal "/dev/stdout") (literal "/dev/stderr"))
|
||||
(deny file-read* file-write* (subpath "/private/tmp/the-tree-p24-02-control-r02"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Application Support/agent-control"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.ssh"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.aws"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.azure"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/.config/gcloud"))
|
||||
(deny file-read* file-write* (subpath "/Users/korizatou114/Library/Keychains"))
|
||||
(deny file-write* (subpath "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/.git"))
|
||||
+1
-1
@@ -12,6 +12,6 @@ test_roster_receipt_only_differing_rows_and_source_sets (__main__.TypedProducerT
|
||||
test_roster_uses_exact_legacy_validated_objects (__main__.TypedProducerTests) ... ok
|
||||
|
||||
----------------------------------------------------------------------
|
||||
Ran 12 tests in 1.082s
|
||||
Ran 12 tests in 0.921s
|
||||
|
||||
OK
|
||||
+2771
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"scope": "Prospective actual Git composition, not a normal integration candidate or runtime evidence",
|
||||
"S": "78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08",
|
||||
"S": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"M": "54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"Q": "60eadb8bc839bfcb46bff41949db9c59611e3e6f",
|
||||
"T": "5dfac310b6be88b9dc4224e4b8c4b16f585d8b58",
|
||||
"Q": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"T": "1c1355608b9c53ba207ad567de38e6e6d104c8f1",
|
||||
"parents": [
|
||||
"54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08"
|
||||
"fe44f550750acbf5c510346e7cacbea2ccbdd184"
|
||||
],
|
||||
"worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01",
|
||||
"worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"conflict_paths": [
|
||||
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"scenes/main/main.gd",
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"scope": "Retired only closed clean source-only failed validator; raw failure logs/evidence retained",
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-ee04ff0c",
|
||||
"source": "78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08",
|
||||
"remote_branch": "codex/p24-02-source-78f7cba",
|
||||
"all_tracked_bytes_equal_git": true,
|
||||
"tracked_files": 3158,
|
||||
"tracked_bytes": 139584095,
|
||||
"binding_digest_sha256": "2dadaf9ce42e58250741bd9c4f703cee644784098a5379a073ad335d681bd6a2",
|
||||
"untracked_or_ignored": 0,
|
||||
"open_files": 0,
|
||||
"failure_report_retained": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/91cb28391d3f424580df2a611c1b0c5d-validation.json",
|
||||
"free_before": 2991390720,
|
||||
"free_after": 3141791744,
|
||||
"observed_interval_gain_bytes": 150401024,
|
||||
"at_unix": 1792216629.936498
|
||||
}
|
||||
+211
@@ -0,0 +1,211 @@
|
||||
{
|
||||
"scope": "Only closed source checkouts retired; all proof bytes retained and exact-SHA verified. No active worker/currentQ/engine/player/OS data removed",
|
||||
"records": [
|
||||
{
|
||||
"retired_clean_source_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-bd3a134-r01",
|
||||
"preserved_commit": "4bf9a1b80e1491d138954d218720b4bf6298d32a",
|
||||
"ref": "refs/thetree/evidence/retired-4bf9a1b80e14",
|
||||
"tracked_files": 4835,
|
||||
"tracked_bytes": 228597642,
|
||||
"all_tracked_bytes_equal_git": true,
|
||||
"binding_sha256": "b6e6e30d6459329e81b5282b8a53fde6213aed254bb926bd0cb20a0af38f3f50",
|
||||
"whole_review_material_retained": [
|
||||
{
|
||||
"path": "p24-repair4-static/manifest.json",
|
||||
"bytes": 13693,
|
||||
"sha256": "b5449004377f5eea2fbadeea91c216f527f4b38dc268895d47cc96b828f0c50c"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/prepared-source/roster.json",
|
||||
"bytes": 8031,
|
||||
"sha256": "99f2e7d0b6b62b8f97acaed848b88f7d8bca34ae6b29e3133beac9a57f698a60"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/prepared-source/all-git-blob-bindings.json",
|
||||
"bytes": 697409,
|
||||
"sha256": "33de7f8c7455a934dc079f35f2ee2e102f50c0ecb25423b61b5f75e4d7155192"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/prepared-source/source-refs.json",
|
||||
"bytes": 439180,
|
||||
"sha256": "93349a0ff62ac6355efa438a5e76949d66241ece5024f79e72c1fbd0953dc7c1"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/ROOT_REAUDITED_STATIC_PHASE_SOURCE_READY.json",
|
||||
"bytes": 19606,
|
||||
"sha256": "de19635a1cb28afb189ba579c04bc53bf62956f455b017a6d80568e814cdc984"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/CODE_ONLY_PHASE_RESULT_R02.json",
|
||||
"bytes": 1802,
|
||||
"sha256": "aad1240479936dee19b2334389d6e15e45ae31d2f4ebf4456b65de56ebd3a7bb"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/ROOT_PREPARED_HISTORICAL_EOF_LINT.txt",
|
||||
"bytes": 285,
|
||||
"sha256": "d118a1be1a88560cf4e8234ed792b9b44bff06d139d3b08d254d81a846fba6a8"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/ACTUAL_ZSH_TASK_LOCAL_TMPPREFIX_PROBE.json",
|
||||
"bytes": 771,
|
||||
"sha256": "5f1308fe265902e35e39aa2d7fbfe5a5be95b76eba4ea0b4150ae4006e35e172"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/JSON_ORDER_PHASE_RESULT_R02.json",
|
||||
"bytes": 987,
|
||||
"sha256": "32b26d65ae90d61e2624cfb088e6b52137993772be3e94280ebc47b21bce3468"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/ACTUAL_PREPARED_COMPOSED_SOURCE_BD3A134.json",
|
||||
"bytes": 3577,
|
||||
"sha256": "5a0d65a0810300d49ff5eda1812257bb20adff9e9f7dbed9b14ed923a70b2bf8"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/root-proofs/ROOT_PREPARED_REAL_MERGE_UNMERGED_STAGES.txt",
|
||||
"bytes": 1107,
|
||||
"sha256": "224ef621330cb1a96013d5c8c385e3a44bc08a0ce2764d6b2e27433791267ef0"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/stderr.log",
|
||||
"bytes": 2233,
|
||||
"sha256": "6dc0f2455ec15f7c5014edd5d5e1143f7939016f1410acbc13338bc149cf4705"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/result.json",
|
||||
"bytes": 948,
|
||||
"sha256": "426585c1b0865e3a59f705a799c18e63fd16f390f4695587d23f20c8ca9865f3"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/stdout.log",
|
||||
"bytes": 19698,
|
||||
"sha256": "a420dd9207ccd7433f679bfd439a19d6d316d5463475c3b98fa2af8de4623fc9"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/sandbox.sb",
|
||||
"bytes": 5095,
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/command.json",
|
||||
"bytes": 1492,
|
||||
"sha256": "7e8048edc90339be3e09690f1fd55ab4eb2c7cd37f38e7c9e9f22c9de5d2eaef"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/261a974d4b6345419851bbba399cf1ae/packet.txt",
|
||||
"bytes": 27806,
|
||||
"sha256": "a1edff9abb1955aa7b290df4325e865f827b4ea353083c3a1eb4f66086128290"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/stderr.log",
|
||||
"bytes": 3136,
|
||||
"sha256": "7798a0a4760429f07d69827f11d18aec29e4bd5bd9df8f0b28fcaf7ae2ca0240"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/result.json",
|
||||
"bytes": 566,
|
||||
"sha256": "0b8bee4f2f4aaf5e23b7094adc8bf7d3656d2cd2449f0ae1b46ebff3925865e4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/stdout.log",
|
||||
"bytes": 96049,
|
||||
"sha256": "9d04e2d1faf03c8b971ddae613a39c144a80fc5de040b449d9d5ad5f011425c9"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/sandbox.sb",
|
||||
"bytes": 5095,
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/command.json",
|
||||
"bytes": 1492,
|
||||
"sha256": "423e1be61eafd8c8ab8c63cbc7501999b97f5c00f2131de393450cb307b06d1b"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/dad03b83bd41486d8f5e5297e636a055/packet.txt",
|
||||
"bytes": 10408,
|
||||
"sha256": "783d62effe38f7135f9712546e6f9e1ba96d739f82786670641f26f076a22ccb"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/stderr.log",
|
||||
"bytes": 2362,
|
||||
"sha256": "a0e1a75e3facb9cf6d2fe24213e0d7b34512d75681d358612ae4de3b61f4a9cd"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/result.json",
|
||||
"bytes": 413,
|
||||
"sha256": "e1cc74c62abf7b9cdd90e95f635008b368866b23cb6a09a37ae4d220fea59fb1"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/stdout.log",
|
||||
"bytes": 35418,
|
||||
"sha256": "636eb53c74648a5065db57a52e9a5a538f10b020bbd3ad4149077bd8c52066b4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/sandbox.sb",
|
||||
"bytes": 5095,
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/command.json",
|
||||
"bytes": 1492,
|
||||
"sha256": "a66680469dd76d30f3255e380766ad1742f06dd13fe85b23a7369fc76866064c"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/2cf378d728f64bbca470f5603d3299dc/packet.txt",
|
||||
"bytes": 9194,
|
||||
"sha256": "5c216f26f20f1533da5abd1d3e130be16fe715c0d12fb9e01a6c30bb54277515"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/stderr.log",
|
||||
"bytes": 4555,
|
||||
"sha256": "3217393344a00534c1aa683b566e35e6736530bcf4b0facfa5597e597d03bb2a"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/result.json",
|
||||
"bytes": 900,
|
||||
"sha256": "3f70dc158410fa6643af4c72115ff018611b6fe54bba961851452c775abe18f7"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/stdout.log",
|
||||
"bytes": 233442,
|
||||
"sha256": "97bc112da31cb41f938373fc623481d4e10555f2d328ef2dad7e9a326cbc46c1"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/sandbox.sb",
|
||||
"bytes": 5095,
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/command.json",
|
||||
"bytes": 1492,
|
||||
"sha256": "7d773392e8c9b657c2fac15801d9d557ea35a3b14e9b8c69bb93cd91dc55ad09"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair4-static/actual-role-runs/1cde6bdddd3a4d88818d1c38103aedb8/packet.txt",
|
||||
"bytes": 28859,
|
||||
"sha256": "f3f58ce9aec5170474fc5cf9902ce2fbd2589ad575fa3c0731342f332b613808"
|
||||
}
|
||||
],
|
||||
"new_material_location": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/retained-closed-review-material/P24-02-root-composed-bd3a134-r01",
|
||||
"untracked_ignored_remaining_before_retirement": 0,
|
||||
"open_files": 0
|
||||
},
|
||||
{
|
||||
"retired_clean_source_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-4ee64a4e",
|
||||
"preserved_commit": "666c87bd7d7c961ae6d7d2ad8d52d6456c31015b",
|
||||
"ref": "refs/thetree/evidence/retired-666c87bd7d7c",
|
||||
"tracked_files": 3111,
|
||||
"tracked_bytes": 138133515,
|
||||
"all_tracked_bytes_equal_git": true,
|
||||
"binding_sha256": "a7bca6ef98b41031962d844dde3362c2a99a9607c7ec9af8cd63bedce692168d",
|
||||
"whole_review_material_retained": [],
|
||||
"new_material_location": null,
|
||||
"untracked_ignored_remaining_before_retirement": 0,
|
||||
"open_files": 0
|
||||
}
|
||||
],
|
||||
"free_before": 2886930432,
|
||||
"free_after": 3266187264,
|
||||
"observed_interval_gain_bytes": 379256832,
|
||||
"at_unix": 1792217456.3810298
|
||||
}
|
||||
+123
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"scope": "Two source-only closed validator copies, all contents equal pushed Git, original failure artifacts and evidence retained; no working/source implementation/raw proof deleted.",
|
||||
"checks": [
|
||||
{
|
||||
"run_id": "b9e14cc68eba4bd19ab56b7804f46fba",
|
||||
"source": "9641ed52def2ff8e5b0222449a4a83a1191e1d37",
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-b40f48e2",
|
||||
"pushed_source_ancestor": true,
|
||||
"clean_including_ignored": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-b40f48e2",
|
||||
"status",
|
||||
"--porcelain=v1",
|
||||
"--untracked-files=all",
|
||||
"--ignored"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"tracked_content_equal_git": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-b40f48e2",
|
||||
"diff",
|
||||
"--exit-code",
|
||||
"HEAD"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"no_open_files": {
|
||||
"argv": [
|
||||
"/usr/sbin/lsof",
|
||||
"+D",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-b40f48e2"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"original_failed_artifact_retained": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/b9e14cc68eba4bd19ab56b7804f46fba",
|
||||
"removal": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部",
|
||||
"worktree",
|
||||
"remove",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-b40f48e2"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
}
|
||||
},
|
||||
{
|
||||
"run_id": "2416481887ee40e09cda9ac86ecb4fd2",
|
||||
"source": "bd3a13405115fc9bf6c5acec55bcfef7dd15266a",
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-1c30296f",
|
||||
"pushed_source_ancestor": true,
|
||||
"clean_including_ignored": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-1c30296f",
|
||||
"status",
|
||||
"--porcelain=v1",
|
||||
"--untracked-files=all",
|
||||
"--ignored"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"tracked_content_equal_git": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-1c30296f",
|
||||
"diff",
|
||||
"--exit-code",
|
||||
"HEAD"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"no_open_files": {
|
||||
"argv": [
|
||||
"/usr/sbin/lsof",
|
||||
"+D",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-1c30296f"
|
||||
],
|
||||
"exit_code": 1,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
},
|
||||
"original_failed_artifact_retained": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/2416481887ee40e09cda9ac86ecb4fd2",
|
||||
"removal": {
|
||||
"argv": [
|
||||
"git",
|
||||
"-C",
|
||||
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部",
|
||||
"worktree",
|
||||
"remove",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-validation-1c30296f"
|
||||
],
|
||||
"exit_code": 0,
|
||||
"stdout": "",
|
||||
"stderr": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"free_before": 3105132544,
|
||||
"free_after": 3404345344,
|
||||
"observed_interval_delta": 299212800,
|
||||
"at": 1792214994.584377
|
||||
}
|
||||
+40
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"scope": "Independent limited static only; not formal Runner review or unit acceptance",
|
||||
"S": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"M": "54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"Q": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"T": "1c1355608b9c53ba207ad567de38e6e6d104c8f1",
|
||||
"result": {
|
||||
"task_id": "P24-02",
|
||||
"commit": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"status": "pass",
|
||||
"summary": "Limited independent static DELTA review of repair6. S=fe44f55, M=54cade4, Q=efd5466, T=1c13556, run in the Root prospective Q worktree. I used only Read, Grep and Glob, ran nothing and edited nothing. This is not formal acceptance: acceptance_ids=[], all 8 conditions stay unaccepted, original 30/88 and the 14 formally closed units are unchanged, and nothing here counts as Godot, native, OS, full-roster or Windows evidence. Q is not a normal integration candidate.\n\nM1 is fixed. In test_repair5.py:368-394 every PreservationTests comparison reads the pinned baseline bd3a13405115fc9bf6c5acec55bcfef7dd15266a:\n- the marker and policy JSON;\n- world_preview.gd (byte-identical);\n- the UI test (only the exact inserted block differs);\n- main.gd (baseline plus exactly the one visibility_changed connect line).\nReads go through composition.git_bytes, which strips inherited GIT_*. test_inherited_git_overrides_are_scrubbed sets invalid GIT_DIR, GIT_WORK_TREE and GIT_INDEX_FILE and still runs the whole check. No moving-HEAD baseline remains. Post-submit receipts:\n- committed S fe44f55 in P24-02-implement: test_repair5 22/22 OK (39b3e922…) and test_repair6 12/12 OK (86809742…);\n- genuine Q efd5466 in this worktree: test_repair5 22/22 OK (5c96883a…) and test_repair6 12/12 OK (054209e9…).\nAll four exited 0, and the file SHAs match SOURCE_MANIFEST (d3c8e8ea…, f4e289c8…). These are separate from the earlier uncommitted 21-pass run.\n\nM2 is fixed. In correspondence.py:106-235 the six non-OS meanings map to typed kinds: command_log, roster_controller, claude_review, composition_result, held_gestures_document and platform_document. Each kind:\n- has provenance limited to {root,S,T,source_map_sha256};\n- forbids OS keys on both the artifact and the record;\n- has a producer receipt with an exact schema (kind, identity, pid, run_id, Unix start/end, lifecycle [started,ended], canonical records_sha256) whose pid and run_id may not reuse the OS pid or session;\n- is reached through a /records/N pointer with an exact kind and meaning.\nOS meanings keep all their prior guards: /events/N, action==meaning, in-window monotonic_ns, full provenance, and the bubble, cut-in and restart checks.\n\nPer-kind checks:\n- command_log: argv, absolute cwd, its own pid, exit 0, hashed stdout and stderr, the source-map SHA, and times inside the producer's run; results must equal the exit-code list.\n- roster_controller: the checker hands correspondence the exact row objects accepted by the legacy suite-set, source-SHA and result gate (check_p24_operations_evidence.py:432-435, extended only on success). The record's results must canonically equal those rows per suite, order ignored, and each row must match source_hashes, pass verify_engine, and carry its own pid/run_id pair (no reuse, no OS identity) inside the controller interval. Receipt-only, altered, duplicate, source-mismatched and missing-validated-rows cases are rejected by tests.\n- claude_review: reviewer and run id come from the receipt; its identity and run must differ from every other typed producer; provider must be Claude with decision pass; review_sha256 binds the review; it must reference exactly the SHA set of the untyped runtime artifacts plus the roster controller, and its producer must start after all of them end.\n- composition_result: the record's result must equal the dict returned by composition.verify_composition during the same checker run, with mode integration_final. Composition is reused, not reimplemented.\n- held_gestures_document and platform_document: both bind the source map and spec, and windows_status must stay NOTRUN.\n\nStage semantics:\n- normal_validation: the final group must be passed=false with status prerequisites-only. The review and integration-final links must be exactly {status:not-yet-applicable}; anything else, or extra later artifacts, is rejected. The stage report says complete=false.\n- integration_final: requires all eight conditions, every meaning, and real review and composition records. There is no flag or waiver path.\nTests cover a positive case and relabelling, OS-provenance, lifecycle and hash negatives for each kind, and positives and negatives for both stages.\n\ncomposition.py (b2fc058b…) and world_preview.gd are byte-identical, so the scoped composition review from f725 is reused. The optional defense-test positive control was not added. The visibility_changed guard fix therefore stays source-only, and the weak behind-dialog target assertion still waits for a real runtime run.\n\nThe later gates still apply: natural upstream triggers, ordinary OS IME/save/scale/click, native bubble/render/modal proof, the exact final full roster, the whole-8 review, normal integration and final validation, and Windows.",
|
||||
"acceptance_ids": [],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "correspondence.verify_typed (composition_result) checks `composition_result == roles`. In the checker path this always holds, because composition.verify_composition (composition.py:262) returns the same roles dict it was given. The real binding is record['result'] == the verified roles, which do include C and blob_bindings. That is sound, but PROTOCOL's wording ('actual dictionary returned … including C and blob bindings') implies a separate result object. Clarify this during the whole-8 review; no change is needed for source readiness."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "The legacy final_validation_review fields (test_suite/failures/checks/full_roster) must sit on a typed artifact, in practice roster_controller (or command_log), and be listed in final_validation_review.artifact_ids. An untyped artifact would need OS pid/session provenance or would be rejected as unused, and a separate list-valued rows artifact (the string-reference path at checker:389) is rejected by verify ('artifact object required'). The unit tests check legacy validation and correspondence.verify separately. No end-to-end _verify_evidence positive test runs one index through both. Add one when Root builds the real index schema."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "The claude_review timing check requires real ended_unix_ns on every untyped runtime artifact (OS receipt and trace). No game-side producer emits it today (no .gd source writes it), so the runtime harness must record the artifact end time when it writes the artifact, not insert it later. PROTOCOL.md documents this; it is a future harness obligation, not a code defect."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "A typed artifact's records array can contain extra records that no coverage link points to. records_sha256 binds them, but they are never checked for meaning. This is minor hardening: consider requiring every typed record to be covered."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "Status files are stale relative to the submitted commit. The committed repair6 STATUS.json and SOURCE_MANIFEST.json describe 'uncommitted worker bytes' on 78f7cba and list the S/Q re-runs as NOTRUN. A file committed in S cannot name S's own commit, and Root's REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json now records the actual S/Q runs (all exit 0). Keep that Root record as the authoritative post-submit pin, and do not cite the worker STATUS as post-submit proof."
|
||||
}
|
||||
]
|
||||
},
|
||||
"artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/3cd228580842457e85619910491e37cf",
|
||||
"all8_accepted": false,
|
||||
"formal_review_gate": false,
|
||||
"ended": 1792217441.629558
|
||||
}
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"rows": [
|
||||
{
|
||||
"stage": "submitted_S_test_repair5",
|
||||
"actual_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"actual_commit": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"actual_artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/39b3e92282ff47a0a7aa52a5dbdc35e8",
|
||||
"actual_exit_code": 0,
|
||||
"test": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py",
|
||||
"source_sha256": "d3c8e8ea95a1b8e1d651a7af0126336e9afdd097d4bc7f298217779ecfc4b409",
|
||||
"native": false,
|
||||
"full_roster": false,
|
||||
"formal_validation": false
|
||||
},
|
||||
{
|
||||
"stage": "submitted_S_test_repair6",
|
||||
"actual_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"actual_commit": "fe44f550750acbf5c510346e7cacbea2ccbdd184",
|
||||
"actual_artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/868097425b0c4706985846f0697bfee3",
|
||||
"actual_exit_code": 0,
|
||||
"test": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py",
|
||||
"source_sha256": "f4e289c8a1056d12c9d5a63c4283e7bc00eb49782a897f82c339ba0b4d9292c3",
|
||||
"native": false,
|
||||
"full_roster": false,
|
||||
"formal_validation": false
|
||||
},
|
||||
{
|
||||
"stage": "prepared_Q_test_repair5",
|
||||
"actual_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"actual_commit": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"actual_artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/5c96883a41e24ce39bb69c70d9dab9d1",
|
||||
"actual_exit_code": 0,
|
||||
"test": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py",
|
||||
"source_sha256": "d3c8e8ea95a1b8e1d651a7af0126336e9afdd097d4bc7f298217779ecfc4b409",
|
||||
"native": false,
|
||||
"full_roster": false,
|
||||
"formal_validation": false
|
||||
},
|
||||
{
|
||||
"stage": "prepared_Q_test_repair6",
|
||||
"actual_checkout": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01",
|
||||
"actual_commit": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"actual_artifact": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/054209e9e7394f089ad6fb4f693ec824",
|
||||
"actual_exit_code": 0,
|
||||
"test": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py",
|
||||
"source_sha256": "f4e289c8a1056d12c9d5a63c4283e7bc00eb49782a897f82c339ba0b4d9292c3",
|
||||
"native": false,
|
||||
"full_roster": false,
|
||||
"formal_validation": false
|
||||
}
|
||||
],
|
||||
"all8_accepted": false
|
||||
}
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
{
|
||||
"scope": "Exact whole review-material move, no evidence bytes deleted; Q must be clean for actual native guard",
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-fe44f55-r01/.review-material",
|
||||
"new": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/retained-current-review-material/p24-repair6-static",
|
||||
"files": [
|
||||
{
|
||||
"path": "p24-repair6-static/manifest.json",
|
||||
"sha256": "1a65c26b18cdaa6a8a1138b8aa1f35ccd4ff2509171da2c1c49fe0230a037ef9"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/root/REPAIR6_CODE_PHASE_RESULT.json",
|
||||
"sha256": "d8d3b350347cdc69059101aae1948f22e5f696075a27962aa253d9605723fe7c"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/root/REPAIR6_POST_SUBMIT_REPRODUCIBILITY.json",
|
||||
"sha256": "5523468bfe0b19cb60333863579f2f48e18f47826c841a83b616cdf89b8d0514"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/root/ACTUAL_REPAIR6_PREPARED_COMPOSITION.json",
|
||||
"sha256": "8359321e0bbcf3490e5d31f4bbdbecc7aabb6545454634b423a3c8199d4e7341"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/root/ROOT_REPAIR6_LOCAL_PROOF_REAUDIT.json",
|
||||
"sha256": "1bd8612b84a792dd49222342790795820bdc5b2ac70bcd9aa436bd922b9ec6f9"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/root/REPAIR6_CODE_PHASE_STARTED.json",
|
||||
"sha256": "b9ca37bb6161eb37ac51b018535cd1db1e7142721838b871ebf8ceb5aee9834e"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/result.json",
|
||||
"sha256": "afec8969aa1a0a2338504566092493313c04c9eabea25412411de60f5e657a3f"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/stdout.log",
|
||||
"sha256": "73ce2f7b317c6ce9dc2e6d224e5108550e31bc6ea4c459aa9327e3374f8e199f"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/sandbox.sb",
|
||||
"sha256": "82aaea232b1c988582f5695263444f00f5c9e39ce05e71496566d731112ae709"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/command.json",
|
||||
"sha256": "ceeb13991ce637b6d0cb4f1c2206c4b105934887b2bb82549d3aa5e98222944d"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/f725571e5b46473ea04a90424a404bd5/packet.txt",
|
||||
"sha256": "bae2c7759d01ae8db80c923414a865bd81a8c5f668b8a0fb3a9857aa74a7d328"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/stderr.log",
|
||||
"sha256": "8d8261c02e8bfee16ef2928970290977fcb6bb7ece1f25c6be023348a798e6fb"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/result.json",
|
||||
"sha256": "b0a118430ddef2664eb9f3e59771141ab3bfb7afd57f31be7b7abf6c9d1873f6"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/stdout.log",
|
||||
"sha256": "22aaabf0cdec1cb691647c53b6cf93454fd6e9a9ac2e82fb49fb04957ab7f234"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/sandbox.sb",
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/command.json",
|
||||
"sha256": "46ad17f57bf2bfc081f412698e5e6fe5650cf9287ea83adb911d3ed67be288c4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/800827bed4da4b54bc154524825af70d/packet.txt",
|
||||
"sha256": "197ca90b0076b92a9b53874e735718705b21523ca3a054f2436432dbe3539de5"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/result.json",
|
||||
"sha256": "89d0df90b1c6e703ecdcedfe12d23121a91f1a0065a787aa522634fb4c3102b8"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/stdout.log",
|
||||
"sha256": "95bdbba0b4ce105b4c468a7c7a7ddec7f654c630b267485b190626947459bf95"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/sandbox.sb",
|
||||
"sha256": "d5ebe5047e0fb88085ea645e41e7446d5e3c8f582f60c164bad44060bc51239d"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/command.json",
|
||||
"sha256": "04245f80296bae23d64a1387cd9ae873b98b2bf804c6a3727c9fc59d811170c4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-runs/94192c938a254a97942fa66b1857baeb/packet.txt",
|
||||
"sha256": "d6012c5f3bf5cc09624c9145d46b5ebb1b32465e1c4cd0a80b07134cdf8b5a1a"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair5/stderr.log",
|
||||
"sha256": "1d68ecb3a0e174b0ae8221e6d80bc8a0939280c1baeb79d3ed1b94316c1b3a57"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair5/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair5/sandbox.sb",
|
||||
"sha256": "66b4fafca85a17f76406a3818ea9427239f5871feb0f600bacd8368ba03dad53"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair5/command.json",
|
||||
"sha256": "2b504fde7f1590a8af079c03465b76bf2cf2ab316e8a6ed40c3d7f87e0bd91eb"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair5/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair5/stderr.log",
|
||||
"sha256": "bb3b5fdf49ec01d24ae52400e32a5eb91ba51eb58bf3c85598c1e60ddeb671e1"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair5/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair5/sandbox.sb",
|
||||
"sha256": "651c50e4ebd5dd4e6ecb9ca93ea847a5e27c87075781c2e8f839520daaa583af"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair5/command.json",
|
||||
"sha256": "d428416c41b5064f4e664177ae4606f8f92b7c71d35df4ca33f5b45305552841"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair5/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair6/stderr.log",
|
||||
"sha256": "dac53b4524b48e9f22d29bee6d7fe40b5ac9941e14b0ad4363940091faea1806"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair6/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair6/sandbox.sb",
|
||||
"sha256": "66b4fafca85a17f76406a3818ea9427239f5871feb0f600bacd8368ba03dad53"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair6/command.json",
|
||||
"sha256": "b85851c72cdcde8a5c504b865429a9c9dc5793fdaa3aa12e3f40d31e4e36e7dc"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/submitted_S_test_repair6/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair6/stderr.log",
|
||||
"sha256": "eb4ebd4b4f3ae4ba5711b2620070d3acab28fdf8aac8c4d80f45a3c48f32ad5a"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair6/stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair6/sandbox.sb",
|
||||
"sha256": "651c50e4ebd5dd4e6ecb9ca93ea847a5e27c87075781c2e8f839520daaa583af"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair6/command.json",
|
||||
"sha256": "9db4ffe5485940be82461c56732f2c1c9184be3fa76ebc2299a9f2e0b63dd87f"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair6-static/actual-post-submit/prepared_Q_test_repair6/packet.txt",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
]
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"prelaunch_failure": "Root actual prerequisite import generated an untracked Python cache; no Godot/native started",
|
||||
"moved_cache_bytes_preserved": [
|
||||
{
|
||||
"path": "run_all_tests.cpython-312.pyc",
|
||||
"sha256": "fe81baaade390cf2f131d9102c3834509650accbae2a30bc4b044c6749ca63fa"
|
||||
}
|
||||
],
|
||||
"destination": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/root-generated-cache-retained/fe44-q-tools",
|
||||
"actualQ": "efd5466e45a8977057a63d27e0c477f99a8385f9",
|
||||
"clean_Q_after": true,
|
||||
"product_source_changes": 0,
|
||||
"tracked_derived_cache_in_frozen_S_from_prior_Root_import": [
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/__pycache__/composition.cpython-312.pyc"
|
||||
],
|
||||
"disposition": "Keep frozen source/version honest; tracked Root-generated derived cache is not selected game/source_refs and is cleanup-only housekeeping for next actual source batch, not an acceptance blocker. Every future Root interpreter uses -B/PYTHONDONTWRITEBYTECODE. Do not amend or relabel this S/Q."
|
||||
}
|
||||
+614
@@ -0,0 +1,614 @@
|
||||
{
|
||||
"scope": "Actual Root source/local primary-output re-audit only; not all8 acceptance",
|
||||
"actual_run": "/Users/korizatou114/Library/Application Support/agent-control/the-tree-p24-02-operations/runs/800827bed4da4b54bc154524825af70d",
|
||||
"source_before_submit": "78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08",
|
||||
"all_file_bindings": [
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/PROTOCOL.md",
|
||||
"bytes": 6909,
|
||||
"sha256": "5957906580486513ce1569985903396d8c878f3ccb95188292d7ccf10972d14b",
|
||||
"git_blob_sha1": "638b416713b4337ce37e78e4b6b2564360f89e8f"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py",
|
||||
"bytes": 22489,
|
||||
"sha256": "19b56e0edf74ffce0e2d62028c4c3c8bf3ed4304fa3a6c64b58ff46f2df45099",
|
||||
"git_blob_sha1": "62fea34b77926c0fe13703843a73668cc962ceca"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py",
|
||||
"bytes": 25962,
|
||||
"sha256": "d3c8e8ea95a1b8e1d651a7af0126336e9afdd097d4bc7f298217779ecfc4b409",
|
||||
"git_blob_sha1": "10bee7082c38ae7d337e170f42865f70975147a5"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/LOCAL_COMMAND_RESULTS.json",
|
||||
"bytes": 17465,
|
||||
"sha256": "a0f3a59b641c09a0df71932eb86bb6af6a6011977a3d96eb1a70ad2629869929",
|
||||
"git_blob_sha1": "243ca32d9ae92bea53fd53832e9708acd988ae68"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/PRESERVATION_AND_CONTEXT.json",
|
||||
"bytes": 8077,
|
||||
"sha256": "edd211d6a107e4998caaa879a1426ba40a3b84e0243eeda0ca597d46133d4178",
|
||||
"git_blob_sha1": "90730bd7ef5f8336a6bfa0eaa840e71631bc10ec"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/PROTOCOL.md",
|
||||
"bytes": 8937,
|
||||
"sha256": "6f315d6e73d4526727d26a9d69c29dd222ead2c1499da06e4f6efaa2fef84a56",
|
||||
"git_blob_sha1": "d1f35a0806ce7d633b5db91fa55b232ff016cca3"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/STATUS.json",
|
||||
"bytes": 5364,
|
||||
"sha256": "2f557bb3f965e1957ae87b2003cc75be03f06c4a24d503b85ae8748882948ea4",
|
||||
"git_blob_sha1": "28b7bc851f7476b1a49afdbb95fb922c7c2e5b43"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check_final.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check_final.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import.stdout.log",
|
||||
"bytes": 121,
|
||||
"sha256": "227e4f4314d035bbceb5c19e6729cbd2a562d41fe4e619fc9b43ef06d585bbd8",
|
||||
"git_blob_sha1": "880d13f6b8240144f13f6d72dd9076939cc575a9"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import_final.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import_final.stdout.log",
|
||||
"bytes": 121,
|
||||
"sha256": "227e4f4314d035bbceb5c19e6729cbd2a562d41fe4e619fc9b43ef06d585bbd8",
|
||||
"git_blob_sha1": "880d13f6b8240144f13f6d72dd9076939cc575a9"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence.stderr.log",
|
||||
"bytes": 118,
|
||||
"sha256": "7085270e8aa6835668d4bdf5b0cf911151fd73a0de1734e700517d2d99471299",
|
||||
"git_blob_sha1": "4dad6858c0bdc83821363c91e49760f29513596a"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence.stdout.log",
|
||||
"bytes": 87,
|
||||
"sha256": "99c1064974aee51d8216bcdf4b06bb23455486d0c33010f83c48b590e00d4269",
|
||||
"git_blob_sha1": "a39487f1ca9b0802793e09b7fd7b450ab31d8920"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence_final.stderr.log",
|
||||
"bytes": 118,
|
||||
"sha256": "7085270e8aa6835668d4bdf5b0cf911151fd73a0de1734e700517d2d99471299",
|
||||
"git_blob_sha1": "4dad6858c0bdc83821363c91e49760f29513596a"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence_final.stdout.log",
|
||||
"bytes": 87,
|
||||
"sha256": "99c1064974aee51d8216bcdf4b06bb23455486d0c33010f83c48b590e00d4269",
|
||||
"git_blob_sha1": "a39487f1ca9b0802793e09b7fd7b450ab31d8920"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile_final.stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile_final.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests.stderr.log",
|
||||
"bytes": 618,
|
||||
"sha256": "3feee74bcfd21a227b7a9927fdda5eef8ae23efb890c97495630705fa07ec3d5",
|
||||
"git_blob_sha1": "8e6170ce10bcfa9f1c531b30eb678cf2ce371b17"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests_final.stderr.log",
|
||||
"bytes": 618,
|
||||
"sha256": "0adb30a92012d8b4619f01e069fc0f56ddc45daacc8c3b212a63fa832cf0b412",
|
||||
"git_blob_sha1": "1cfb9aee720ec6a2339019eb5cb770eb6b52796b"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests_final.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests.stderr.log",
|
||||
"bytes": 1718,
|
||||
"sha256": "024c7b22e820ff22be9d56e5847fc3a5d8de623cf779bb9dd17944876d8339ce",
|
||||
"git_blob_sha1": "adb56f4847071456bd9ef6fbe0c3b598bcc0ed97"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests_final.stderr.log",
|
||||
"bytes": 1718,
|
||||
"sha256": "493a9af9fad2232faff405fe4c980b9f2d16aed498bd3050ee113033c00ebbb6",
|
||||
"git_blob_sha1": "07c6e7a905be522e3e3b2c8085059f139fefdfa4"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests_final.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests.stderr.log",
|
||||
"bytes": 1172,
|
||||
"sha256": "776bc53636215fefb415624b88a625905ceb46f32685859871e4c0f4bc99671b",
|
||||
"git_blob_sha1": "28260c3efb2fe539f96c980317889269e4538336"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests_final.stderr.log",
|
||||
"bytes": 1172,
|
||||
"sha256": "caa40f0804691880e2d4a6eb538b39349b0c7c1f8b1ffd675a0166b274057904",
|
||||
"git_blob_sha1": "3c69fbbfd0c42493575cd87f8227dd789595526a"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests_final.stdout.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"git_blob_sha1": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py",
|
||||
"bytes": 11168,
|
||||
"sha256": "f4e289c8a1056d12c9d5a63c4283e7bc00eb49782a897f82c339ba0b4d9292c3",
|
||||
"git_blob_sha1": "da0840cd0931e185841443dd99c285a2a9e0346d"
|
||||
},
|
||||
{
|
||||
"path": "tools/check_p24_operations_evidence.py",
|
||||
"bytes": 40557,
|
||||
"sha256": "6d97a687a45f177d0c8b999436afddcf1d1e399e56bcc0ea352e74b17bd92ca3",
|
||||
"git_blob_sha1": "a526eda4f58ae4a5cb04aed0b81afa166be6d138"
|
||||
}
|
||||
],
|
||||
"actual_primary_command_event": {
|
||||
"type": "item.completed",
|
||||
"item": {
|
||||
"id": "item_23",
|
||||
"type": "command_execution",
|
||||
"command": "/bin/zsh -lc 'TMPPREFIX=\"$TMPDIR/p24-zsh\" PYTHONPYCACHEPREFIX=\"$TMPDIR/p24-phase-pyc\" python3 - <<'\"'PY'\nimport hashlib,json,os,subprocess,time\nfrom pathlib import Path\nroot=Path.cwd(); out=root/'docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017'; path=out/'LOCAL_COMMAND_RESULTS.json'; result=json.loads(path.read_text()); result['earlier_commands']=result['commands']; result['commands']=[]\nsource_files=['tools/check_p24_operations_evidence.py','docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py','docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py',str((out/'test_repair6.py').relative_to(root))]\nresult['tested_source_sha256']={p:hashlib.sha256((root/p).read_bytes()).hexdigest() for p in source_files}\nfor previous in result['earlier_commands']:\n name=previous['name']; start=time.time_ns(); p=subprocess.run(previous['argv'],cwd=root,capture_output=True,env=os.environ.copy()); end=time.time_ns(); logs={}\n for stream,raw in [('stdout',p.stdout),('stderr',p.stderr)]:\n log=out/(name+'_final.'+stream+'.log');log.write_bytes(raw);logs[stream]={'path':str(log.relative_to(root)),'sha256':hashlib.sha256(raw).hexdigest()}\n result['commands'].append(dict(previous,started_unix_ns=start,ended_unix_ns=end,exit_code=p.returncode,logs=logs));print(name,p.returncode,flush=True)\npath.write_text(json.dumps(result,indent=2)+'\\\\n')\nassert all(r['exit_code']==r['expected_exit_code'] for r in result['commands'])\nPY\"",
|
||||
"aggregated_output": "py_compile 0\nimport 0\nrepair5_tests 0\nrepair6_tests 0\nrepair4_roster_tests 0\nmissing_real_evidence 1\ndiff_check 0\n",
|
||||
"exit_code": 0,
|
||||
"status": "completed"
|
||||
}
|
||||
},
|
||||
"local_final_results": {
|
||||
"scope": "SOURCE-ONLY actual worker checks; synthetic TEST-ONLY fixtures, no acceptance/runtime proof",
|
||||
"existing_HEAD": "78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08",
|
||||
"environment": {
|
||||
"TMPDIR": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/tmp",
|
||||
"TMPPREFIX": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/tmp/p24-zsh",
|
||||
"PYTHONPYCACHEPREFIX": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/P24-02/tmp/p24-phase-pyc"
|
||||
},
|
||||
"commands": [
|
||||
{
|
||||
"name": "py_compile",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-m",
|
||||
"py_compile",
|
||||
"tools/check_p24_operations_evidence.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217070419420000,
|
||||
"ended_unix_ns": 1792217070498310000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile_final.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile_final.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "import",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-c",
|
||||
"import importlib.util; s=importlib.util.spec_from_file_location('p24','tools/check_p24_operations_evidence.py'); m=importlib.util.module_from_spec(s); s.loader.exec_module(m); print('stdlib checker import OK; ROOT='+str(m.ROOT))"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217070498569000,
|
||||
"ended_unix_ns": 1792217070615361000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import_final.stdout.log",
|
||||
"sha256": "227e4f4314d035bbceb5c19e6729cbd2a562d41fe4e619fc9b43ef06d585bbd8"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import_final.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair5_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217070615651000,
|
||||
"ended_unix_ns": 1792217081062430000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests_final.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests_final.stderr.log",
|
||||
"sha256": "493a9af9fad2232faff405fe4c980b9f2d16aed498bd3050ee113033c00ebbb6"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair6_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217081063000000,
|
||||
"ended_unix_ns": 1792217082071978000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests_final.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests_final.stderr.log",
|
||||
"sha256": "caa40f0804691880e2d4a6eb538b39349b0c7c1f8b1ffd675a0166b274057904"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair4_roster_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217082072276000,
|
||||
"ended_unix_ns": 1792217082723977000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests_final.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests_final.stderr.log",
|
||||
"sha256": "0adb30a92012d8b4619f01e069fc0f56ddc45daacc8c3b212a63fa832cf0b412"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "missing_real_evidence",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"tools/check_p24_operations_evidence.py",
|
||||
"--verify-only"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217082724279000,
|
||||
"ended_unix_ns": 1792217082863893000,
|
||||
"exit_code": 1,
|
||||
"expected_exit_code": 1,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence_final.stdout.log",
|
||||
"sha256": "99c1064974aee51d8216bcdf4b06bb23455486d0c33010f83c48b590e00d4269"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence_final.stderr.log",
|
||||
"sha256": "7085270e8aa6835668d4bdf5b0cf911151fd73a0de1734e700517d2d99471299"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff_check",
|
||||
"argv": [
|
||||
"git",
|
||||
"diff",
|
||||
"--check"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217082864195000,
|
||||
"ended_unix_ns": 1792217082886605000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check_final.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check_final.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"earlier_commands": [
|
||||
{
|
||||
"name": "py_compile",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-m",
|
||||
"py_compile",
|
||||
"tools/check_p24_operations_evidence.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217025324921000,
|
||||
"ended_unix_ns": 1792217025409162000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/py_compile.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "import",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"-c",
|
||||
"import importlib.util; s=importlib.util.spec_from_file_location('p24','tools/check_p24_operations_evidence.py'); m=importlib.util.module_from_spec(s); s.loader.exec_module(m); print('stdlib checker import OK; ROOT='+str(m.ROOT))"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217025409418000,
|
||||
"ended_unix_ns": 1792217025528235000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import.stdout.log",
|
||||
"sha256": "227e4f4314d035bbceb5c19e6729cbd2a562d41fe4e619fc9b43ef06d585bbd8"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/import.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair5_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217025528551000,
|
||||
"ended_unix_ns": 1792217036154558000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests.stderr.log",
|
||||
"sha256": "024c7b22e820ff22be9d56e5847fc3a5d8de623cf779bb9dd17944876d8339ce"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair6_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217036155059000,
|
||||
"ended_unix_ns": 1792217037444081000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests.stderr.log",
|
||||
"sha256": "776bc53636215fefb415624b88a625905ceb46f32685859871e4c0f4bc99671b"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "repair4_roster_tests",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement/docs/plans/original-completion-2026-10-02/execution/p24-02/repair4/test_checker_roster_head.py"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217037444461000,
|
||||
"ended_unix_ns": 1792217038222625000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests.stderr.log",
|
||||
"sha256": "3feee74bcfd21a227b7a9927fdda5eef8ae23efb890c97495630705fa07ec3d5"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "missing_real_evidence",
|
||||
"argv": [
|
||||
"/Applications/Xcode.app/Contents/Developer/usr/bin/python3",
|
||||
"tools/check_p24_operations_evidence.py",
|
||||
"--verify-only"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217038222937000,
|
||||
"ended_unix_ns": 1792217038393099000,
|
||||
"exit_code": 1,
|
||||
"expected_exit_code": 1,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence.stdout.log",
|
||||
"sha256": "99c1064974aee51d8216bcdf4b06bb23455486d0c33010f83c48b590e00d4269"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/missing_real_evidence.stderr.log",
|
||||
"sha256": "7085270e8aa6835668d4bdf5b0cf911151fd73a0de1734e700517d2d99471299"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "diff_check",
|
||||
"argv": [
|
||||
"git",
|
||||
"diff",
|
||||
"--check"
|
||||
],
|
||||
"cwd": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-implement",
|
||||
"started_unix_ns": 1792217038393493000,
|
||||
"ended_unix_ns": 1792217038424058000,
|
||||
"exit_code": 0,
|
||||
"expected_exit_code": 0,
|
||||
"logs": {
|
||||
"stdout": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check.stdout.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"stderr": {
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/diff_check.stderr.log",
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"tested_source_sha256": {
|
||||
"tools/check_p24_operations_evidence.py": "6d97a687a45f177d0c8b999436afddcf1d1e399e56bcc0ea352e74b17bd92ca3",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py": "19b56e0edf74ffce0e2d62028c4c3c8bf3ed4304fa3a6c64b58ff46f2df45099",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py": "d3c8e8ea95a1b8e1d651a7af0126336e9afdd097d4bc7f298217779ecfc4b409",
|
||||
"docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/test_repair6.py": "f4e289c8a1056d12c9d5a63c4283e7bc00eb49782a897f82c339ba0b4d9292c3"
|
||||
}
|
||||
},
|
||||
"later_commands": [
|
||||
{
|
||||
"id": "item_24",
|
||||
"type": "command_execution",
|
||||
"command": "/bin/zsh -lc 'TMPPREFIX=\"$TMPDIR/p24-zsh\" PYTHONPYCACHEPREFIX=\"$TMPDIR/p24-phase-pyc\" python3 - <<'\"'PY'\nimport hashlib,json,os,subprocess\nfrom pathlib import Path\nroot=Path.cwd(); base=root/'docs/plans/original-completion-2026-10-02/execution/p24-02'; out=base/'source-ready-repair6-20261017'; env={k:v for k,v in os.environ.items() if not k.startswith('GIT_')}\ndef git(*args): return subprocess.check_output(['git',*args],env=env)\nhead=git('rev-parse','HEAD').decode().strip(); assert head=='78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08'\nallowed={str((base/'source-ready-repair5-20261017'/name).relative_to(root)) for name in ('PROTOCOL.md','test_repair5.py','correspondence.py')}|{'tools/check_p24_operations_evidence.py'}\nchanged=set(git('diff','--name-only').decode().splitlines()); assert changed<=allowed,changed-allowed\ncontext=base/'root-repair6-context-20261017'; refs=[]\nfor row in json.loads((context/'MANIFEST.json').read_text()):\n raw=(context/row['path']).read_bytes(); digest=hashlib.sha256(raw).hexdigest(); assert digest==row['sha256'] and len(raw)==row['bytes']\n refs.append({'path':str((context/row['path']).relative_to(root)),'sha256':digest})\nprotected=[]\npaths=git('ls-tree','-r','--name-only',head,str((base/'repair4').relative_to(root)),str((base/'source-ready-repair5-20261017').relative_to(root))).decode().splitlines()\npaths+=['scenes/main/main.gd','scenes/main/world_preview.gd','tests/ui/test_operations_notification.gd','tools/regression/suite-policy.json','docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json']\nfor name in paths:\n if name in allowed: continue\n raw=(root/name).read_bytes(); assert raw==git('show',head+':'+name),name\n protected.append({'path':name,'sha256':hashlib.sha256(raw).hexdigest(),'identical_to':head})\nassert (root/'scenes/main/world_preview.gd').read_bytes()==git('show','bd3a13405115fc9bf6c5acec55bcfef7dd15266a:scenes/main/world_preview.gd')\n(out/'PRESERVATION_AND_CONTEXT.json').write_text(json.dumps({'scope':'read-only byte checks, not runtime or acceptance','HEAD':head,'changed_tracked_files':sorted(changed),'root_context_manifest_matches':refs,'protected_tracked_files':protected,'world_preview_identical_to_pinned_baseline':True},indent=2)+'\\\\n')\nprint('Context hashes and',len(protected),'protected tracked files verified; HEAD unchanged; only four allowed tracked files modified.')\nPY\"",
|
||||
"aggregated_output": "Context hashes and 21 protected tracked files verified; HEAD unchanged; only four allowed tracked files modified.\n",
|
||||
"exit_code": 0,
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "item_25",
|
||||
"type": "command_execution",
|
||||
"command": "/bin/zsh -lc 'tail -n 5 docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/{repair5_tests_final.stderr.log,repair6_tests_final.stderr.log,repair4_roster_tests_final.stderr.log}; git status --short'",
|
||||
"aggregated_output": "==> docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair5_tests_final.stderr.log <==\n\n----------------------------------------------------------------------\nRan 22 tests in 10.241s\n\nOK\n\n==> docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair6_tests_final.stderr.log <==\n\n----------------------------------------------------------------------\nRan 12 tests in 0.804s\n\nOK\n\n==> docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/repair4_roster_tests_final.stderr.log <==\n\n----------------------------------------------------------------------\nRan 9 tests in 0.455s\n\nOK\n M docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/PROTOCOL.md\n M docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/correspondence.py\n M docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/test_repair5.py\n M tools/check_p24_operations_evidence.py\n?? docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair6-context-20261017/\n?? docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair5-20261017/__pycache__/\n?? docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair6-20261017/\n",
|
||||
"exit_code": 0,
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "item_27",
|
||||
"type": "command_execution",
|
||||
"command": "/bin/zsh -lc 'TMPPREFIX=\"$TMPDIR/p24-zsh\" PYTHONPYCACHEPREFIX=\"$TMPDIR/p24-phase-pyc\" python3 - <<'\"'PY'\nimport hashlib,json,os,subprocess\nfrom pathlib import Path\nroot=Path.cwd(); base=root/'docs/plans/original-completion-2026-10-02/execution/p24-02'; out=base/'source-ready-repair6-20261017'; old=base/'source-ready-repair5-20261017'\nstatus=json.loads((old/'STATUS.json').read_text())\nstatus.update(source='78f7cba7a9fb5e5dcb144758e1a86fe63b3d7d08',phase='non-UI source/local repair6; uncommitted worker bytes',status='SOURCE-READY / runtime NOTRUN',acceptance_ids=[],native_runs=0,os_runs=0,full_roster_runs=0,game_completion_credit=0)\nstatus.pop('optional4',None)\nstatus['fixed_findings']={'M1':'Pinned all preservation baseline reads to bd3a134; composition.git_bytes scrubs inherited GIT_*; added override test. Current worker check only.','M2':'Typed non-OS artifacts and actual producer receipts; canonical full-row equality to the legacy-validated roster objects, exact suite/source hashes and per-row engine/process checks; explicit normal/final applicability and whole-eight guards.'}\nstatus['local_checks']={'py_compile_exit':0,'python_import_exit':0,'repair5_stdlib_git_tests':22,'repair6_stdlib_tests':12,'preserved_roster_head_tests':9,'total_tests':43,'all_test_exits':0,'diff_check_exit':0,'missing_real_evidence_exit':1,'raw_results':'LOCAL_COMMAND_RESULTS.json','source_hashes':'SOURCE_MANIFEST.json','preservation_and_root_context':'PRESERVATION_AND_CONTEXT.json','actual_new_S_rerun':'NOTRUN; Root-owned after normal submit','actual_new_Q_rerun':'NOTRUN; Root-owned before heavy/native gates'}\nstatus['historical_proof']='Repair5 raw logs, manifests and STATUS are unchanged old-source history; not proof for these repair6 bytes.'\nstatus['preserved']='composition.py, world_preview, main.gd, UI test, marker/policy and all repair4 files unchanged. No marker/policy rebind was needed.'\nstatus['deferred_low_findings']='Optional defense positive control and unrelated low cleanup deferred; no new interaction.'\nstatus['stage_applicability']={'normal_validation':{'source_runtime_os_roster':'required actual prerequisites; not fulfilled by worker unit tests','independent_claude_runtime_review':'not-yet-applicable','current_main_integration_final':'not-yet-applicable','complete':False},'integration_final':'Every original condition and meaning required, including actual typed independent runtime review and composition result. No boolean substitute, waiver or partial credit.'}\nstatus['root_next_gate']='Verify this local proof; normal submit; rerun targeted stdlib tests at actual committed S and actual Q; independent limited Opus review; later import/affected, native/OS, exact-final full roster, independent whole-eight runtime review, normal integration and final validation.'\nstatus['conditions']['final_validation_review']['gap']='Only worker stdlib/compile/import checks passed. Actual post-submit S/Q reruns and independent limited source review are NOTRUN. Actual import/affected game tests, native/OS collection, exact-final full roster, whole-eight runtime review, integration/final and Windows remain Root-owned. No real acceptance index exists.'\n(out/'STATUS.json').write_text(json.dumps(status,ensure_ascii=False,indent=2)+'\\\\n')\ncommands=json.loads((out/'LOCAL_COMMAND_RESULTS.json').read_text())\nfor path,digest in commands['tested_source_sha256'].items(): assert hashlib.sha256((root/path).read_bytes()).hexdigest()==digest,path\nfor row in commands['commands']:\n assert row['exit_code']==row['expected_exit_code']\n for log in row['logs'].values(): assert hashlib.sha256((root/log['path']).read_bytes()).hexdigest()==log['sha256']\nenv={k:v for k,v in os.environ.items() if not k.startswith('GIT_')}\nchanged=subprocess.check_output(['git','diff','--name-only'],env=env).decode().splitlines()\nfiles=sorted(set(changed)|{p.relative_to(root).as_posix() for p in out.iterdir() if p.is_file() and p.name\"'!='\"'SOURCE_MANIFEST.json'})\nrows=[]\nfor name in files:\n raw=(root/name).read_bytes();rows.append({'path':name,'bytes':len(raw),'sha256':hashlib.sha256(raw).hexdigest(),'git_blob_sha1':hashlib.sha1(b'blob %d\\\\0'%len(raw)+raw).hexdigest()})\n(out/'SOURCE_MANIFEST.json').write_text(json.dumps({'task_id':'P24-02','existing_HEAD':status['source'],'scope':'Uncommitted repair6 source/local files only; not acceptance. Excludes itself and preexisting Root context/cache. Protected inputs are bound in PRESERVATION_AND_CONTEXT.json.','files':rows},indent=2)+'\\\\n')\nprint('Repair6 STATUS, proof log hashes and source manifest written; tested source bytes unchanged.')\nPY\ngit diff --check\"",
|
||||
"aggregated_output": "Repair6 STATUS, proof log hashes and source manifest written; tested source bytes unchanged.\n",
|
||||
"exit_code": 0,
|
||||
"status": "completed"
|
||||
}
|
||||
],
|
||||
"protected_Main_World_native_test_marker_policy_composition_byte_unchanged": true,
|
||||
"phase_scope_violations": [],
|
||||
"tests_reexecuted_by_Root_yet": false,
|
||||
"all8_accepted": false,
|
||||
"at_unix": 1792217218.81146
|
||||
}
|
||||
+178
@@ -0,0 +1,178 @@
|
||||
{
|
||||
"scope": "Superseded source5 review was corrected in source6; only expendable tracked source checkout retired; complete raw review/cache bytes retained with SHA",
|
||||
"path": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01",
|
||||
"commit": "60eadb8bc839bfcb46bff41949db9c59611e3e6f",
|
||||
"preserved_ref": "refs/thetree/evidence/retired-60eadb8bc839",
|
||||
"tracked_files": 4877,
|
||||
"tracked_bytes": 229095614,
|
||||
"all_tracked_bytes_equal_git": true,
|
||||
"binding_sha256": "6921fcad321cbe9ab3353663986e249ea56b738d7d9267a3b941cfc7266f05fd",
|
||||
"retained_raw": [
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01/.review-material",
|
||||
"new": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/retained-superseded-source5/.review-material",
|
||||
"files": [
|
||||
{
|
||||
"path": "p24-repair5-static/manifest.json",
|
||||
"bytes": 9725,
|
||||
"sha256": "8408739030f5e8db1275b58fd8f3cf29f3a9263222dda38e6a726702202b1ce2"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/root/REPAIR5_CODE_PHASE_RESULT.json",
|
||||
"bytes": 3399,
|
||||
"sha256": "77d51dd5f990ee02a926cf86c199a403a846abdd661a68db19afbda2d10888e5"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/root/ROOT_REPAIR5_LOCAL_PROOF_REAUDIT.json",
|
||||
"bytes": 21349,
|
||||
"sha256": "80f0a8eea3ca917534a0304c031295d15de639e547fad3753394c8255f7e5e67"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/root/ACTUAL_REPAIR5_PREPARED_COMPOSITION.json",
|
||||
"bytes": 976,
|
||||
"sha256": "8f168e7a693ad9c9fbcf579abdb7bb89fc47684d15bd6b502e008bcfa1fcda50"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/root/REPAIR5_CODE_PHASE_STARTED.json",
|
||||
"bytes": 5926,
|
||||
"sha256": "cd0066512c81be3f7941e48b6ad5f0d2ce85300cb87d47b444bba933aa607d49"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/result.json",
|
||||
"bytes": 4427,
|
||||
"sha256": "479ecd38ac38550fb259387182ed910f85f73e377cd10113e8c801549c7e2d1f"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/stdout.log",
|
||||
"bytes": 10493,
|
||||
"sha256": "04564feeb1053558449777c62b7d5772fc3222b62468daaf308e7f3f3b294b68"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/sandbox.sb",
|
||||
"bytes": 2006,
|
||||
"sha256": "d5ebe5047e0fb88085ea645e41e7446d5e3c8f582f60c164bad44060bc51239d"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/command.json",
|
||||
"bytes": 1451,
|
||||
"sha256": "f3635616b2bf440e8ac7753496ed2459699fa2ac728298dc7d7bdbe979cf8f77"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/3701bf15b79a4d31a78d08ff5039e431/packet.txt",
|
||||
"bytes": 28483,
|
||||
"sha256": "f354b54d65e9823d28679fa0db585f4298d148a14c5f24c652c3ca7b2588674b"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/stderr.log",
|
||||
"bytes": 5464,
|
||||
"sha256": "d368a305e9fa394fb59fd19a95c3a41d02152232e78dd184008f96d57f9f590b"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/result.json",
|
||||
"bytes": 886,
|
||||
"sha256": "8473869392305e4aa9076b52b701090df2d42607ddbe204320ff1896b35376bb"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/stdout.log",
|
||||
"bytes": 412579,
|
||||
"sha256": "136ae6b2d66c025de1c7d6b340901d1508fc451593e6b324d4cb4677c930b988"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/sandbox.sb",
|
||||
"bytes": 5095,
|
||||
"sha256": "8955b7a2a3601db1dd5c0cc3422dbf490b0463123eafab87d45d78a30d51cb07"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/command.json",
|
||||
"bytes": 1536,
|
||||
"sha256": "de5fe42e445abd3be9ecaf7b64f22e6377d2202a33e78ca21e4ca1e98c21f8f7"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/150085055a4946bfa897ebfc15192b55/packet.txt",
|
||||
"bytes": 32759,
|
||||
"sha256": "8dca0acd19c2f58bb14cb047a8544fe7c5e4d59c2f9609e41761771d9f921865"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/result.json",
|
||||
"bytes": 9634,
|
||||
"sha256": "932b1d24a8b1b30472dafbb9385dafda2f62fcbda8ad9c0ebbe481b07c06f4a6"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/stdout.log",
|
||||
"bytes": 20928,
|
||||
"sha256": "f198762cc7e5b383ff8dd4c1797f568eca63e3ec1e9b16acd194169570b78ede"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/sandbox.sb",
|
||||
"bytes": 2006,
|
||||
"sha256": "d5ebe5047e0fb88085ea645e41e7446d5e3c8f582f60c164bad44060bc51239d"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/command.json",
|
||||
"bytes": 1462,
|
||||
"sha256": "04245f80296bae23d64a1387cd9ae873b98b2bf804c6a3727c9fc59d811170c4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/4d9a0d5069fd496791e2064cc7a75aa8/packet.txt",
|
||||
"bytes": 34242,
|
||||
"sha256": "d1687a6a551b21d4392891295cddd6bb8c40ffc2df55df7a5f16f0e2e53a38a1"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/stderr.log",
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/result.json",
|
||||
"bytes": 6968,
|
||||
"sha256": "ef17de03039bcd2b3d7a2851d26c0abdc163b32fef40048d933a693f1b49114f"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/stdout.log",
|
||||
"bytes": 15338,
|
||||
"sha256": "1e52af01ab6a0d085b6219a5d3d1606a33adbca8fc9e249fe0699bf397df3cc7"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/sandbox.sb",
|
||||
"bytes": 2022,
|
||||
"sha256": "84444ab14760af1ff8ee4e7ec2e99d0ce97c37aa6a971d961d19b4883fc5b4ec"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/command.json",
|
||||
"bytes": 1874,
|
||||
"sha256": "7b200541765f06f14f18e4ca0fee1d0ec1ce1ceee80020e16d4a4e777d70afd4"
|
||||
},
|
||||
{
|
||||
"path": "p24-repair5-static/actual-runs/95cffd7b552a4939a4252349b3dfcfbd/packet.txt",
|
||||
"bytes": 5035,
|
||||
"sha256": "8a02ec93fd24c66e9e699500a099ca36be257e6788e969c3e0147596feda23ff"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"old": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-78f7cba-r01/tools/__pycache__",
|
||||
"new": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r02/retained-superseded-source5/tools-__pycache__",
|
||||
"files": [
|
||||
{
|
||||
"path": "run_all_tests.cpython-312.pyc",
|
||||
"bytes": 45745,
|
||||
"sha256": "aee51a10615b9ec3968f04924a65a0ebd4cb3c814352efab71a0f999c034a7d7"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"free_before": 3195826176,
|
||||
"free_after": 3441545216,
|
||||
"observed_interval_gain_bytes": 245719040,
|
||||
"at_unix": 1792218236.4174569
|
||||
}
|
||||
-26
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"actual_main": "54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"exact4_main_blobs": [
|
||||
{
|
||||
"path": "scenes/main/main.gd",
|
||||
"actual_main_blob": "fff37f082d750bb91c71f2aa54d168c9e2cb8fe7",
|
||||
"equals_already_reconciled_reference_blob": true
|
||||
},
|
||||
{
|
||||
"path": "scenes/main/world_preview.gd",
|
||||
"actual_main_blob": "fa32fe0344d20565b6d542da1256a94e8dee1845",
|
||||
"equals_already_reconciled_reference_blob": true
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"actual_main_blob": "2eecb803f5eb6774ff38cd353de1f02847aeb0f9",
|
||||
"equals_already_reconciled_reference_blob": true
|
||||
},
|
||||
{
|
||||
"path": "tools/regression/suite-policy.json",
|
||||
"actual_main_blob": "ad194ae425fb8123fa191ed3635f404c098f692d",
|
||||
"equals_already_reconciled_reference_blob": true
|
||||
}
|
||||
],
|
||||
"reason": "M54 is docs-only after original M51 reference; all four conflict-input blobs are genuinely identical. Future M changing any conflict-input blob needs new reconciliation proof, not automatic old-S overwrite."
|
||||
}
|
||||
-40
@@ -1,40 +0,0 @@
|
||||
{
|
||||
"source": "bd3a13405115fc9bf6c5acec55bcfef7dd15266a",
|
||||
"main": "54cade4181f6c3c4f5701ba54ac5fcbeca695945",
|
||||
"all_files_complete": true,
|
||||
"file_or_byte_cap": null,
|
||||
"reference_only_not_executable_snapshot_imports": true,
|
||||
"files": [
|
||||
{
|
||||
"path": "tools/check_p23_life_observation_evidence.py",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair5-context-20261017/main-reference/tools/check_p23_life_observation_evidence.py.source.txt",
|
||||
"sha256": "e41479ae51bccdfab3f31bd348794b441c2f341179bbe33222e2aacdf88f987f",
|
||||
"git_blob": "8a62d1e1070688ced445e48d49b831fc7e9cfea3"
|
||||
},
|
||||
{
|
||||
"path": "tools/run_p23_life_observation.py",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair5-context-20261017/main-reference/tools/run_p23_life_observation.py.source.txt",
|
||||
"sha256": "8dbd90e22f47912b3381b514398fe1fb2c403c97d8e3d0dd675e9c8db5b5d0d1",
|
||||
"git_blob": "0a255140d48e3cf194c1644948a0f1e1dc89a3ca"
|
||||
},
|
||||
{
|
||||
"path": "tools/run_all_tests.py",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair5-context-20261017/main-reference/tools/run_all_tests.py.source.txt",
|
||||
"sha256": "320ca668732b4ff72fc4449998af2327d4e5c527b06896740806aaf0487282b4",
|
||||
"git_blob": "502ad8c1f6ba371446ecfd8f37f0f9194cdb10ea"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair4-20261017/actual-limited-review/result.json",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair5-context-20261017/main-reference/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair4-20261017/actual-limited-review/result.json",
|
||||
"sha256": "ef17de03039bcd2b3d7a2851d26c0abdc163b32fef40048d933a693f1b49114f",
|
||||
"git_blob": "fec14229d322f4cbe9e27f2e02eb08f0e89bef31"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair4-20261017/CURRENT_ACCEPTANCE_AND_NEXT_BATCH.json",
|
||||
"reference_path": "docs/plans/original-completion-2026-10-02/execution/p24-02/root-repair5-context-20261017/main-reference/docs/plans/original-completion-2026-10-02/execution/p24-02/source-ready-repair4-20261017/CURRENT_ACCEPTANCE_AND_NEXT_BATCH.json",
|
||||
"sha256": "9c7892ce6ccd26d997e7a609be29ef8a12acb2fb7df75cf4def6f11a8a9157dc",
|
||||
"git_blob": "7a35430785c15b510dfe107c03807bf5c75951ba"
|
||||
}
|
||||
],
|
||||
"instruction": "P23 helper code is reference only; preserve exact generic Git/source provenance where applicable, do not copy P23 marker/acceptance identities as P24 evidence or import missing modules into old-base S."
|
||||
}
|
||||
-11
@@ -1,11 +0,0 @@
|
||||
# Root operational facts for repair5
|
||||
|
||||
Actual source bd3a134, actual Main54cade4. The4conflict main blobs equal the original M51 snapshots, verified by Git and recorded in CURRENT_MAIN_RECONCILIATION_APPLICABILITY.json. Bind this reconciliation input provenance: a later M changing any of these4blobs must not silently reuse an old-S resolution and drop new Main code. Docs-only M updates may be applicable by exact relevant blob identity, with fresh genuine Q/M roles; do not relabel oldQ. Additional negative: newQ with currentM as parent but stale conflict S blobs dropping changed M hunk must fail against the reconciled-input binding.
|
||||
|
||||
Spec/source/marker/settings/fixture pins are Git file blobs. The engine executable is external and cannot have a Git blob ID; use a separately verified external engine fingerprint/actual started+ended runtime receipt binding and explicit same engine across actual inputs. Do not invent a path or require an external binary to be a repository blob. Source-only tests may use labelled TEST-ONLY data; no real index or acceptance is created. Actual Root capture will supply real engine path/SHA/version and OS platform. Existing P23 receipts are format references only, never P24 actual execution.
|
||||
|
||||
If adding a native UI test changes tests/ui/test_operations_notification.gd source, update only its own marker/policy source-authority SHA fields to the actual new test source after verifying unchanged marker schema/cleanup semantics. Keep all non-P24 entries and all existing safety rules. Do not leave a stale source pin, and do not lower marker expectations. The original registered scope already allows the two JSON files. Adjust local preservation/input checks for this explicit new-source SHA rebind; never claim unchanged old SHA.
|
||||
|
||||
Do not edit NEXT_CLOSURE.md or other Main progress/shared Root reference files; Main54 changed them and doing so adds unrelated merge conflicts. New status/docs/helpers/tests belong under source-ready-repair5-20261017 or another specifically directed p24-02 owned subdir. Keep renderer world_preview.gd unchanged unless Opus explicitly instructs a necessary fix. The new modal visibility callback is functional correctness, not a visual redesign.
|
||||
|
||||
Root bridge owns prelaunch HEAD/no competing worker/quota checks and exclusive lease. A restricted worker must not ps or search user folders. Task-local TMPPREFIX and PYTHONPYCACHEPREFIX are ordinary environment routing within already writable allocation; both solved real default temp/cache failures in the identical sandbox. No policy, permission, security or billing changes. Root can set these before the actual model process so every shell receives correct defaults. Native/Godot/OS/full executions remain Root-owned and not worker actions.
|
||||
-99
@@ -1,99 +0,0 @@
|
||||
{
|
||||
"plan_id": "P24-02",
|
||||
"unit_state": "in_progress",
|
||||
"runner_state": "submitted",
|
||||
"submitted_sha": "bd3a13405115fc9bf6c5acec55bcfef7dd15266a",
|
||||
"source_backup_remote_branch": "codex/p24-02-source-bd3a134",
|
||||
"same_existing_task": "the-tree-p24-02-operations/P24-02",
|
||||
"repair_count": 4,
|
||||
"max_repair_attempts": null,
|
||||
"actual_roles": "Opus5.5 commander; existing Antigravity IDE Opus5.5Medium GUI partial4file merge, then verified terminal quota; Opus-authorized Codex6.1-sol same-task nonUI continuation, no duplicateworker/registration/counterreset",
|
||||
"static_readiness": {
|
||||
"actual_compile_pass": true,
|
||||
"actual_preservation_pass": true,
|
||||
"actual_diff_check_pass": true,
|
||||
"meaningful_local_tests": 9,
|
||||
"local_tests_reused_only_with_3_input_hashes_and_actual_raw_exit0": true,
|
||||
"actual_source_and_JSON_move_guards_pass": true
|
||||
},
|
||||
"limited_independent_review": {
|
||||
"actual_Opus_run": "95cffd7b552a4939a4252349b3dfcfbd",
|
||||
"status": "pass",
|
||||
"critical_high_medium": 0,
|
||||
"low": 5,
|
||||
"original_unit_acceptance_ids": [],
|
||||
"scope": "Static source readiness only; not Core whole-unit review evidence."
|
||||
},
|
||||
"prepared_real_composition": {
|
||||
"scope": "Prospective real Git composed source, not a normal integration candidate or runtime evidence. Actual failed merge and stage1/2/3 are preserved; Root resolved only4 known conflicts by taking exact already-reconciled S blobs.",
|
||||
"submitted_sha": "bd3a13405115fc9bf6c5acec55bcfef7dd15266a",
|
||||
"main_context_sha": "51e8657bfbe24856186cc6530358c5459cf909b6",
|
||||
"prepared_tree": "a0667b90d13bd3ae8d8b8bdbc580192c2f90622f",
|
||||
"prepared_commit": "4bf9a1b80e1491d138954d218720b4bf6298d32a",
|
||||
"prepared_worktree": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/P24-02-root-composed-bd3a134-r01",
|
||||
"actual_parents": [
|
||||
"51e8657bfbe24856186cc6530358c5459cf909b6",
|
||||
"bd3a13405115fc9bf6c5acec55bcfef7dd15266a"
|
||||
],
|
||||
"actual_conflict_resolution_bindings": [
|
||||
{
|
||||
"path": "scenes/main/main.gd",
|
||||
"resolved_actual_sha256": "f71f8c15493d6b51002ee4afb41cc349efe77e860944c1f79a5b24f928ecbd24",
|
||||
"actual_S_blob": "a3bba86dd156437ce6b802bcb49597cb94a45312",
|
||||
"authority": "Exact submitted S content with actual static body/symbol/order preservation proofs; Root resolved index only, no authored source edits"
|
||||
},
|
||||
{
|
||||
"path": "scenes/main/world_preview.gd",
|
||||
"resolved_actual_sha256": "8c2daa9e95d56e6e40bb2071b206693069cb7e4731b4d660d59d41c34cb43dfa",
|
||||
"actual_S_blob": "26dd8d785f37f6c9142c80b7deaf8daecb0cebe6",
|
||||
"authority": "Exact submitted S content with actual static body/symbol/order preservation proofs; Root resolved index only, no authored source edits"
|
||||
},
|
||||
{
|
||||
"path": "tools/regression/suite-policy.json",
|
||||
"resolved_actual_sha256": "adc2fbac2463bfdb047bede0182c66083996b75d2bd542a3b8640672d7ca2400",
|
||||
"actual_S_blob": "de0ab07c83c144a6c469cfdcf52ad8bd6c0bd6fa",
|
||||
"authority": "Exact submitted S content with actual static body/symbol/order preservation proofs; Root resolved index only, no authored source edits"
|
||||
},
|
||||
{
|
||||
"path": "docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json",
|
||||
"resolved_actual_sha256": "1063e578eefe6da1b38c24f4c004669bcac67a21884636fb1b9c7e96e4ecf388",
|
||||
"actual_S_blob": "68b8dc8324b7928164bddbcbb1dbb49fbeb25f89",
|
||||
"authority": "Exact submitted S content with actual static body/symbol/order preservation proofs; Root resolved index only, no authored source edits"
|
||||
}
|
||||
],
|
||||
"selected_source_files": 1368,
|
||||
"required_roster_size_NOT_EXECUTED": 180,
|
||||
"all_git_blob_bindings": 4835,
|
||||
"source_maps": "/Users/korizatou114/Projects/TheTree-managed-worktrees/p24-02-operations/.runtime/coordinator-resume-20261017-r01/prepared-bd3a134-source-maps",
|
||||
"historical_EOF_lint": {
|
||||
"exit_code": 2,
|
||||
"output": "docs/plans/original-completion-2026-10-02/execution/p24-02/ROOT_CODE_PHASE_PRELAUNCH_PROOF/original-GUI-copy/scenes/main/main.gd.source.txt:3319: new blank line at EOF.\nscenes/main/main.gd:3319: new blank line at EOF.\nscripts/ui/manual_save_slots_dialog.gd:219: new blank line at EOF.\n",
|
||||
"disposition": "Extra blank EOF lines inherited in actual source and exact preservation copy; retained byte-identically. Recorded source-style observations only, not an invented runtime/spec requirement and not claimed clean lint. Local repair4 actual delta git-diff-check passed. Not product behavior or a conflict marker."
|
||||
},
|
||||
"native_runs": 0,
|
||||
"full_runs": 0,
|
||||
"all8_original_P24_accepted": false,
|
||||
"normal_integration_candidate": false,
|
||||
"production_main_unchanged": true,
|
||||
"original_completed_units": 14,
|
||||
"at_jst": "2026-10-17T14:10:32.615822+09:00"
|
||||
},
|
||||
"first_next_required_batch": [
|
||||
"Implement strict same-root actual Git S/M/T/Q composition/source/input/roster binding, including deterministic4conflict resolution, using existing P23/shared helpers without relabeling tests.",
|
||||
"Replace artifact-ID count proxy with actual condition/provenance/content correspondence; one all-keys JSON plus irrelevant fillers must fail; genuine shared raw traces may be reused only with concrete scope bindings.",
|
||||
"Cover actual staff-panel click equivalent (direct handler call is not OS mapclick), defense modal visibility guard, actual bubble render/state transitions; investigate heart semantics/multiple-link order and per-frame relation scans without inventing gameplay thresholds.",
|
||||
"Treat preservation body-line set weakness and always-written evidence flag as recorded low hardening; do not claim stronger automatic proof than provided and preserve independent manual inspection scope.",
|
||||
"Batch required related fixes then actual import/local/impact, actual normalOS/scale/save evidence, exact final full once, whole8 formal independent review, normalintegration/final/ledger; Windows-specific conditions remain genuine actual-device requirements."
|
||||
],
|
||||
"all8_original_conditions_accepted": false,
|
||||
"new_native_runs": 0,
|
||||
"new_full_roster_runs": 0,
|
||||
"original_denominator": {
|
||||
"packages": 30,
|
||||
"units": 88,
|
||||
"completed": 14,
|
||||
"partial_credit": false
|
||||
},
|
||||
"no_source_code_adoption_on_main": true,
|
||||
"at_jst": "2026-10-17T14:21:51.543429+09:00"
|
||||
}
|
||||
-29
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"task_id": "P24-02",
|
||||
"commit": "bd3a13405115fc9bf6c5acec55bcfef7dd15266a",
|
||||
"status": "pass",
|
||||
"summary": "Limited independent static review of the Q checkout (S=bd3a134 blobs composed onto M=51e8657). I used Read/Grep/Glob only and ran nothing. This is static source-readiness only: none of the 8 original P24 conditions is accepted, no acceptance_ids are added, and nothing here counts as Godot, native, OS, full-roster, Windows or whole-unit review evidence.\n\n(1) Reconciled files. world_preview.gd keeps the P23 LifeOverlay pipeline: _draw_contents/_build_life_observation, the overlay pass/serial report, the actor_drawings rows, aggregation and hidden filtering, and the cabin passengers. The single new adapter, _draw_actor_bubble(row, canvas), only reads state. It skips riding rows, looks up live Staff/Guest through get_staff/get_guest and RelationshipState through get_relationships, and never writes the observation or its rows. _draw_unit_bubble's fitted-row origin at+(-1p,-15p) works out to exactly P24's old center+(-9p, h/2-3wp-32p), so geometry, glyphs and colours are unchanged; only the target canvas is different. The 10 'reexpressed' _draw_actors lines are covered by main's _observe_actors/_draw_actors; staff queue placement survives at world_preview.gd:1433. The P24 additions in main.gd (modal guard, domain-event stream bind/unbind, cut-in, camera controls, click handler) match the GUI-copy bytes. Both JSON files are main's entries plus the P24 row/key appended at the end. No new production values were found.\n\n(2) check_p24_operations_evidence.py. The real HEAD now comes from git, and CANDIDATE_COMMIT/TARGET_HEAD are cross-checks only; git failure or a mismatch gives an empty result. The required suite set is loaded from the shared run_all_tests.roster. Suite sets must match exactly. Unknown or duplicate rows and non-dict rows are rejected, and every row needs a valid SHA that matches the file on disk, failures as an int equal to 0 (bool rejected), and passed=True. Optional counts must match exactly when present. The raw diff shows both old count-bypass `pass` branches removed, and the OS, receipt, PID, condition and Windows guards are untouched. The 9 stdlib tests include real positive controls (roster with and without counts, HEAD in a throwaway git repo) and meaningful negatives (invented replacement, duplicate padding, unknown extra rows, failures/passed type variants, SHA variants, malformed rows and counts, env mismatch, git unavailable).\n\n(3) check_repair4_preservation.py. It compares scope-qualified symbols across base, P24, main and the reconciled file, plus body lines per symbol, flags P24 edits to symbols main removed, and does a strict 3-way JSON comparison by value and order with duplicate-key detection. The METRIC_IDS regex fix correctly reads the assigned array past the Array[StringName] annotation. The bubble schema checks are pinned to M.\n\n(4) Docs. SOURCE_READY/NOTRUN status for all 8 conditions, the earlier failed py_compile and JSON-order runs, the GUI quota stop and the stale 179 run are all recorded honestly. The Root S/M/T/Q composition contract is still listed as an unresolved prerequisite, not as passed.\n\nI found no critical, high or medium defects. The low findings below are hardening items for the later required phases, which all remain mandatory: Root composition contract, import/impact, normal OS, exact final full roster, whole-8 independent review, normal integration and Windows.",
|
||||
"acceptance_ids": [],
|
||||
"findings": [
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "scenes/main/main.gd:985-987 connects world_preview.staff_assignment_clicked to assign_staff_by_click, but nothing in world_preview.gd emits that signal (it is only declared at world_preview.gd:6; _gui_input never emits it). This was already the case in P24 (no P24 _gui_input lines were lost) and is not a repair4 regression. A non-drag alternative already exists through the staff panel's facility_option and apply_button, so this is dead wiring rather than a missing feature. However, tests/ui/test_operations_notification.gd:110 calls assign_staff_by_click directly, so click_alternatives evidence must not treat that direct call as a real map-click path. Either emit the signal from the facility-click branch (respecting modal_input_blocked) or remove the connection."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "main.gd:3259 _update_modal_input_guard includes defense_manager in its dialog list, but _ensure_defense_manager (main.gd:3063-3089) never connects defense_manager.visibility_changed to the guard, unlike the other six dialogs. Opening or closing the defense dialog alone does not update world_preview.modal_input_blocked. AcceptDialog's exclusive default probably masks this, but modal_and_pause_resume runtime evidence should cover it or the connection should be added."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "check_repair4_preservation.py compares function bodies as sets of stripped lines (lines 176-203), so it cannot detect reordered statements or a dropped copy of a repeated line (for example a duplicate return/queue_redraw). REPAIR4_REEXPRESSED_P24_LINES also allows every lost P24 line in the two listed functions, not just specific lines. I checked the 19 enumerated lines by hand and they are legitimately re-expressed, but the guard is weaker than an ordered/multiset body check. Also, --write-evidence is parsed but has no effect: evidence is always written. This is documented in the status file."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "check_p24_operations_evidence.py: get_actual_git_head() resolves the repo from the checker's own location (parents[1]), while the roster, source_hashes and suite SHA checks use the current working directory (Path('.')). If it is run from another checkout, HEAD and source evidence come from different trees. The existing 'distinct artifacts' guard (lines 716-722) only counts IDs: one artifact containing every condition's keys plus 7 hash-valid filler artifacts would pass, because each condition needs only one artifact to validate. Neither problem is new to repair4 or a weakened guard, but both should be closed in the Root S/M/T/Q composition contract before the real index verify-only run."
|
||||
},
|
||||
{
|
||||
"severity": "low",
|
||||
"message": "Bubble coverage and semantics (already marked NOTRUN, recorded so they are not lost): (a) no local test exercises the new _draw_actor_bubble/_draw_unit_bubble render path; tests only call OperationFeedback.resolve_*_bubble. (b) _staff_relationship/_guest_relationship return the first RelationshipState involving the actor, so with several relationships the heart bubble depends on iteration order. (c) The inherited heart rule 'shield>0 or affection>0 or route-lock pending/locked' needs whole-8 review against 'no invented thresholds'. (d) Each frame scans every relationship for every drawn actor."
|
||||
}
|
||||
]
|
||||
}
|
||||
-2503
File diff suppressed because it is too large
Load Diff
-311
@@ -1,311 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Exact standard suites in one private source copy, with owned native evidence.
|
||||
|
||||
Completion schemas and test bodies are unchanged. Import and every script start
|
||||
in a fresh private startup profile before Godot creates logs/recovery locks;
|
||||
the unchanged Guard then selects a separate fresh runtime profile.
|
||||
"""
|
||||
import argparse, hashlib, importlib.util, json, os, re, shutil, subprocess, sys, time, uuid
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
sys.dont_write_bytecode = True
|
||||
HERE = Path(__file__).resolve().parent
|
||||
SUPPORT = HERE / 'regression'
|
||||
MIN_SPACE = 300 * 1024 * 1024
|
||||
|
||||
def module(name, path):
|
||||
spec = importlib.util.spec_from_file_location(name, path)
|
||||
value = importlib.util.module_from_spec(spec); spec.loader.exec_module(value); return value
|
||||
def sha(path): return hashlib.sha256(Path(path).read_bytes()).hexdigest()
|
||||
def read(path): return json.loads(Path(path).read_bytes())
|
||||
def require(ok, reason):
|
||||
if not ok: raise AssertionError(reason)
|
||||
def write(path, value):
|
||||
with Path(path).open('x', encoding='utf-8') as stream:
|
||||
stream.write(json.dumps(value, ensure_ascii=False, indent=2) + '\n')
|
||||
def now(): return datetime.now(timezone.utc).isoformat()
|
||||
def roster(root):
|
||||
return ['tests/run_tests.gd'] + sorted(str(p.relative_to(root)) for p in (root/'tests').rglob('test*.gd')
|
||||
if 'export' not in p.relative_to(root).parts and str(p.relative_to(root)) != 'tests/s0/test_kernel_and_save.gd')
|
||||
def inventory(base, stage=False):
|
||||
base = Path(base); result = {}
|
||||
if not base.exists(): return result
|
||||
require(base.is_dir() and not base.is_symlink(), 'ordinary inventory directory')
|
||||
for p in sorted(base.rglob('*')):
|
||||
rel = p.relative_to(base)
|
||||
if stage and '.godot' in rel.parts: continue
|
||||
require(not p.is_symlink(), 'symlink is not an ordinary source/proof/profile')
|
||||
if p.is_file(): result[rel.as_posix()] = {'bytes': p.stat().st_size, 'sha256': sha(p)}
|
||||
return result
|
||||
def source_refs(root):
|
||||
paths = [p for folder in ('autoload','scripts','scenes','data','tests','assets','tools')
|
||||
for p in (root/folder).rglob('*') if p.is_file() and p.name != '.DS_Store' and '__pycache__' not in p.parts]
|
||||
paths += [root/p for p in ('project.godot','export_presets.cfg','Makefile','AGENTS.md')]
|
||||
require(all(not p.is_symlink() for p in paths), 'source aliases refused')
|
||||
return {p.relative_to(root).as_posix(): {'path':str(p),'bytes':p.stat().st_size,'sha256':sha(p)} for p in sorted(paths)}
|
||||
def profile_path(name):
|
||||
require(re.fullmatch(r'TheTree-PCK-tests-[0-9a-f]{32}-[a-z0-9-]+', name) is not None, 'owned profile nonce')
|
||||
if sys.platform == 'darwin': return Path.home()/'Library/Application Support'/name
|
||||
if sys.platform.startswith('linux'): return Path(os.environ.get('XDG_DATA_HOME', str(Path.home()/'.local/share')))/name
|
||||
raise RuntimeError('profile platform requires a reviewed native runner; no Windows acceptance inference')
|
||||
def default_player(root):
|
||||
text = (root/'project.godot').read_text()
|
||||
require('config/name="The Tree"' in text and 'config/use_custom_user_dir=' not in text, 'canonical default profile source')
|
||||
if sys.platform == 'darwin': path = Path.home()/'Library/Application Support/Godot/app_userdata/The Tree'
|
||||
elif sys.platform.startswith('linux'): path = Path(os.environ.get('XDG_DATA_HOME', str(Path.home()/'.local/share')))/'godot/app_userdata/The Tree'
|
||||
else: raise RuntimeError('unreviewed default-profile platform')
|
||||
return {'path':str(path),'existed':path.exists(),'files':inventory(path),'logs_and_locks_included':True}
|
||||
def private_project(public_bytes, name):
|
||||
text = public_bytes.decode('utf-8')
|
||||
require(text.count('[application]\n\n') == 1 and 'config/use_custom_user_dir=' not in text
|
||||
and 'config/custom_user_dir_name=' not in text, 'canonical project has no private execution settings')
|
||||
addition = 'config/use_custom_user_dir=true\nconfig/custom_user_dir_name=' + json.dumps(name) + '\n'
|
||||
altered = text.replace('[application]\n\n', '[application]\n\n' + addition, 1).encode()
|
||||
require(altered.decode().replace(addition, '', 1).encode() == public_bytes, 'two private fields reverse to whole public bytes')
|
||||
return altered
|
||||
def fresh_environment(base): return {k:v for k,v in base.items() if not k.startswith('THE_TREE_')}
|
||||
def phase_policy(test, source, policies):
|
||||
value = policies.get(test, {'ordinary_cleanup_prepared':False,'ordinary_control_labels':[],
|
||||
'old_bounded_teardown':False,'new_audio_QA':False})
|
||||
if test in policies: require(value['source_sha256'] == sha(source), 'suite proof/IO policy source SHA changed')
|
||||
return dict(value, path=test, source_sha256=sha(source), candidate_source_sha256=sha(source))
|
||||
def dependency_paths(test, refs):
|
||||
"""Reviewed literal GDScript dependencies, including relative inherited QA."""
|
||||
pending=[test];seen=set()
|
||||
while pending:
|
||||
name=pending.pop()
|
||||
if name in seen:continue
|
||||
seen.add(name)
|
||||
text=Path(refs[name]['path']).read_text()
|
||||
for quoted in re.findall(r'[\"\']([^\"\']+\.gd)[\"\']',text):
|
||||
target=quoted[6:] if quoted.startswith('res://') else str(Path(name).parent/quoted)
|
||||
if target in refs and target not in seen:pending.append(target)
|
||||
return seen
|
||||
def policy_coverage(paths, refs, policy):
|
||||
for test in paths:
|
||||
dependencies=dependency_paths(test,refs);p=phase_policy(test,Path(refs[test]['path']),policy['suite_policies'])
|
||||
if 'tests/helpers/ui_audio_fixture_cleanup.gd' in dependencies:
|
||||
require(p['ordinary_cleanup_prepared'] and p['ordinary_control_labels'], 'unknown ordinary helper user requires exact reviewed policy '+test)
|
||||
if 'tests/helpers/ui_audio_teardown.gd' in dependencies:
|
||||
require(p['ordinary_cleanup_prepared'] or p['old_bounded_teardown'] or test=='tests/ui/test_ui_audio_feedback.gd', 'unknown bounded teardown user requires reviewed proof policy '+test)
|
||||
def copy_source(source,target):
|
||||
if sys.platform=='darwin':subprocess.run(['/bin/cp','-c',str(source),str(target)],check=True)
|
||||
else:shutil.copyfile(source,target)
|
||||
require(target.stat().st_ino!=Path(source).stat().st_ino or target.stat().st_dev!=Path(source).stat().st_dev,
|
||||
'private source is a separate inode; hardlinks refused')
|
||||
def profile_gate(path, report, name):
|
||||
value = read(report)
|
||||
require(value['verified'] is True and value['conditions'] == [True]*5 and value['conditions_checked'] == 5
|
||||
and value['fresh_before_parent_initialize'] is True and value['profile_writes_before_guard'] == 0
|
||||
and value['actual_user_data_dir'] == str(path) == value['expected_user_data_dir']
|
||||
and value['globalized_probe'] == str(path/'guard-probe') and value['custom_user_dir_name'] == name
|
||||
and value['project_settings_persisted'] is False, 'all five unchanged runtime Guard conditions')
|
||||
return {'report':value,'report_sha256':sha(report),'whole_files':inventory(path)}
|
||||
def process_gate(row, allowed):
|
||||
return (row.get('exit_code') == 0 and row.get('helper_exit_code') == 0 and row.get('timed_out') is False
|
||||
and row.get('error_lines') == allowed and row.get('owned_popen_ended') is True
|
||||
and row.get('old_helper_engine_ended') is True and row.get('start_receipt_written') is True
|
||||
and row.get('end_receipt_written') is True and row.get('lifecycle_error') is None
|
||||
and row.get('external_process_or_group_signals') == 0
|
||||
and row.get('adapter_owned_cleanup',{}).get('engine_ended') is True)
|
||||
def routed_report(directory, route, test, pid, raw, stage, source_sha):
|
||||
file = directory/route['filename']
|
||||
require(set(directory.iterdir()) == {file} and file.is_file() and not file.is_symlink() and file.stat().st_size>0,
|
||||
'exclusive fresh outside report file set')
|
||||
value = read(file); matches = [l[len(route['stdout_prefix']):] for l in raw.splitlines() if l.startswith(route['stdout_prefix'])]
|
||||
require(isinstance(value,dict) and value and len(matches)==1, 'whole report and unique actual stdout JSON')
|
||||
printed = json.loads(matches[0]); require(isinstance(printed,dict) and printed, 'nonempty printed report')
|
||||
require(value==printed if route['stdout_projection']=='full' else all(value.get(k)==v for k,v in printed.items()),
|
||||
'literal original report payload agreement')
|
||||
owner = route.get('inherited_source',test)
|
||||
require(sha(stage/test)==source_sha and sha(stage/owner)==route['report_owner_source_sha256'], 'actual report source provenance')
|
||||
return {'verified':True,'path':str(file),'bytes':file.stat().st_size,'sha256':sha(file),
|
||||
'actual_engine_pid':pid,'producer_test':test,'producer_source_sha256':source_sha,'report_owner_source':owner,
|
||||
'report_owner_source_sha256':sha(stage/owner),'payload_field_deletions':0,'whole_JSON':value}
|
||||
def declared_reports(stage, expected, previous, requested):
|
||||
actual = inventory(stage,stage=True)
|
||||
require(not set(requested)&(set(expected)|set(previous)), 'new reports cannot overwrite source/previous reports')
|
||||
require(set(actual)==set(expected)|set(previous)|set(requested), 'complete source/UID/generated report set')
|
||||
require({n:actual[n] for n in expected}==expected and {n:actual[n] for n in previous}==previous, 'all source and earlier report bytes exact')
|
||||
added = {n:actual[n] for n in requested}
|
||||
for name,pin in added.items():
|
||||
require(pin['bytes']>0, 'nonempty actual generated report')
|
||||
if name.endswith('.json'): read(stage/name)
|
||||
else: (stage/name).read_text()
|
||||
return added
|
||||
def totals(rows, paths):
|
||||
names=[r['test'] for r in rows]; missing=[r['test'] for r in rows if r.get('reported_checks') is None]
|
||||
remaining=[n for n in paths if n not in names]; available=sum(r.get('reported_checks') or 0 for r in rows)
|
||||
return {'actual_suites':len(rows),'missing_marker_paths':missing,'remaining_unexecuted_tests':remaining,
|
||||
'available_marker_checks':available,'actual_all_roster_checks':available if not missing and names==paths else None,
|
||||
'strict_accepted_checks':sum(r['reported_checks'] for r in rows if not r['failed'] and r.get('reported_checks') is not None)}
|
||||
|
||||
def execute_phase(engine, stage, out, phase, test, selected, expected, previous, policy, contracts, paths,
|
||||
public_project, protected_player, root, outer, markers, diagnostics, owners, audio):
|
||||
require(not outer.native.helper['live_engines'](), 'one owned native engine at a time')
|
||||
require(shutil.disk_usage(out).free>=MIN_SPACE, 'fresh phase disk admission')
|
||||
require(source_refs(root)==selected['root_before'] and default_player(root)==protected_player, 'entire current source/default profile unchanged before phase')
|
||||
require(inventory(stage,stage=True)==dict(expected,**previous), 'whole stage source/UID/report inventory before phase')
|
||||
env=fresh_environment(os.environ); startup_name='TheTree-PCK-tests-'+uuid.uuid4().hex+'-standard-startup-'+phase
|
||||
startup=profile_path(startup_name); require(not startup.exists(), 'fresh startup profile before native engine')
|
||||
write(out/(phase+'-startup-profile-before.json'), {'path':str(startup),'existed':False,'files':{},'before_native_spawn':True})
|
||||
private=private_project(public_project,startup_name); (stage/'project.godot').write_bytes(private)
|
||||
folder=out/phase; proof=None; evidence=None; runtime=None; runtime_report=None; script=None
|
||||
row={'phase':phase,'test':test,'passed':False,'failed':True,'validation_error':None,'profile_startup_name':startup_name,
|
||||
'private_project_sha256':hashlib.sha256(private).hexdigest(),'private_project_fields':2,'source_sha256':sha(stage/test) if test else None}
|
||||
try:
|
||||
if phase=='import': argv=[engine,'--headless','--path',str(stage),'--editor','--import','--quit','--verbose']
|
||||
else:
|
||||
name='TheTree-PCK-tests-'+uuid.uuid4().hex+'-standard-runtime-'+phase; runtime=profile_path(name)
|
||||
require(not runtime.exists(), 'fresh runtime profile before Guard')
|
||||
runtime_report=out/(phase+'-profile.json')
|
||||
env.update(THE_TREE_PACK_PROFILE_NAME=name,THE_TREE_PACK_PROFILE_EXPECTED=str(runtime),
|
||||
THE_TREE_PACK_PROFILE_REPORT=str(runtime_report),THE_TREE_FULL_PARSE_PATHS=str(out/'parse-paths.json'))
|
||||
if phase=='parse': script=out/'bootstrap/parse_full_dependencies.gd'
|
||||
else:
|
||||
script=out/'starters'/(phase+'.gd')
|
||||
script.write_text('extends '+json.dumps('res://'+test)+'\nconst Guard := preload('+json.dumps(str(out/'bootstrap/profile_guard.gd'))+')\nfunc _initialize() -> void:\n\tif not Guard.activate():\n\t\tquit(97)\n\t\treturn\n\tsuper._initialize()\n')
|
||||
p=phase_policy(test,stage/test,policy['suite_policies']); row['policy']=p
|
||||
route=policy['outside_routes'].get(test)
|
||||
if route:
|
||||
evidence=out/(phase+'-evidence'); evidence.mkdir(); env[route['env']]=str(evidence)
|
||||
if p['ordinary_cleanup_prepared'] or p['old_bounded_teardown'] or test=='tests/ui/test_ui_audio_feedback.gd':
|
||||
proof=out/(phase+'-teardown'); proof.mkdir()
|
||||
if p['ordinary_cleanup_prepared']:
|
||||
(proof/'owned-audio').mkdir(); env.update(THE_TREE_AUDIO_TEARDOWN_PROOF_DIR=str(proof/'owned-audio'),THE_TREE_AUDIO_FIXTURE_CONTROL_PROOF=str(proof/'control.json'))
|
||||
else: env['THE_TREE_AUDIO_TEARDOWN_PROOF_DIR']=str(proof)
|
||||
if test=='tests/ui/test_ui_audio_feedback.gd':
|
||||
audio_dir=out/(phase+'-audio-proof'); audio_dir.mkdir()
|
||||
env.update(THE_TREE_AUDIO_PROOF_REPORT=str(audio_dir/'actual-ogg-decode-player-state.json'),
|
||||
THE_TREE_AUDIO_COMMAND_PROOF_REPORT=str(audio_dir/'actual-command-result-buffer-proof.json'))
|
||||
argv=[engine,'--headless','--path',str(stage),'--script',str(script),'--verbose']
|
||||
logfile=folder/'engine-native.log'; require(logfile.is_absolute() and not logfile.exists(), 'fresh absolute native log')
|
||||
argv+=['--log-file',str(logfile)]; row.update(command=argv,logical_script='res://'+test if test else None,
|
||||
starter_sha256=sha(script) if script else None,controlled_environment={k:v for k,v in env.items() if k.startswith('THE_TREE_')})
|
||||
result,capture=outer.run_phase(argv,folder,180 if phase=='import' else selected['timeout'],env,
|
||||
now_fn=now,dump_fn=write,sha_fn=sha,live_engines_fn=outer.native.helper['live_engines'])
|
||||
row.update(native_process=result,outer_actual_capture=capture,actual_pid=result.get('pid') if result else None,
|
||||
engine_ended=capture['all_captured_ended'],exit_code=result.get('exit_code') if result else None)
|
||||
stdout=(folder/'stdout.log').read_text(); stderr=(folder/'stderr.log').read_text(); raw=stdout+stderr
|
||||
raw_file=out/(test.replace('/','__')+'.log') if test else folder/'combined-raw.log'; raw_file.write_text(raw)
|
||||
row.update(log=str(raw_file.relative_to(out)),log_sha256=sha(raw_file),raw_native_log={'path':str(logfile),'bytes':logfile.stat().st_size,'sha256':sha(logfile)})
|
||||
if test:
|
||||
parsed=markers.parse_raw(test,raw,contracts,row['source_sha256']); row.update(completion=parsed,
|
||||
reported_checks=parsed['checks'],reported_failures=parsed['failures'],completion_marker=parsed['marker'],collector_errors=parsed['errors'])
|
||||
review=diagnostics.review_streams(outer.native,{'stdout':stdout,'stderr':stderr,'native_file':logfile.read_text()},test,stage/test if test else None)
|
||||
row['finite_original_diagnostic_review']=review
|
||||
require(result and diagnostics.diagnostic_result_gate(result,review) and process_gate(result,review['allowed_e31_error_lines']) and capture['passed'], 'strict native/ownership/logger/finite diagnostics')
|
||||
if script: require(sha(script)==row['starter_sha256'], 'actual starter source remains exact')
|
||||
if runtime: row['actual_private_profile']=profile_gate(runtime,runtime_report,name)
|
||||
if phase=='parse':
|
||||
matches=re.findall(r'(?m)^FULL_DEPENDENCY_PARSE checks=([0-9]+) failures=([0-9]+)\n',raw)
|
||||
require(matches==[(str(len(paths)),'0')], 'unique actual all normal-context dependencies parsed')
|
||||
row['actual_parse_checks']=int(matches[0][0])
|
||||
if test:
|
||||
require(parsed['passed'] and sha(stage/test)==row['source_sha256'], 'exact original suite source/marker schema')
|
||||
if evidence: row['outside_report']=routed_report(evidence,route,test,row['actual_pid'],raw,stage,row['source_sha256'])
|
||||
if p['ordinary_cleanup_prepared']: row['ordinary_owner_pairs']=owners.ordinary_gate(proof,row['actual_pid'],out,p['ordinary_control_labels'])
|
||||
if p['old_bounded_teardown'] or test=='tests/ui/test_ui_audio_feedback.gd': row['old_bounded_proof']=audio.teardown_gate(proof,row['actual_pid'],out)
|
||||
if test=='tests/ui/test_ui_audio_feedback.gd':
|
||||
row['actual_command_evidence']=audio.command_gate(audio_dir/'actual-command-result-buffer-proof.json',audio_dir,row['actual_pid'])
|
||||
row['actual_ogg_evidence']=audio.ogg_gate(audio_dir/'actual-ogg-decode-player-state.json',row['actual_pid'],selected['map'])
|
||||
row['passed']=True; row['failed']=False
|
||||
except BaseException as caught: row['validation_error']=type(caught).__name__+': '+str(caught)
|
||||
finally:
|
||||
# run_phase owns cleanup before any receipts/guards. No discovered PID signals.
|
||||
(stage/'project.godot').write_bytes(public_project)
|
||||
row['whole_startup_profile_after']={'path':str(startup),'files':inventory(startup),'fresh_before_engine':True}
|
||||
if runtime is not None: row['whole_runtime_profile_after']={'path':str(runtime),'files':inventory(runtime)}
|
||||
try:
|
||||
requested=policy['fixed_generated_report_routes'].get(test,[]) if test else []
|
||||
generated=declared_reports(stage,expected,previous,requested); previous.update(generated)
|
||||
for name in generated:
|
||||
if name.endswith('-comparison.json'):
|
||||
value=read(stage/name)
|
||||
require(type(value.get('checks')) is int and value['checks']==row['reported_checks'] and value.get('failures')==0,
|
||||
'actual generated JSON report/marker agreement')
|
||||
row['generated_reports']={n:dict(pin,actual_engine_pid=row.get('actual_pid'),producer_test=test,
|
||||
producer_source_sha256=row['source_sha256'],payload_modified=False)for n,pin in generated.items()}
|
||||
row['source_sha256_end']=sha(stage/test) if test else None
|
||||
row['default_player_entire_profile_unchanged']=default_player(root)==protected_player
|
||||
require(row['default_player_entire_profile_unchanged'] and source_refs(root)==selected['root_before'], 'entire protected source/default player including logs/locks unchanged')
|
||||
except BaseException as caught:
|
||||
row['passed']=False;row['failed']=True;row['guard_error']=type(caught).__name__+': '+str(caught)
|
||||
write(out/(phase+'-receipt.json'),row)
|
||||
return row
|
||||
|
||||
def main(argv=None):
|
||||
parser=argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--project-root',type=Path,default=HERE.parent); parser.add_argument('--output',type=Path)
|
||||
parser.add_argument('--godot',default='godot');parser.add_argument('--timeout',type=int,default=1200)
|
||||
parser.add_argument('--marker-contracts',type=Path);parser.add_argument('--source-input-refs',type=Path)
|
||||
parser.add_argument('--prepare-only',action='store_true');args=parser.parse_args(argv)
|
||||
root=args.project_root.resolve();out=(args.output or root/'artifacts'/('all-tests-'+uuid.uuid4().hex)).resolve();require(args.timeout>0,'positive timeout')
|
||||
root_before=source_refs(root); refs=read(args.source_input_refs) if args.source_input_refs else root_before
|
||||
require(set(refs)>=set(root_before), 'prospective source must retain every canonical source key')
|
||||
for n,pin in refs.items():
|
||||
path=Path(pin['path']);require(not path.is_symlink() and path.is_file() and path.stat().st_size==pin['bytes'] and sha(path)==pin['sha256'], 'exact selected source input '+n)
|
||||
require(refs['tools/run_all_tests.py']['sha256']==sha(Path(__file__)), 'actual public runner selected source exact')
|
||||
for file in SUPPORT.iterdir():
|
||||
if file.is_file(): require(refs['tools/regression/'+file.name]['sha256']==sha(file), 'actual support selected source exact '+file.name)
|
||||
paths=['tests/run_tests.gd']+sorted(n for n in refs if n.startswith('tests/') and n.endswith('.gd') and Path(n).name.startswith('test') and 'export'not in Path(n).parts and n!='tests/s0/test_kernel_and_save.gd')
|
||||
markers=module('standard_exact_markers',HERE/'strict_test_markers.py');contract_path=(args.marker_contracts or root/'docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json').resolve()
|
||||
contracts=markers.load_contracts(contract_path);require(len(set(paths))==len(paths) and all(n in contracts for n in paths),'unique reviewed roster/schema')
|
||||
policy=read(SUPPORT/'suite-policy.json')
|
||||
for test in set(policy['suite_policies'])&set(paths): phase_policy(test,Path(refs[test]['path']),policy['suite_policies'])
|
||||
policy_coverage(paths,refs,policy)
|
||||
parse_paths=['res://'+n for n in sorted(refs) if n.endswith('.gd')]
|
||||
if args.prepare_only:
|
||||
print(json.dumps({'source_files':len(refs),'suites':len(paths),'parse_paths':len(parse_paths),'future_native_phases':len(paths)+2,'actual_checks':None,'engines':0,'stages':0}));return 0
|
||||
outer=module('standard_exact_owned_outer',SUPPORT/'owned_outer.py');require(not outer.native.helper['live_engines'](),'another Godot owns CPU')
|
||||
engine=shutil.which(args.godot) if not Path(args.godot).is_absolute() else args.godot;require(engine,'native launcher exists')
|
||||
engine=str(Path(engine).resolve());require(shutil.disk_usage(out.parent).free>=MIN_SPACE,'fresh run disk admission')
|
||||
out.mkdir(parents=True,exist_ok=False);stage=out/'stage';stage.mkdir();(out/'starters').mkdir()
|
||||
(out/'bootstrap').mkdir()
|
||||
for name,pin in read(SUPPORT/'bootstrap-scripts.json').items():
|
||||
data=pin['text'].encode('utf-8');require(hashlib.sha256(data).hexdigest()==pin['sha256'], 'unchanged external bootstrap bytes')
|
||||
(out/'bootstrap'/name).write_bytes(data)
|
||||
protected=default_player(root);expected={n:{'bytes':p['bytes'],'sha256':p['sha256']}for n,p in refs.items()}
|
||||
selected={'root_before':root_before,'map':{n:p['sha256']for n,p in refs.items()},'timeout':args.timeout}
|
||||
for n,pin in refs.items():
|
||||
target=stage/n;target.parent.mkdir(parents=True,exist_ok=True)
|
||||
copy_source(Path(pin['path']),target)
|
||||
require(inventory(stage,stage=True)==expected,'one complete private CoW source copy')
|
||||
public=(stage/'project.godot').read_bytes();write(out/'parse-paths.json',parse_paths)
|
||||
run_id=uuid.uuid4().hex;input_receipt={'protocol':'guarded-standard-v1','run_id':run_id,'owner_runner_pid':os.getpid(),
|
||||
'project_root':str(root),'stage':str(stage),'roster':paths,'selected_source_map':selected['map'],
|
||||
'marker_contract_sha256':sha(contract_path),'runner_sha256':sha(Path(__file__)),'marker_module_sha256':sha(HERE/'strict_test_markers.py'),
|
||||
'engine':engine,'engine_sha256':sha(engine),'default_player_before':protected,'performance_is_not_maximum_scene_acceptance':True}
|
||||
write(out/'runner-input.json',input_receipt);write(out/'source-start.json',root_before)
|
||||
phases=[];rows=[];previous={};error=None;cleanup=[];cleanup_errors=[]
|
||||
diagnostics=module('standard_finite_diagnostics',SUPPORT/'diagnostic_gate.py')
|
||||
owners=module('standard_ordinary_proof_gate',SUPPORT/'ordinary_proof_gate.py');audio=module('standard_audio_proof_gate',SUPPORT/'audio_evidence_gate.py')
|
||||
try:
|
||||
for phase,test in [('import',None),('parse',None)]+[(str(i).zfill(3),n)for i,n in enumerate(paths)]:
|
||||
row=execute_phase(engine,stage,out,phase,test,selected,expected,previous,policy,contracts,parse_paths,
|
||||
public,protected,root,outer,markers,diagnostics,owners,audio);phases.append(row)
|
||||
if test:
|
||||
row['sequence']=len(rows);row['godot']=engine;rows.append(row)
|
||||
(out/'all-tests.json').write_text(json.dumps(rows,ensure_ascii=False,indent=2)+'\n')
|
||||
print(('PASS ' if row['passed'] else 'FAIL ')+test,flush=True)
|
||||
require(row['passed'],'first strict failed phase stops without retry: '+phase)
|
||||
except BaseException as caught: error=type(caught).__name__+': '+str(caught)
|
||||
finally:
|
||||
# Sweep actual factory objects before all fragile final receipt/guard writes.
|
||||
cleanup,cleanup_errors=outer.finish_captured(outer.OWNED)
|
||||
context=totals(rows,paths);guard_errors=[]
|
||||
try:
|
||||
require(source_refs(root)==root_before,'full canonical source unchanged at end')
|
||||
require(default_player(root)==protected,'full default player unchanged at end')
|
||||
require(inventory(stage,stage=True)==dict(expected,**previous),'whole stage/UID/report set at end')
|
||||
except BaseException as caught:guard_errors.append(type(caught).__name__+': '+str(caught))
|
||||
ended=bool(outer.OWNED) and all(r['engine_ended']is True for r in cleanup)
|
||||
passed=error is None and not cleanup_errors and not guard_errors and ended and len(phases)==len(paths)+2 and all(r['passed']for r in phases)
|
||||
write(out/'runner-ended.json',dict(context,protocol='guarded-standard-v1',run_id=run_id,owner_runner_pid=os.getpid(),
|
||||
passed=passed,engine_ended=ended,failed_suites=sum(r['failed']for r in rows),actual_captured_PIDs=[p.pid for p in outer.OWNED],
|
||||
final_owned_cleanup=cleanup,cleanup_errors=cleanup_errors,guard_errors=guard_errors,error=error,
|
||||
all_tests_sha256=sha(out/'all-tests.json') if (out/'all-tests.json').exists() else None,phases=phases,
|
||||
default_player_after=default_player(root),formal_acceptance=False,native_Windows='pending'))
|
||||
print(json.dumps(dict(context,passed=passed,error=error,cleanup_errors=cleanup_errors,guard_errors=guard_errors)),flush=True)
|
||||
return 0 if passed else 1
|
||||
if __name__=='__main__':raise SystemExit(main())
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user