diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/EXISTING_BASELINE_APPLICABILITY.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/EXISTING_BASELINE_APPLICABILITY.json new file mode 100644 index 0000000..2088461 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/EXISTING_BASELINE_APPLICABILITY.json @@ -0,0 +1,107 @@ +{ + "scope": "Existing actual full176 baseline coverage for next P23-03 audit; not P23-03 acceptance", + "source_head": "e01e04c62d689016aee1f1a6c614c11a45adcd84", + "baseline_receipts": { + "input": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-d369d1c-r01/runner-input.json", + "sha256": "734aecf949e0e9215f679e458bc61326462181142959d451619b0c07539c5e3c" + }, + "all_tests": { + "path": "/Users/korizatou114/Projects/とりにく工房ゲーム制作部/artifacts/original-completion-2026-10-02/p08-03-final-regression-d369d1c-r01/all-tests.json", + "sha256": "5d9c081e6066457d15aee3c1b90e2d0633810c270f78de8aa4a722c25d32878f" + } + }, + "executed_source_count": 1330, + "current_source_differences": [], + "reusable_baseline_suites": [ + { + "test": "tests/s2/test_inventory_logistics.gd", + "passed": true, + "executed_source_sha256": "ef8b87e721f57210da02b8cd0822f58e1a4c1cdaa19fe56301a03a87891e73d6", + "current_source_sha256": "ef8b87e721f57210da02b8cd0822f58e1a4c1cdaa19fe56301a03a87891e73d6", + "exact_test_source": true, + "reported_checks": 65, + "completion_marker": "PASS: 65 checks\n" + }, + { + "test": "tests/s3/test_guest_observation_restore_order.gd", + "passed": true, + "executed_source_sha256": "7abf5692a07edf8270fa9bf4d9ee89a3835741c208c4c670dc605158532284f2", + "current_source_sha256": "7abf5692a07edf8270fa9bf4d9ee89a3835741c208c4c670dc605158532284f2", + "exact_test_source": true, + "reported_checks": 52, + "completion_marker": "Guest observation restore-order diagnostic: 52 checks, 0 failures\n" + }, + { + "test": "tests/supply/test_supply_logistics_bridge.gd", + "passed": true, + "executed_source_sha256": "2d6ed12048b9f17e2f44208bb386d9e06eefa7962e21507fc8e63500aa66052e", + "current_source_sha256": "2d6ed12048b9f17e2f44208bb386d9e06eefa7962e21507fc8e63500aa66052e", + "exact_test_source": true, + "reported_checks": 121, + "completion_marker": "PASS: 121 checks / 0 failures\n" + }, + { + "test": "tests/ui/test_business_management.gd", + "passed": true, + "executed_source_sha256": "2c76697f9a911e9dded63ebbbc2b82ee9e616777c50a637eebd91dc4932f85a5", + "current_source_sha256": "2c76697f9a911e9dded63ebbbc2b82ee9e616777c50a637eebd91dc4932f85a5", + "exact_test_source": true, + "reported_checks": 119, + "completion_marker": "Business management UI: 119 checks, 0 failures\n" + }, + { + "test": "tests/ui/test_elevator_management.gd", + "passed": true, + "executed_source_sha256": "dff2d3f2a1cea84224aee8f70c4ad53d731df173bc7d16d7ec012c0d16c62e11", + "current_source_sha256": "dff2d3f2a1cea84224aee8f70c4ad53d731df173bc7d16d7ec012c0d16c62e11", + "exact_test_source": true, + "reported_checks": 21, + "completion_marker": "Elevator management UI: 21 checks, 0 failures\n" + }, + { + "test": "tests/ui/test_guest_observation.gd", + "passed": true, + "executed_source_sha256": "8f5af3d6ef367512b34d0cf35fd8c1d2848d020419dddfa234120206dbe4f6e4", + "current_source_sha256": "8f5af3d6ef367512b34d0cf35fd8c1d2848d020419dddfa234120206dbe4f6e4", + "exact_test_source": true, + "reported_checks": 22, + "completion_marker": "Guest observer: 22 checks, 0 failures\n" + }, + { + "test": "tests/ui/test_pixel_tower.gd", + "passed": true, + "executed_source_sha256": "f149f4b5507247dadf623e777e90b9bdb81f54324b406a8f55adaf89b649866a", + "current_source_sha256": "f149f4b5507247dadf623e777e90b9bdb81f54324b406a8f55adaf89b649866a", + "exact_test_source": true, + "reported_checks": 281, + "completion_marker": "PASS: 281 pixel tower checks\n" + }, + { + "test": "tests/ui/test_room_presentation.gd", + "passed": true, + "executed_source_sha256": "eeea7cfbdd534d5e182dc00ec09cb1a8d3688aba85ccf16beb98fe79c70686a9", + "current_source_sha256": "eeea7cfbdd534d5e182dc00ec09cb1a8d3688aba85ccf16beb98fe79c70686a9", + "exact_test_source": true, + "reported_checks": 284, + "completion_marker": "PASS: 284 room presentation checks; failures=0\n" + }, + { + "test": "tests/world/test_path_transit_density.gd", + "passed": true, + "executed_source_sha256": "8de5fc8bdf8631ff41fcd4862cea40daa3316040f381f182dc6fe09dba9f3cb9", + "current_source_sha256": "8de5fc8bdf8631ff41fcd4862cea40daa3316040f381f182dc6fe09dba9f3cb9", + "exact_test_source": true, + "reported_checks": 46, + "completion_marker": "Path transit density: 46 checks, 0 failures\n" + } + ], + "missing_acceptance": [ + "All six cross-section categories state/display snapshot equivalence", + "Identical demand controlled route-improvement comparison visible and computed", + "Actual P23-03 normal OS observation with distinct-PID formal resume", + "Exact changed-source final full regression, independent review, integration/final" + ], + "new_engine_runs": 0, + "updated_at_jst": "2026-10-15T07:38:42.792747+09:00" +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/OPUS_CONCRETE_IMPLEMENTATION_DIRECTION.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/OPUS_CONCRETE_IMPLEMENTATION_DIRECTION.json new file mode 100644 index 0000000..8aabb88 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/OPUS_CONCRETE_IMPLEMENTATION_DIRECTION.json @@ -0,0 +1,12 @@ +{ + "run": "83e836e232c74975aaf51f4fab5a1af9", + "decision": { + "action": "wait", + "task_id": "P08-03", + "reason": "P08-03 is completed and wait is the only valid action. Nothing is dispatched. This is a read-only P23-03 recipe built from the current checkout (scenes/main/world_preview.gd, scripts/ui/room_presentation.gd, scripts/facility/facility_instance.gd).\n\n1 Dependencies. P23 depends on P08 and P22 at package level only. P23-01 already closed under the same unmet P08-01/P22-02/03, so the gate is per unit.\n- Available input: P08-02/03 placement, migration and demolition. Existing registered, constructible definitions. P22-01 slot inventory. Existing Kenney/code drawing.\n- Unit-specific gates: none, provided the contract says (a) the display set is only the definitions used in the fixture, never all 30 or the 13 unmapped; (b) art is provisional existing Kenney/code drawing, with no finished-asset or rights claim (P22-02 stays open); (c) the D08/D09 quantities are not used.\n- All 6 categories and same-demand improvement stay mandatory.\n- Blocking unknown: whether Runtime has a deterministic way to hold demand fixed (same seed and arrival sequence) through existing public commands. Phase 0 must list the real Runtime/guest-spawn APIs with file:line. If none exists without editing a service, the worker returns blocked with that exact gap. Fallback: P23-03 waits behind a separately justified Runtime proposal. A \"same-demand\" claim built from fixture-only state is not acceptable.\n\n2 Defects found in world_preview.gd:\n- D1 No observability. No public report exposes what _draw_contents decides (_room_presentations, _queue_positions/_queue_hidden/_landing_badges, _boarded_actor_ids, actor modes, lamp colour). Tests reach into private vars (test_room_presentation 12 hits).\n- D2 Business state is unclear. _facility_color (:1417) maps FacilityInstance.State correctly, but NO_ACCESS/NO_POWER/NO_STAFF share one amber 2x2 px lamp. The RoomPresentation.label badge uses only operation_state, so an OPERATING room that is CLOSED, NO_STAFF or DEGRADED reads 利用0/N.\n- D3 Congestion only draws when show_grid is on (:525), so route improvement is invisible in normal observation.\n- D4 Supplies are shown only as the carrying mode on actors. Storage and logistics requests (supply_logistics_bridge.get_report) never show on the cross-section.\n- EV, queues and staff rest/rescue are already drawn; they only need reporting (D1).\n\nSmallest coherent change:\n- One pure _build_life_observation() is computed once per frame. _draw_contents consumes it and the public get_life_observation_report() returns a deep copy of it, so drawing and the report cannot drift.\n- A per-room reason badge mapped from FacilityInstance.State enum names (no ints). Japanese label text is added only in RoomPresentation.\n- A normal-view low-alpha route-density overlay using the existing get_cell_traffic.\n- A supply badge built only from existing report fields.\n- No domain, service or data edits, and no new assets.\n\n3 Exact allowed_paths:\n- scenes/main/world_preview.gd\n- scripts/ui/room_presentation.gd\n- tests/ui/test_p23_life_observation.gd and its .uid\n- tests/fixtures/p23-03/**\n- tools/run_p23_life_observation.py\n- tools/check_p23_life_observation_evidence.py and tools/test_p23_life_observation_evidence.py\n- docs/plans/original-completion-2026-10-02/execution/p23-03/**\n- completion_marker_contracts.json (append only)\n- tools/regression/suite-policy.json, only if the ui_audio_fixture_cleanup helper is used; then add one new exact-SHA policy\n\nExcluded: pixel_tower_art.gd (no redesign) and main.gd (normal observation needs no new entry; the existing layer, grid and camera are enough). If the worker shows a concrete need for either, it returns a proposal.\n\nTyped proof: the checker recomputes every report row from the whole typed snapshots (FacilityInstance state/operation_state/active_services/active_staff_ids, GuestRuntime state/current_cell/target, StaffRuntime state/carried_inventory_id/tasks, elevator report shafts/trips, path traffic, logistics report). Booleans are never trusted. Pixel samples are checked at the computed rects.\n\nSame-demand fixture (Phase 0 must confirm every API):\n- Two isolated profiles share an identical seed, demand script, budget and clock.\n- Layout A has one access route (congested).\n- Layout B adds an existing corridor or elevator via submit_command build_facility.\n- Metrics come only from typed state: queue length and wait ticks, peak density/capacity, completed services, and cell-level arrival times.\n- The checker requires that arrival inputs are identical and B is strictly better on a pre-declared metric, with no new numeric thresholds.\n\n4 Worker: one Codex worker, gpt-6-astra (reason below). No agy prerequisite, because this is wiring and observability of the existing renderer with no visual redesign. No parallel session.\n\n5 Evidence order:\n- Worker: local Python/static checks and checker tests only.\n- Root freeze, then native runs and the normal OS run for both layouts across all 6 categories, front/back layer, pan/zoom, a formal save and a separate-PID resume.\n- The OS run collects the complete CUA function trace from the beginning, using named function self-properties.\n- The collector fails if any OS data is missing.\n- Diagnostic snapshots are sparse and reused by content hash, with every acceptance field kept.\n- Then one exact-final full run (176 or more), an independent Opus review of every condition, integration, final verification and the ledger.\n- Process ownership, protected profiles and the ordinary-audio gates stay unchanged.\n- Windows stays open; no Mac substitution.\n\n6 Registration: P23-03 is the original work/acceptance verbatim, counted as 1 unit of 30 packages/88 units with no partial credit. Baseline: immutable spec SHA at registration. Provider timeout 900. Every cap is null, with no expansion.", + "codex_model": "gpt-6-astra", + "codex_model_reason": "P23-03 needs Astra:\n- **Breadth:** it maps six Runtime categories (facility, guest, staff, elevator, path, logistics) through one shared draw/report builder.\n- **No runtime checks:** the worker must confirm the actual demand and seed APIs statically, with no Godot run to catch mistakes.\n- **Repair history:** the narrower P08-03 still took 20 repairs on Sol.\n\nAstra's extra reasoning should cut repair rounds and total usage. Sol stays the default for later narrow repairs." + }, + "dispatch": "Planning only on completed P08 task; new P23-03 task must get its own actual run decision.", + "root_interpretation": "Original whole-unit work/acceptance preserved. Representative fixtures must prove generic real-state rendering, not narrow product behavior to fixture-only definitions. Unavailable all30 definitions and finished-asset delivery remain P08/P22/P25 gaps without proxy substitution." +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-baseline.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-baseline.json new file mode 100644 index 0000000..9f1fcee --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-baseline.json @@ -0,0 +1,10 @@ +[ + { + "id": "P23-03", + "requirement_id": "P23-03", + "text": "部屋、行列、EV、職員、物資、営業状態が断面上で理解できる表示へ調整する。 受入: 人物や設備の表示が実状態に対応し、同需要の動線改善を観察できる。", + "validation_ids": [ + "p23-life-observation" + ] + } +] diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-policy.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-policy.json new file mode 100644 index 0000000..3169d05 --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-policy.json @@ -0,0 +1,23 @@ +{ + "max_implementers": 1, + "max_llm": 2, + "max_heavy_tests": 1, + "max_llm_runs": null, + "timeout_seconds": 900, + "test_timeout_seconds": 300, + "max_repair_attempts": null, + "api_fallback": false, + "owner_approval_required": true, + "allowed_services": [ + "codex", + "claude", + "agy" + ], + "ui_mode": "semi-automatic", + "claude_max_budget_usd": null, + "models": { + "codex": "gpt-6.1-sol", + "claude": "claude-opus-5-5", + "agy": null + } +} diff --git a/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-validations.json b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-validations.json new file mode 100644 index 0000000..3ed628c --- /dev/null +++ b/docs/plans/original-completion-2026-10-02/execution/p23-03/registration-validations.json @@ -0,0 +1,11 @@ +{ + "p23-life-observation": { + "argv": [ + "{python}", + "-B", + "tools/check_p23_life_observation_evidence.py", + "--verify-only" + ], + "timeout_seconds": 180 + } +} diff --git a/docs/spec/acceptance/P23-03.json b/docs/spec/acceptance/P23-03.json new file mode 100644 index 0000000..efb8815 --- /dev/null +++ b/docs/spec/acceptance/P23-03.json @@ -0,0 +1,76 @@ +{ + "schema": "original-delivery-unit-v1", + "plan_id": "P23-03", + "title": "生活の観察", + "authority": { + "approved_plan": "docs/plans/original-completion-2026-10-02/IMPLEMENTATION_PLAN.md#p23", + "original": "docs/traceability/original/BASELINE.txt", + "original_sha256": "75e4bdbdeb379c9269553f0c776bdb9cc96e01f2d6aa5ca650d132c63a8aeb1a", + "original_lines": [ + 10, + 13, + 16, + 25, + 37, + 43, + 69, + 83, + 106, + 216 + ] + }, + "original_work": "部屋、行列、EV、職員、物資、営業状態が断面上で理解できる表示へ調整する。", + "original_acceptance": "人物や設備の表示が実状態に対応し、同需要の動線改善を観察できる。", + "denominator": { + "packages": 30, + "delivery_units": 88, + "this_unit": 1, + "partial_credit": false + }, + "commander_direction": { + "path": "docs/plans/original-completion-2026-10-02/execution/p23-03/OPUS_CONCRETE_IMPLEMENTATION_DIRECTION.json", + "run": "83e836e232c74975aaf51f4fab5a1af9", + "codex_model": "gpt-6-astra" + }, + "conditions": [ + "room_occupancy_and_operation", + "queues_and_overflow", + "elevator_state_and_passengers", + "staff_state_and_jobs", + "supplies_and_carried_goods", + "same_demand_route_improvement", + "normal_os_and_distinct_pid_resume" + ], + "scope": [ + "All original six categories remain required: room, queue, EV, staff, goods, business state. Generic display of actual definitions/state, never an implementation limited to fixture IDs.", + "Representative acceptance scenarios use existing original-matched constructible definitions and real runtime operations, no undefined facility proxies or invented costs/mana/staff capacities. They do not establish all30 construction, finished asset, rights or natural-gameplay acceptance.", + "Retain P08/P22 package dependencies in plan. Available unit inputs: integrated P08-02/03, P22-01 inventory, current Runtime/report definitions and existing Kenney/code art. Unavailable P08-01 geometry/production values, D08/D09 quantities, P22-02/03 asset work remain explicitly open; they may not be silently considered done.", + "No Runtime/service/production data values or new assets. No visual redesign or new UI entry. Necessary existing renderer/read-only presentation wiring and evidence only." + ], + "worker_deliverables": [ + "Phase0 API_AND_STATE_MAP.md: real file:line and SHA for same-seed/reset/arrival inputs/build commands/clock/public reports/formal save-load APIs. Confirm actual deterministic demand mechanism before related implementation. If unavailable, preserve work and report precise missing capability and minimal separate proposal; do not manufacture same-demand proof or stop unrelated preparation.", + "One coherent frame observation model consumed by actual drawing, with public deep-copy get_life_observation_report. Cover actual room users and occupancy vs queue, state reasons, queues/overflow, EV position/load/direction/phase, staff task/state/layer/position, carried goods and actual supply report data. Preserve existing motion/layer/nonmutation/selection behavior.", + "Visible per-room business reason using FacilityInstance enum names; distinguish closed/no access/no power/no staff/degraded and suspended raid/damage from actual fields. No ambiguous reliance solely on tiny color lamp or utilization badge.", + "Visible normal-view route density and actual supplies, reusing established visual style and existing get_cell_traffic/report fields; no fictional stock/request data.", + "tests/ui/test_p23_life_observation.gd, diagnostics fixtures, Root run_p23_life_observation.py and strict checker with meaningful negatives, condition matrix and honest implementation metadata. No placeholder PASS or fixed all-true assertions." + ], + "evidence_requirements": [ + "Whole typed actual state and draw-consumed report rows; checker independently recomputes each relevant field using enum/schema definitions, never trusts all-boolean or self-asserted report. Screenshots pixel/rect provenance must correspond to actual rendered report positions.", + "LayoutsA/B: identical recorded seed, demand/arrival script, budget, initial clock, service definitions and unchanged production settings; actual Runtime paths differ only through predeclared allowed layout improvement. Record actual arrival input events, paths/arrival times, queues/wait metrics/density/completed services. Predeclare relevant metric; B strictly improves without new arbitrary numeric threshold. Fixture-only fabricated state is not valid same-demand proof.", + "Root actual OS observation on both layouts across six categories, FRONT/BACK, ordinary pan/zoom; formal save and distinct actual PID normal load, state/display remains correct. Handler tests or submitted scripts are not OS.", + "Collector request/ACK lifecycle, full actual CUA tool call IDs/arguments/screenshots/calibration from start, named helper self-properties, exact PID/engine/source/spec/settings/environment and guarded whole default-player profiles. No partial failed run splicing, no raw receipt relabel.", + "Use existing owned process/ordinary audio teardown gates. Check engine end/cleanup/protection on every run. Preserve failure history.", + "Sparse diagnostic snapshots with every acceptance field, content-hash reuse and streamed manifests; no unnecessary all-state-per-frame copies or arbitrary review byte limit. Required source/evidence may not be omitted for size.", + "Final exact frozen candidate: worker static/local and impact first; Root native/OS then mandatory one full regression, independent Opus all-condition review, integration/final/ledger. Reuse only matching actual source/input/settings/environment applicability.", + "Pin stable immutable spec/contract/fixture/engine/source plus relevant normative plan acceptance text. Record progress metadata separately, avoiding unnecessary reruns from unrelated progress-only plan text changes. Never ignore normative input change.", + "No Windows same-distribution/device credit, P23-02 held-gesture or x3 performance credit, P25 finished asset/full motion credit, or all30 facility credit from this unit." + ], + "worker_instructions": [ + "Read original work/acceptance, actual recorded Opus direction and relevant current sources before changes; do Phase0 static API audit first.", + "One Codex Astra worker, no nested providers/agents/parallel workers. User removed all individual repair/inference/material caps; do not stop on old2/3/500k restrictions. Timeout900 unchanged. No API fallback/new billing/permissions.", + "Root only executes Godot/native/OS/full regression after genuine submitted. Worker runs meaningful local Python syntax/checker tests only, no Godot or full regression. Missing Root evidence is expected at worker submission; state it explicitly.", + "Keep exact allowed paths. completion_marker_contracts append only one strict source authority entry; suite-policy only if new suite uses existing ordinary cleanup, sourceSHA-specific entry preserve all old policies.", + "Use existing run_all_tests.py/source refs/strict marker/protected-profile/typed codec/owned process infrastructure read-only; no broad harness reimplementation or proof-gate removal.", + "If actual required defect outside allowed scope occurs, provide failing evidence/minimal proposal and preserve independent work. Root and Opus decide scope next." + ] +}