P08-03: 配置の通常操作受入

This commit is contained in:
Agent Control Runner
2026-10-14 07:49:56 +09:00
parent 1f0a2bcd53
commit 4f3b42dfec
14 changed files with 7181 additions and 29 deletions
@@ -3685,7 +3685,7 @@
"template": "P08 normal placement: <checks> checks, <failures> failures",
"required": true,
"fixed_check_count_used": false,
"source_sha256_at_schema_audit": "734f4f85d0b0fc45dc31fc23502425b911635667dabc0341ba0d88b0107f4405",
"source_sha256_at_schema_audit": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
"authority": {
"path": "docs/spec/acceptance/P08-03.json",
"scope": "normal placement; native and OS pending"
@@ -279,3 +279,34 @@ native and OS evidence on the final candidate, perform verify-only and final
full regression, then obtain a separate independent review of all five facets.
Any proposed historical reuse requires exact source/input applicability and
independent review; no changed-source PASS is inherited here.
## Repair10 facility-only palette (current submission)
R07 candidate 1f0a2bcd failed test_main_dashboard.gd:132 after 147 suites passed;
this historical run stopped strictly and is not final full-175 acceptance.
ROOT_FULL_R07_* and ROOT_FULL_REGRESSION_R07_* raw proof files remain unchanged.
BuildPalette now contains only the 23 registered facility buttons, with 23
columns. A single HBox is the scroll content; DemolitionButton is its sibling.
The new semantic suite checks every facility membership, scroll/HBox topology,
ordinary opening and scroll reachability. Existing operation/cleanup checks and
the one strict completion marker are retained. No Runtime/domain/assets changes.
Exact current source and input hashes are in repair10-local-source-manifest.json
and implementation.json; actual Python results are in repair10-local-validation.json.
These local controls establish no Godot or OS acceptance. Root must first rerun
test_main_dashboard and test_p08_normal_placement_ops natively, then freeze the
final candidate for native writer/reader, real OS collection, verify-only and
full-175 regression, followed by separate Opus review and integration/current
verification/ledger. All five facets remain pending. Windows device acceptance
remains open. All repair/inference/material caps stay null. No git writes,
Runner operations, agents, integration or engine runs by the worker.
Final repair10 SHA-256 pins (local controls only):
- `scenes/main/main.gd`: `36316f9edc170ba965eb2f595a740ae7fcc8914e4090f0351c0cec181d6a7431`
- `tests/ui/test_p08_normal_placement_ops.gd`: `d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e`
- `tests/fixtures/p08-03/placement.gd`: `1ebaaa80784905d661954e255bfb8a96a3a963a57b9a38b19e7f91b90fb628b3`
- `docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json`: `9eab2b529e11d00bb00a415f29135b5fe7d8df2a282564ecc37292c8bda64010`
- `tools/regression/suite-policy.json`: `a74dc701155b6207bc23095296d723928f62719fce14fda392b12f9947007fb1`
- Complete source/input manifest: `9f3e7ddb8cecf53d668dd4556f504e4fba26b29fb81dfe4b583ab060c6e6a9c8`
- Final local validation: `ef88dee24a9796600d6d90c6a0ae563c8d06f039231dae6db01d1f96ede2055b` (83 checker tests / 0 failures; four Python syntax checks passed).
@@ -0,0 +1,277 @@
{
"phase": "147",
"test": "tests/ui/test_main_dashboard.gd",
"passed": false,
"failed": true,
"validation_error": "AssertionError: native ERROR/FAIL/ObjectDB/resource diagnostics never allowed",
"profile_startup_name": "TheTree-PCK-tests-e5cb56d130e248c3a42d9ee038103767-standard-startup-147",
"private_project_sha256": "c107c8c021eb4d886c580d0e195f8ea4b82d2bef9132c2f40b821174686804f8",
"private_project_fields": 2,
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
"policy": {
"source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
"ordinary_cleanup_prepared": false,
"ordinary_control_labels": [],
"old_bounded_teardown": true,
"new_audio_QA": false,
"path": "tests/ui/test_main_dashboard.gd",
"candidate_source_sha256": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20"
},
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"logical_script": "res://tests/ui/test_main_dashboard.gd",
"starter_sha256": "d3a7cb6d65c098794b75d54bc3bb572894ba94ebec0746cff4bf0b99b9f332dd",
"controlled_environment": {
"THE_TREE_PACK_PROFILE_NAME": "TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
"THE_TREE_PACK_PROFILE_EXPECTED": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
"THE_TREE_PACK_PROFILE_REPORT": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147-profile.json",
"THE_TREE_FULL_PARSE_PATHS": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/parse-paths.json",
"THE_TREE_AUDIO_TEARDOWN_PROOF_DIR": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147-teardown"
},
"native_process": {
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"pid": 66967,
"started_utc": "2026-10-13T22:42:29.505015+00:00",
"ended_utc": "2026-10-13T22:42:33.592473+00:00",
"wall_seconds": 4.087419749999981,
"exit_code": 1,
"helper_exit_code": 1,
"timed_out": false,
"stdout_sha256": "aa1c521a68968776506b900e8c4f37fbeb834165ef82ab423eb6403fb29cedb4",
"stderr_sha256": "1f058d97960cd4d1df9f564a65801220987a3dcdd14ea2e6761495be91a23be8",
"error_lines": [
"ERROR: all23 facilities including the cleaning room appear in the build palette",
"ERROR: FAIL: 1 of 169 checks failed"
],
"owned_popen_ended": true,
"old_helper_engine_ended": true,
"start_receipt_written": true,
"end_receipt_written": true,
"lifecycle_error": null,
"old_helper_lifecycle_error": null,
"actual_start_binding": {
"scope": "isolated diagnostic owned child",
"event": "ENGINE_STARTED",
"actual_pid": 66967,
"owner_pid": 55474,
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"monotonic_ns": 1423635909541,
"pid": 66967,
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"started_utc": "2026-10-13T22:42:29.505015+00:00",
"current_process_identity": {
"pid": 66967,
"ppid": 55474,
"pgid": 66967,
"args": "/Applications/Godot.app/Contents/MacOS/Godot --headless --path /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage --script /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd --verbose --log-file /Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
},
"live_identity_exact": true,
"tracked_child_ended_before_initial_probe": false,
"signal_scope": "tracked Popen child only; no external group signal"
},
"actual_end_binding": {
"scope": "isolated diagnostic owned child",
"event": "ENGINE_ENDED",
"actual_pid": 66967,
"owner_pid": 55474,
"command": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"monotonic_ns": 1427715972291,
"exit_code": 1,
"actual_process_exit_code": 1,
"engine_ended": true,
"timed_out": false,
"lifecycle_error": null,
"start_receipt_written": true,
"pid": 66967,
"argv": [
"/Applications/Godot.app/Contents/MacOS/Godot",
"--headless",
"--path",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/stage",
"--script",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/starters/147.gd",
"--verbose",
"--log-file",
"/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log"
],
"ended_utc": "2026-10-13T22:42:33.587191+00:00",
"signal_scope": "tracked Popen child only; no external group signal"
},
"strict_native_diagnostics": {
"errors": [
"ERROR: all23 facilities including the cleaning room appear in the build palette",
"ERROR: FAIL: 1 of 169 checks failed"
],
"banner_count": 1,
"known_unicode_diagnostic_count": 0,
"unrecognized_unicode_diagnostic_count": 0,
"exit_leak_diagnostic_lines": []
},
"external_process_or_group_signals": 0,
"owned_child_process_helper_sha256": "c007e712c281573254faa1233c2ac92e100ab87393256a6dc096b35283e43037",
"adapter_owned_cleanup": {
"owned_child_created": true,
"engine_ended": true,
"actual_process_exit_code": 1,
"attempts": [
{
"attempt": 1,
"kill_attempted": false,
"wait_timeout_seconds": 5,
"wait_completed": true,
"errors": [],
"poll_before": 1,
"wait_returned_code": 1,
"poll_after": 1
}
],
"errors": []
},
"adapter_error": null,
"old_helper_bytes_preserved": true,
"helper_wait_None_maps_to_actual_timeout_seconds": 5,
"explicit_helper_wait_timeouts_preserved": true,
"additional_cleanup_wait_timeout_seconds": 5,
"additional_cleanup_max_attempts": 3
},
"outer_actual_capture": {
"actual_captured_pids": [
66967
],
"cleanup": [
{
"pid": 66967,
"cleanup": {
"owned_child_created": true,
"engine_ended": true,
"actual_process_exit_code": 1,
"attempts": [
{
"attempt": 1,
"kill_attempted": false,
"wait_timeout_seconds": 5,
"wait_completed": true,
"errors": [],
"poll_before": 1,
"wait_returned_code": 1,
"poll_after": 1
}
],
"errors": []
},
"outer_cleanup_errors": [],
"engine_ended": true,
"outer_maximum_helper_invocations": 3,
"helper_maximum_waits": 3,
"per_wait_timeout_seconds": 5,
"foreign_process_or_group_signals": 0
}
],
"adapter_exception": null,
"all_captured_ended": true,
"outer_cleanup_errors": [],
"foreign_process_or_group_signals": 0,
"all_cleanup_before_outer_receipt": true,
"outer_receipt_written": true,
"outer_receipt_error": null,
"passed": true
},
"actual_pid": 66967,
"engine_ended": true,
"exit_code": 1,
"log": "tests__ui__test_main_dashboard.gd.log",
"log_sha256": "f0c217b36ff566c5445ed98b2c322ae47c07198b7ecf76b31c32652380285e5b",
"raw_native_log": {
"path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01/147/engine-native.log",
"bytes": 21511,
"sha256": "e6dd83843678b2b0247d38cf4efc0921ff456e3c4349eb9f4548a354fbbe712c"
},
"completion": {
"passed": false,
"checks": null,
"failures": null,
"marker": null,
"errors": [
"missing/duplicate primary completion marker",
"raw diagnostics or FAIL lines"
],
"diagnostic_lines": [
"ERROR: all23 facilities including the cleaning room appear in the build palette",
"ERROR: FAIL: 1 of 169 checks failed"
],
"known_leak_warning_lines": [],
"known_leak_warning_count": 0,
"known_unicode_diagnostic_count": 0,
"unrecognized_unicode_diagnostic_count": 0
},
"reported_checks": null,
"reported_failures": null,
"completion_marker": null,
"collector_errors": [
"missing/duplicate primary completion marker",
"raw diagnostics or FAIL lines"
],
"whole_startup_profile_after": {
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-e5cb56d130e248c3a42d9ee038103767-standard-startup-147",
"files": {},
"fresh_before_engine": true
},
"whole_runtime_profile_after": {
"path": "/Users/korizatou114/Library/Application Support/TheTree-PCK-tests-1e2e00eb89e24067a79af5e3f8fbcc92-standard-runtime-147",
"files": {}
},
"generated_reports": {},
"source_sha256_end": "fa9ee0c4b9aee00a2be6d05a9dab7c0c3e8b0beb2b944257de1dc308bfc3cc20",
"default_player_entire_profile_unchanged": true,
"sequence": 147,
"godot": "/Applications/Godot.app/Contents/MacOS/Godot"
}
@@ -0,0 +1,11 @@
ERROR: all23 facilities including the cleaning room appear in the build palette
at: push_error (core/variant/variant_utility.cpp:1023)
GDScript backtrace (most recent call first):
[0] _expect (res://tests/ui/test_main_dashboard.gd:623)
[1] _run (res://tests/ui/test_main_dashboard.gd:132)
[2] _test_defense_notice (res://tests/ui/test_main_dashboard.gd:615)
ERROR: FAIL: 1 of 169 checks failed
at: push_error (core/variant/variant_utility.cpp:1023)
GDScript backtrace (most recent call first):
[0] _run (res://tests/ui/test_main_dashboard.gd:213)
[1] free_owner_and_wait (res://tests/helpers/ui_audio_teardown.gd:58)
@@ -0,0 +1,48 @@
{
"unit": "P08-03",
"candidate": "1f0a2bcd53c3f9fdf057e7916871cf5b42145c55",
"output": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-full-regression-1f0a2bcd-r01",
"suites_passed": 147,
"failed_suite": "tests/ui/test_main_dashboard.gd",
"failed_labels": [
"ERROR: all23 facilities including the cleaning room appear in the build palette",
"ERROR: FAIL: 1 of 169 checks failed"
],
"remaining_unexecuted": [
"tests/ui/test_opening_assignment.gd",
"tests/ui/test_original_build_pointer.gd",
"tests/ui/test_original_facility_controls.gd",
"tests/ui/test_p08_normal_placement_ops.gd",
"tests/ui/test_paired_bgm.gd",
"tests/ui/test_pixel_tower.gd",
"tests/ui/test_rank_pointer.gd",
"tests/ui/test_room_presentation.gd",
"tests/ui/test_selection_autosave.gd",
"tests/ui/test_selection_departure.gd",
"tests/ui/test_selection_lifecycle.gd",
"tests/ui/test_staff_management.gd",
"tests/ui/test_staff_rescue.gd",
"tests/ui/test_staff_rest.gd",
"tests/ui/test_stair_transport_details.gd",
"tests/ui/test_supply_auto_purchase_ui.gd",
"tests/ui/test_supply_management.gd",
"tests/ui/test_ui_audio_feedback.gd",
"tests/ui/test_ui_presentation_audio_contract.gd",
"tests/ui/test_upkeep_closed_ui.gd",
"tests/ui/test_upkeep_inspector.gd",
"tests/ui/test_world_tree_rank.gd",
"tests/world/test_elevator_topology.gd",
"tests/world/test_legacy_stairs.gd",
"tests/world/test_path_transit_density.gd",
"tests/world/test_path_vertical_policy.gd",
"tests/world/test_stair_infrastructure.gd"
],
"error": "AssertionError: first strict failed phase stops without retry: 147",
"cleanup_errors": [],
"guard_errors": [],
"owned_ended": true,
"formal_acceptance": false,
"test_assertion": "palette.get_child_count() == 23 at tests/ui/test_main_dashboard.gd:132",
"observed_product_source": "Main adds DemolitionButton to BuildPalette with grid.columns = MVP_FACILITY_IDS.size()+1; catalog button/icon check23 separately passes",
"candidate_fix_for_Opus_assessment": "Keep 23 facility-only grid membership; normal demolition tool as sibling control within same scroll palette, preserve ordinary access and all modes. No test condition weakening or arbitrary facility count change."
}
@@ -5,7 +5,7 @@
"P08-03"
],
"base_commit": "12430ba89970bda349781e51157e72e48a4ac06f",
"actual_worktree_HEAD": "4a17d0e0f589fa76d81f1d4630ec45c63bac21ab",
"actual_worktree_HEAD": "1f0a2bcd53c3f9fdf057e7916871cf5b42145c55",
"worker_committed": false,
"final_commit": null,
"final_commit_note": "Root must freeze and record the submitted candidate; worker git writes are prohibited.",
@@ -17,22 +17,22 @@
"partial_credit": false
},
"final_local_files_sha256": {
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "f59f01f65c795057117fda753706a6200928d4954af901fc965cf1a7c09232b5",
"docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md": "10068b65fedf08bcec7edb3bf1797b7af3776a7ced1ffb9a8a64bf98bd49a757",
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "9eab2b529e11d00bb00a415f29135b5fe7d8df2a282564ecc37292c8bda64010",
"docs/plans/original-completion-2026-10-02/execution/p08-03/CONDITION_MATRIX.md": "e3555cb48ac268af919f8196faa698bc19e344c42d6f37f16b62d2458ca39219",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_COLLECTION.md": "0bf5a4b0f6f1fc21e4e0dd314f74030cdae9073c7531f77fb8b6177dfb0b2823",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd": "21855e3b32263eb98127202467b770cb1334fa70c6b357825a122db385ffa8d6",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd.uid": "d7f97560c8bbdfdaed173b2b48261e65b92847bd0493dd1cc2ebb309d0622314",
"scenes/main/main.gd": "e015e18fee8c114ddce39e46a04be139e694a4e3569855065576c0c909b94fc6",
"scenes/main/main.gd": "36316f9edc170ba965eb2f595a740ae7fcc8914e4090f0351c0cec181d6a7431",
"scenes/main/world_preview.gd": "2f0e417ae2ff1745062bdbdcec74b3b058cfcffbbd9001ca3e6a62cd23efb47d",
"tests/fixtures/p08-03/checker_fixture.py": "e83a94dfcfd490a99bd44ed71bd6c378de94413750cfce68dea938bfbbbf011f",
"tests/fixtures/p08-03/passive_placement.gd": "4bf9e4cf0424c2965d28c378e07f00fdb8388f4e3f51975a92128bd0e921242d",
"tests/fixtures/p08-03/passive_placement.gd.uid": "f75e3f2d9555c30cee3a1de882f32225fc624565a78a7ef3f5c604325c578ce3",
"tests/fixtures/p08-03/placement.gd": "1ebaaa80784905d661954e255bfb8a96a3a963a57b9a38b19e7f91b90fb628b3",
"tests/fixtures/p08-03/placement.gd.uid": "5caca08c1e627e0ca07e2ab7b13bd82b24a22f77513fe87e30b79023568e1987",
"tests/ui/test_p08_normal_placement_ops.gd": "734f4f85d0b0fc45dc31fc23502425b911635667dabc0341ba0d88b0107f4405",
"tests/ui/test_p08_normal_placement_ops.gd": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
"tests/ui/test_p08_normal_placement_ops.gd.uid": "7d168ac50ca82ae1979da31c467f9a5020ca5ec7616b5bf99294413d85b3b299",
"tools/check_p08_normal_placement_evidence.py": "e3fea19be9952cd99be4df003734c43e6f81580b79984addb3622d81c1a2cc4e",
"tools/regression/suite-policy.json": "e875e6b05bbac8dfb98c2af007221436fa558ddb8806b6214689830295b32e8d",
"tools/regression/suite-policy.json": "a74dc701155b6207bc23095296d723928f62719fce14fda392b12f9947007fb1",
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
"tools/test_p08_normal_placement_evidence.py": "f75ce5a2aeee080864d252dc4285e32f107ce0b48b7f62dd598665a13ffa5637",
"docs/plans/original-completion-2026-10-02/execution/p08-03/NATIVE_R02_READER_OPERATION_DELTA.json": "60463e735d4f473bdad7b0925c37b9ca71ee34d6f0eb74ea6c07b508b5153e41",
@@ -44,15 +44,27 @@
"tests/fixtures/p08-03/r05-reader-checkpoint-provenance.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9"
},
"executed_source_manifest": {
"path": "repair-r07-local-source-manifest.json",
"sha256": "bd23d9f9ce58be85ebd3749112b281d7d71cf4eb9733d4aecf2e57a15f4e8ca7",
"path": "repair10-local-source-manifest.json",
"sha256": "9f3e7ddb8cecf53d668dd4556f504e4fba26b29fb81dfe4b583ab060c6e6a9c8",
"source_file_count": 1328,
"contains": "Complete final local source and fixture/evidence input map; no material-size omission"
"contains": "Complete final local source and fixture/evidence inputs; no material-size omission; Python-only execution"
},
"final_input_sha256": {
"AGENTS.md": "8d8dc40211390275f858f322743309a0663c4f2d859780a8b8a08cea1450e8b3",
"docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md": "e3d5a83b65207a402f8b36a06f9893ab969adcbb5b97915930af1358b15749e1",
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "f59f01f65c795057117fda753706a6200928d4954af901fc965cf1a7c09232b5",
"docs/plans/original-completion-2026-10-02/execution/completion_marker_contracts.json": "9eab2b529e11d00bb00a415f29135b5fe7d8df2a282564ecc37292c8bda64010",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_CHECKER_R05_INFRASTRUCTURE_ORACLE.json": "9fd11c89e53d4fa569f809c06be1d0592741c58691fae3e515cd1c12da86758c",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_FULL_R07_FAILED_PHASE.json": "ba09922f0e3a0468e09e03fe8926366efd996d45a837ad07ec0428f73a7240d0",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_FULL_R07_STDERR.log": "1f058d97960cd4d1df9f564a65801220987a3dcdd14ea2e6761495be91a23be8",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_FULL_REGRESSION_R07_PALETTE_MEMBERSHIP_FAILURE.json": "86d76fa01fb62546a5ae9041c2a5bcc9bb69c486e8afa43bb39d9a455bbb7881",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_NATIVE_R06_OS_TIMEOUT.json": "7e3068026e0f779cd05273b8e4d64e78f7cb923c9241172c6bad7b347682445e",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R05_GUIDE_INTERCEPTION.json": "b8a9041b59b87c7b01ebbf36f320a5227734034c6b2d45d26fd22ce654d2c612",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_SELECTED_CELL_READBACK.json": "2c33d781a5b3cce497337e9d10006a0ad5ee020ffa489374ec3133553abcbf69",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_SELECTED_RECEPTION.png": "46790a7a14cd0452c0f3aa167ec8510675648ccbdd3e30567ea0ca5095b1e9c4",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_writer-actions.json.gz": "f0e71967a29c64a122627de5f0ca90797a384c9b800c461cd38055d9b6eb95ad",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_writer-request-0063_observed.json.gz": "59170312cb02a25b172c6ab7ccb7cfb495e17989ae20b2adb83c49d011678e58",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT.json.gz": "27fd3b41834106ccd6a0980dfa2bc91cc19806dd3f552ba04246efb400763233",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT_PROVENANCE.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd": "21855e3b32263eb98127202467b770cb1334fa70c6b357825a122db385ffa8d6",
"docs/plans/original-completion-2026-10-02/execution/p08-03/passive_os_placement_recorder.gd.uid": "d7f97560c8bbdfdaed173b2b48261e65b92847bd0493dd1cc2ebb309d0622314",
"docs/spec/acceptance/P08-03.json": "37a6a581b5a9bbe03c07a3a266b03df1f740ff488da33ecd9bd60f5b32f1efe1",
@@ -63,24 +75,15 @@
"tests/fixtures/p08-03/placement.gd": "1ebaaa80784905d661954e255bfb8a96a3a963a57b9a38b19e7f91b90fb628b3",
"tests/fixtures/p08-03/placement.gd.uid": "5caca08c1e627e0ca07e2ab7b13bd82b24a22f77513fe87e30b79023568e1987",
"tests/fixtures/p08-03/r05-reader-checkpoint-provenance.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9",
"tests/fixtures/p08-03/r05-reader-checkpoint.json.gz": "27fd3b41834106ccd6a0980dfa2bc91cc19806dd3f552ba04246efb400763233",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_CHECKER_R05_INFRASTRUCTURE_ORACLE.json": "9fd11c89e53d4fa569f809c06be1d0592741c58691fae3e515cd1c12da86758c",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R05_GUIDE_INTERCEPTION.json": "b8a9041b59b87c7b01ebbf36f320a5227734034c6b2d45d26fd22ce654d2c612",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT.json.gz": "27fd3b41834106ccd6a0980dfa2bc91cc19806dd3f552ba04246efb400763233",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_R05_READER_CHECKPOINT_PROVENANCE.json": "daf034375facf36e9cc8da4ec0001d7c7b017c315a9155680b4b490e582ec5b9",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_NATIVE_R06_OS_TIMEOUT.json": "7e3068026e0f779cd05273b8e4d64e78f7cb923c9241172c6bad7b347682445e",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_SELECTED_CELL_READBACK.json": "2c33d781a5b3cce497337e9d10006a0ad5ee020ffa489374ec3133553abcbf69",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_SELECTED_RECEPTION.png": "46790a7a14cd0452c0f3aa167ec8510675648ccbdd3e30567ea0ca5095b1e9c4",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_writer-actions.json.gz": "f0e71967a29c64a122627de5f0ca90797a384c9b800c461cd38055d9b6eb95ad",
"docs/plans/original-completion-2026-10-02/execution/p08-03/ROOT_OS_R07_writer-request-0063_observed.json.gz": "59170312cb02a25b172c6ab7ccb7cfb495e17989ae20b2adb83c49d011678e58"
"tests/fixtures/p08-03/r05-reader-checkpoint.json.gz": "27fd3b41834106ccd6a0980dfa2bc91cc19806dd3f552ba04246efb400763233"
},
"actual_local_validation": {
"path": "repair-r07-local-validation.json",
"sha256": "38ee3e0bfa6416da2adbad194c96b57c2e3da7b23475f38dd9c17f46e2b1870f",
"path": "repair10-local-validation.json",
"sha256": "ef88dee24a9796600d6d90c6a0ae563c8d06f039231dae6db01d1f96ede2055b",
"python_syntax": "pass: four final Python sources parsed in memory",
"checker_control_tests": 83,
"checker_exit_code": 0,
"log_sha256": "60c535311af9c32b5f8ce706d88f99ef963217d000c1d12f8bcdd62b2a2ad0c3",
"log_sha256": "b3d9829ba6d23abf088f52231aef135d29b6d6dc3513a3d850ade9c2217316f9",
"native_OS_full_regression": "not executed"
},
"conditions": {
@@ -127,6 +130,7 @@
},
"pending": [
"Root clean exact candidate freeze",
"Root affected native UI suites: test_main_dashboard and test_p08_normal_placement_ops before frozen final native/OS/full-175 regression",
"Godot parsing and actual handler execution",
"Root isolated native writer/reader and ordinary owner/audio proof",
"Root real CUA input/screenshots/receipts and passive observations",
@@ -279,6 +283,25 @@
"Separate independent review",
"Integration/current verification"
]
},
"repair10": {
"authority": "ROOT_FULL_REGRESSION_R07_PALETTE_MEMBERSHIP_FAILURE.json",
"failed_candidate": "1f0a2bcd53c3f9fdf057e7916871cf5b42145c55",
"historical_passed_suites": 147,
"historical_failure": "test_main_dashboard.gd:132 palette child count",
"changes": [
"23 facility-only BuildPalette columns and children",
"single scroll HBox with demolition sibling",
"semantic facility membership and normal-access checks in P08 suite",
"strict marker and cleanup SHA pins updated; existing entries/labels retained"
],
"raw_failed_proof_edited": false,
"native_OS_full_175_Opus_review_integration": "pending"
}
},
"caps": {
"repair": null,
"inference": null,
"material_bytes": null
}
}
@@ -0,0 +1,5 @@
...................................................................................
----------------------------------------------------------------------
Ran 83 tests in 76.743s
OK
@@ -0,0 +1,5 @@
...................................................................................
----------------------------------------------------------------------
Ran 83 tests in 74.493s
OK
@@ -0,0 +1,10 @@
{
"method": "ast.parse in memory; no pyc",
"files": {
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
"tools/check_p08_normal_placement_evidence.py": "e3fea19be9952cd99be4df003734c43e6f81580b79984addb3622d81c1a2cc4e",
"tools/test_p08_normal_placement_evidence.py": "f75ce5a2aeee080864d252dc4285e32f107ce0b48b7f62dd598665a13ffa5637",
"tests/fixtures/p08-03/checker_fixture.py": "e83a94dfcfd490a99bd44ed71bd6c378de94413750cfce68dea938bfbbbf011f"
},
"passed": true
}
@@ -0,0 +1,29 @@
{
"task_id": "P08-03",
"syntax": {
"method": "ast.parse in memory; no pyc",
"files": {
"tools/run_p08_normal_placement.py": "5cb1f58664a0bec71c8b5e853749d1c3656e0a2a027201e33fbaa6b0c0291fc6",
"tools/check_p08_normal_placement_evidence.py": "e3fea19be9952cd99be4df003734c43e6f81580b79984addb3622d81c1a2cc4e",
"tools/test_p08_normal_placement_evidence.py": "f75ce5a2aeee080864d252dc4285e32f107ce0b48b7f62dd598665a13ffa5637",
"tests/fixtures/p08-03/checker_fixture.py": "e83a94dfcfd490a99bd44ed71bd6c378de94413750cfce68dea938bfbbbf011f"
},
"passed": true
},
"checker_tests": {
"argv": [
"python3",
"tools/test_p08_normal_placement_evidence.py"
],
"exit_code": 0,
"log": "repair10-final-local-checker-tests.log",
"log_sha256": "b3d9829ba6d23abf088f52231aef135d29b6d6dc3513a3d850ade9c2217316f9",
"test_count": 83,
"failures": 0
},
"native_engines_started": 0,
"OS_operations": 0,
"full_regression_executed": false,
"acceptance": "pending",
"local_source_manifest_sha256": "9f3e7ddb8cecf53d668dd4556f504e4fba26b29fb81dfe4b583ab060c6e6a9c8"
}
+7 -3
View File
@@ -795,16 +795,20 @@ func _create_bottom_bar() -> Control:
palette_scroll.custom_minimum_size.y = 62
palette_scroll.visible = false
column.add_child(palette_scroll)
var palette_row := HBoxContainer.new()
palette_row.name = "BuildPaletteRow"
palette_row.add_theme_constant_override("separation", 4)
palette_scroll.add_child(palette_row)
var grid := GridContainer.new()
grid.name = "BuildPalette"
grid.columns = MVP_FACILITY_IDS.size() + 1
grid.columns = MVP_FACILITY_IDS.size()
grid.add_theme_constant_override("h_separation", 4)
grid.add_theme_constant_override("v_separation", 0)
palette_scroll.add_child(grid)
palette_row.add_child(grid)
demolition_button = _button("撤去", _toggle_demolition_mode, 72)
demolition_button.name = "DemolitionButton"
demolition_button.toggle_mode = true
grid.add_child(demolition_button)
palette_row.add_child(demolition_button)
build_status_label = Label.new()
build_status_label.name = "BuildStatusLabel"
+37 -1
View File
@@ -1,5 +1,41 @@
extends SceneTree
const Placement := preload("res://tests/fixtures/p08-03/placement.gd")
class PalettePlacement extends Placement:
func setup() -> void:
super.setup()
await frames()
var palette := main.find_child("BuildPalette", true, false) as GridContainer
expect(palette != null, "production facility palette exists")
if palette == null:
return
expect(palette.get_child_count() == 23 and palette.columns == 23,
"palette has exactly 23 facility slots")
expect(main.build_buttons.size() == 23, "all 23 registered facility buttons exist")
for child: Node in palette.get_children():
expect(child is Button and main.build_buttons.values().has(child),
"every palette child is a registered facility button")
for id: StringName in main.MVP_FACILITY_IDS:
expect(main.build_buttons.has(id) and main.build_buttons[id].get_parent() == palette,
"each facility remains inside the facility palette")
var row := palette.get_parent()
expect(row is HBoxContainer and row.get_parent() == main.palette_scroll
and main.palette_scroll.get_child_count() == 1,
"one HBox is the normal palette scroll content")
var demolition: Button = main.demolition_button
expect(demolition != null and demolition.get_parent() == row
and demolition.name == "DemolitionButton" and row.get_child_count() == 2,
"normal demolition entry is a sibling of the facility palette")
if demolition == null:
return
await button(main.palette_toggle_button)
expect(main.palette_scroll.visible and demolition.is_visible_in_tree()
and not demolition.disabled and demolition.toggle_mode,
"opening the normal palette exposes the available demolition entry")
await reveal(demolition)
expect(demolition.get_global_rect().intersects(main.palette_scroll.get_global_rect()),
"demolition entry is reachable through normal palette scrolling")
await button(main.palette_toggle_button)
func _initialize() -> void:
call_deferred("run")
func run() -> void:
@@ -8,6 +44,6 @@ func run() -> void:
if directory.is_empty():
directory = ProjectSettings.globalize_path("user://p08-placement-%d" % Time.get_ticks_usec())
role = "standalone"
var result: Dictionary = await Placement.new().run(self, directory, role)
var result: Dictionary = await PalettePlacement.new().run(self, directory, role)
print("P08 normal placement: %d checks, %d failures" % [result.checks, result.failures])
quit(0 if result.failures == 0 else 1)
+1 -1
View File
@@ -393,7 +393,7 @@
"new_audio_QA": false
},
"tests/ui/test_p08_normal_placement_ops.gd": {
"source_sha256": "734f4f85d0b0fc45dc31fc23502425b911635667dabc0341ba0d88b0107f4405",
"source_sha256": "d3c246d34f8fd66f6ed237e42a86df89ebaf481bc9dee143b4de8d654ce0eb2e",
"ordinary_cleanup_prepared": true,
"ordinary_control_labels": [
"single"