20 KiB
P23-03 worker status — static-complete submission
Contract base: 860136f7099f5e3aee99da5798a627a77f2d8eea.
This finalization preserves every pre-existing modified and untracked file.
Static-complete is supported by the wiring inspection and local checks below.
No acceptance claim is made. No Godot, native, OS collector, Runner, full
regression, git write, branch change, or other worker was used.
Current wiring confirmed by git diff and rg only
Line numbers refer to the current candidate.
- Checker
tools/check_p23_life_observation_evidence.py:checkat 1189 reachesinspect_native_phases(1162) at 1215 andinspect_stream(950) at 1220/1226. The stream inspection invokescompare_rest(531) at 968,compare_motion(738) at 974, andcompare_actor_geometry(800) at 975, alongside actor, room, queue, traffic, goods, badge and cabin checks. checkreachesinspect_os_receipt(1038),inspect_os_requests(1092), andinspect_resume(1070) at 1249, 1250 and 1257. Request inspection callsscreenshot_pixels(184) at 1143, which invokesinspect_conversion(158) at 191 for JPEG evidence; rectangle/pixel checking follows at 1154.checkbuilds executed check sets at 1270–1272, then callsBLOCKERSat 1273, reachingcondition_matrix(982) through 1000. All original seven CONDITIONS and six CATEGORIES (room, queue, EV, staff, goods, business state, represented by the keybusiness) remain required. Missing executed check names produce pending/deficits; no fixed-true matrix.- Collector
tools/run_p23_life_observation.py:collect_os(110) invokescollect_screenshots(26) at 186. JPEG collection invokesconvert_screenshot(73) at 55; conversion callsinspect_conversionat 107. Raw CUA bytes and tool-call bindings are retained separately from converted PNG and conversion receipts. This wiring was inspected, not run. diagnostic_stream.gdcaptures hash-addressedrest_auditandmotionat 70–78.rest_audit(89) records selection inputs, route/cost probes, locks/transit and comparison-only Runtime output. No stored-rest field was introduced. The source-grounded correction supersedes the old stored-state proposal below. MotionObserver retains two draw frames, not whole Runtime state per frame.- Native route:
tests/ui/test_p23_life_observation.gdat 18–21 invokeslayout_comparison.gd; the runner invokes that UI test at 309 for A/B. Layout comparison preloads diagnostics at 5 and starts watching at 65. - Normal OS route is separate from the native UI component test: runner
RECORDER at 24 is copied/launched at 145/152;
passive_os_recorder.gdpreloadspassive_observation.gdat 2 and calls its inherited run at 6.passive_observation.gdextendsobservation.gdat 1;observation.gdpreloads diagnostics/layout comparison at 3–4 and watches the real preview at 26. These fixtures are reached through the OS runner, not directly preloaded by the native UI test. - Existing mutation negatives cover conversion provenance, rest operands, motion history, rectangle/pixel transforms, process/source/profile guards, formal members/distinct PID/ACK, and every condition/category matrix cell. No concrete missing call or negative was found; no code hardening was added.
Exact local commands and real results
git status --short,git diff --stat, and targetedgit diff --for the collector, UI test, diagnostic fixture and marker: inspected existing changes without modifying git state.- Targeted
rg -n/rg -n -A...searches for function definitions, calls, fixture preloads/extends, rest_audit/motion, CONDITIONS/CATEGORIES and unittest methods in the three P23 tools and five P23 fixtures/UI test: wiring results recorded above. No Runtime/source audit or Phase0 repetition. python3 -m py_compile tools/run_p23_life_observation.py tools/check_p23_life_observation_evidence.py tools/test_p23_life_observation_evidence.py: initial attempt failed because the interpreter's default cache destination under Library/Caches was not writable; no syntax failure was reported.PYTHONPYCACHEPREFIX=docs/plans/original-completion-2026-10-02/execution/p23-03/.finalization-pycache python3 -m py_compile tools/run_p23_life_observation.py tools/check_p23_life_observation_evidence.py tools/test_p23_life_observation_evidence.py: PASS, exit 0 for all three tools.python3 -B tools/test_p23_life_observation_evidence.py: 27 test methods run, 27 passed, 0 failures/errors; reported 0.044 seconds. These are synthetic checker tests, not native/OS evidence.git diff --check: PASS, exit 0; repeated after this status rewrite.- Read-only
python3 -B -cJSON/hash/path assertions usinggit show 860136f7099f5e3aee99da5798a627a77f2d8eea:<path>,git diff --name-only <base>andgit ls-files --others --exclude-standard: PASS. All old marker metadata/rows equal base; exactly one appended P23-03 required source-authority entry; test SHAcc7049e1c3919585caeefd1747be12fbf3fa52141fcdb980929c8a16fd7e2ee1matches current bytes. suite-policy.json equals base byte-for-byte. All 16 changed/untracked paths relative to base are allowed. - The immutable spec SHA matches
8568457df849ef587c731f072d77244ef5420fc4e1190c5069cfd6cfeea9c89fusing the existing checker'sread_text().strip().encode()convention. An initial extra raw-byte SHA assertion failed (raw file SHA1a925e0d7f5c1c9f28670d29dd0fdc5aa48f4d5415946d6de4c15e1d83b5ed66); normalized verification passed and the spec has no diff against base. - An initial inline validation here-document could not create its shell
temporary file; rerun via
python3 -B -csucceeded. - Removed only the temporary .finalization-pycache tree created by this run. No pre-existing dirty/untracked material was removed.
Root work still pending — expected, not worker blockers
Native Godot execution; actual OS collector with screenshots for both layouts and all six categories, FRONT/BACK and ordinary pan/zoom; formal save and distinct actual PID normal resume; one full exact-candidate 177-suite regression; independent Opus all-condition review. These must precede any acceptance determination. Constructibility, visual correctness and same-demand improvement have not been claimed from static checks.
Superseded history — retained verbatim
The following earlier blocked statuses (including the 19-method and "not yet wired" claims) describe previous candidates and are superseded by the current wiring and results above.
Current RUN continuation — blocked on stored-rest-destination contract
All seven pre-existing modified files and three untracked fixtures were retained. No git writes, agents, Godot, collector execution, Runner or full regression. This is not a genuine completed submission and makes no acceptance claim. Root native/OS evidence remains pending, independently of this source blocker.
Changes completed in this continuation:
- Removed mandatory left-button drag and its pan-change assertion. Camera screenshots now use ordinary-wheel-zoom, pan-mode-button, move-mode-wheel-pan. Existing non-Ctrl event observation is preserved.
- Added stdlib PNG decoding with CRC/chunk/end checks, RGB/RGBA and filters 0–4. JPEG dimensions reuse the P08 helper; no JPEG decoder or PIL was added.
- Added conversion receipt inspection and Root-only convert_screenshot helper: separate output, original CUA hash/call binding, sips executable SHA/argv, output digests, decoded PNG and magic-derived dimension equality. No actual sips conversion was run here. This helper is not yet wired into collect_os.
- Added four image test methods including all filters, CRC corruption, trailing data, converter SHA/argv, raw CUA hash, dimensions and missing-conversion negatives.
Actually executed: 19 checker unittest methods passed; py_compile passed for the three P23 Python tools. Temporary compilation outputs were removed. Synthetic image tests are checker tests, never native screenshot evidence.
Concrete contract gap (targeted dependency inspection, not a repeated Phase0 audit):
- autoload/simulation_runtime.gd:13109–13125 computes get_staff_rest_report by scanning facilities and selecting a minimum-cost route on every call. The selected facility and eligibility are local variables, not stored state.
- autoload/simulation_runtime.gd:8783–8785 calls that query and passes only its cell to advance_staff_commute. At :12656–12690 the movement function either returns without movement or emits a STAFF_MOVED event with a target_cell; it does not persist a selected rest facility ID or eligibility. Movement events cannot supply a current destination for stationary/nonmoving staff.
- scripts/staff/staff_runtime.gd:282–315 serializes current_cell, assignment, task and path_handle but no rest destination/eligibility. Runtime snapshot assembly at :511–570 has no stored rest-selection model. PathService's snapshot at scripts/world/path_service.gd:1606 stores path/actor projections, not the selected rest facility and its eligibility.
Thus recipe (3), "rest destination must equal the typed stored destination and its eligibility; do not re-simulate AI", has no authoritative stored operand. Calling get_staff_rest_report from a fixture would rerun selection, and copying its output into a purported stored-state field would manufacture authority. These Runtime/staff/path files are outside allowed_paths and remain unchanged.
Read source SHA256:
- Runtime: 4696df4a77feb465a5a3ba8b806569f7bcbe1d03c88289acfb78a3928f307d67
- StaffRuntime: 807a417bc7866c97cd6d8f5c1368b5480a2d9fd685a2a47a978e81482bf522b5
- PathService: 447135729a1106639a6eee6754af3195c8a8b458ca26980ae91fa39d80dcfbd4
Minimal separate proposal for Root/Opus, not applied: authorize an authoritative rest-decision record at the existing Runtime selection point, including selected facility/cell, eligibility and decision time, with explicit invalidation and snapshot/restore semantics. Alternatively Root must identify an existing typed stored field that has those semantics. No worker relaxation of this gate.
Remaining source implementation is explicit: collector conversion integration, all row/rectangle bindings, motion history, distinct-PID/formal ACK checker, dynamic matrix and the remaining requested negatives. Existing fail-closed whole-unit behavior remains; no unconditional PASS or new fail stub was added. The 30/88 denominator, seven conditions, six categories and old suite policies are unchanged. Do not begin acceptance assuming only Root evidence is missing.
Previous status retained as history:
Repair from source 03100be — blocked, implementation incomplete
Source checkout HEAD confirmed read-only: 03100beabeb55caac03f53db3d1f399b424df517.
Contract base remains 860136f7099f5e3aee99da5798a627a77f2d8eea.
No git writes, Godot, Runner, OS input, regression, or other workers were used.
No acceptance or partial credit is claimed. No out-of-scope defect or missing Runtime capability was established.
Changes in this repair:
- Added registered
--verify-onlyCLI, concrete missing-index deficits, immutable fixture/spec/contract/baseline/AGENTS pins and a normative P23 plan-section hash. Full-plan SHA is separate provenance only. Existing diagnostic/layout CLI modes retained. - Removed fixture-side begin_leaving/despawn_guest calls; Runtime owns continued guest behavior. Added A/B native entry to the existing component test and updated the existing single marker row SHA.
- Added observation.gd extending P08 placement helpers unchanged, with real supply scenario commands/settings, common definition-derived construction budget, seed806042, relocated common cafeteria/kitchen at x6 to avoid declared B elevator footprint, sparse typed captures, normal save/load and whole formal-model comparisons. These construction prechecks have not been executed.
- Added passive request/ACK endpoint and recorder for four layout/role combinations, live FRONT/BACK buttons and PanModeButton, ordinary non-Ctrl wheel zoom/pan and ordinary pan drag only. No deferred P23-02 held-gesture credit.
- Replaced the collector stub with an adaptation of P08 collect/collect_os using run_all_tests helpers and owned gates, fresh outputs/profiles, native import/parse/layout phases, four OS roles and formal reader copies. Records the current interpreter PIL availability; raw screenshot bytes are left untouched. Collector has not been executed.
- Checker now inspects available native/OS streams, comparisons and basic process/source/profile guards, but explicitly fails closed for outstanding whole-unit gates.
Local verification actually executed: 16 Python unittest cases PASS; ast.parse for the three changed Python tools PASS; one P23 marker row and exact source SHA PASS. No engine or evidence-collector execution.
Remaining IMPLEMENTATION, separate from missing Root evidence:
- Complete screenshot byte-magic dimensions, stdlib PNG pixel/rect checks, and indexed Root JPEG-to-lossless-PNG conversion binding to raw hash/converter provenance. PIL absence is not waived.
- Add prior-frame visual-position/frame-delta evidence and independent interpolation checks; compare rest destinations with typed stored destination/eligibility without re-simulating AI.
- Bind all request report rows to viewport rectangles/affine and screenshots; current endpoint retains report plus viewport-to-screen transform but does not yet produce every required viewport row rectangle.
- Finish independent distinct-PID/formal-member/resume-state/load-ACK gates. Fixture assertions do not replace checker proof.
- Replace hard failure condition-matrix deficits with exact completed check names only after all seven independent gates exist; finish all requested category and infrastructure negatives. Current check intentionally cannot pass whole-unit integrity.
- Statically review collector lifecycle/failure receipts and fixture category coverage; real constructibility and EV/passenger/queue/goods coverage remain unproved.
Root native, actual OS for A/B, formal distinct-PID resume, exact-final full regression, independent review, integration/final/ledger: all PENDING. This candidate is blocked on remaining in-scope implementation, not ready for acceptance or a claim that missing Root evidence is the only gap.
Previous worker status retained verbatim as history (superseded by the repair status above):
P23-03 worker status: submitted static work, implementation incomplete
Base commit: 860136f7099f5e3aee99da5798a627a77f2d8eea.
This submission preserves the previous dirty work and adds genuine static
implementation. It is not acceptance-ready. No external Runtime capability
gap or out-of-scope defect has been established. Remaining implementation is
listed separately from pending Root evidence; no acceptance credit is claimed.
Inspection and changes in this repair
- Re-read the recorded direction, Phase 0 map, previous status and renderer diff. The single frame builder supplies drawing and the deep-copy public report. No renderer redesign or additional renderer was introduced. Existing renderer and component test bytes were retained.
- Added
tests/fixtures/p23-03/layout_comparison.gd. Both layouts initialize the public Runtime with seed 806042, reset budget and clock, identical production defaults and the same recorded 48-person arrival script. Commands build the existing elevator and corridors; B adds only the declared second elevator. Preparation time derives from registered definition build times. - Predeclared metric: sum of destination-arrival minutes for the entire cohort. The checker rejects incomplete cohorts, changed actual arrival payloads, additional layout changes, changed initial state, and non-strict improvement. No observed improvement is claimed: the fixture has not run.
- Extended diagnostic_stream with hash-addressed typed event/input records. The fixture records actual command results, domain movement events and per-minute guest/path/EV/facility projections, including service history, queues and density. Whole aggregate state/report pairs are sparse (30-minute intervals); the existing P08 typed encoder is reused without truncation.
- Extended independent checking of room service/rescue occupants and business enum fields, queue allocation/overflow, shared transforms, traffic, logistics report selection/order and cabin geometry. Added Rect2 and vector-key decode. The checker still refuses whole-unit acceptance.
Exact remaining implementation (not external blockers)
- Finish rest destination selection from typed path costs and event/defense locks. Current room check validates eligibility and reported rest references; it does not independently prove which rest destination Runtime selected.
- Finish every actor/passenger mode and geometry, including cleaning, rest/rescue/service slots, visual track history, badge text and screenshot rect/pixel provenance. Cabin endpoints and rectangles are checked, but unpaused prior-frame interpolation origin is not independently established.
- Complete A/B definition/source/production pins and command/event/path cross-validation, invoke the fixture from the Root collector, and add representative real operational scenarios for all six categories and BACK. The added experiment covers the fixed-demand FRONT transport comparison; it does not establish actual service purchasing or all-six-category coverage.
- Replace run_p23_life_observation.py readiness stub with the actual Root collector using P08 owned-process/profile/source/engine/ordinary-audio and CUA request/ACK helpers. It remains unchanged; it launches nothing. Formal save, distinct-PID normal resume, both-layout FRONT/BACK/pan/zoom, complete CUA receipts, all-run cleanup/protection and failure history remain to be wired and independently checked.
- Add missing meaningful negatives, especially normal OS/distinct-PID resume, visual provenance and the remaining rest/motion branches. Existing 12 local tests are not a complete seven-condition test matrix.
Steps (2) and (3) of the repair direction are therefore still incomplete; step (4) is not implemented. This is a partial static submission, not a claim that the requested repair is finished. Do not begin acceptance on an assumption that all worker deliverables are complete.
Checks actually run in this repair
python3 -B tools/test_p23_life_observation_evidence.py: 12 test methods, zero failures. Synthetic Python examples validate rejection logic only.- AST syntax: all three P23 Python tools parsed.
- Marker JSON: old rows and metadata unchanged; exactly one appended row; its SHA matches the unchanged GDScript component test.
git diff --check: passed.- No Godot parsing/runtime, native, OS, Runner or full regression execution.
- No git writes, subagents, integration, new assets or production changes. suite-policy.json was not changed; no new suite was registered.
Source SHA256 at local checks
| File | SHA256 |
|---|---|
| scenes/main/world_preview.gd | add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0 |
| scripts/ui/room_presentation.gd | 55340b7b623532e861be1d21225635fd9169e2e40928597c1cd0458b99524dd9 |
| tests/ui/test_p23_life_observation.gd | b9afa66ec73d3a5cadf86f9a71f0d13f5b085c3cc9a534dfe29b2bed0e2e76a0 |
| tests/fixtures/p23-03/diagnostic_stream.gd | ff178a094fc310b0640d923a15058c6f6fcf859551c14f6428a5709dcd24260e |
| tests/fixtures/p23-03/layout_comparison.gd | ddf00268b8e32e3c5c078ebb57ada321382ecc7c5fbd87efad7e9dfbe768df6b |
| tools/run_p23_life_observation.py | 53c2f0638d4a861cf4fcb664504c25df33ae5478207867654f1c8cdf58fa23c7 |
| tools/check_p23_life_observation_evidence.py | 318b253a08248a753b88902e382edc5f01cbce6f1ed8092359698b69d3bb0503 |
| tools/test_p23_life_observation_evidence.py | 0f20d3de20b44f46f8738c0d022fcc1179656014e85fe31754f00b87ec2c288a |
Root evidence: pending
After genuine completion and freezing: both-layout native and actual normal OS observation, full CUA trace, formal save and distinct-PID resume, mandatory exact version full regression and independent Opus review. These absent Root results are pending, not blocked. The fixed 30-package / 88-unit denominator and all P08/P22/P25/Windows/held-gesture/performance exclusions remain unchanged.