P23-03: 生活の観察

This commit is contained in:
Agent Control Runner
2026-10-15 09:36:36 +09:00
parent 03100beabe
commit 4c8a18aa75
11 changed files with 2207 additions and 35 deletions
@@ -3707,7 +3707,7 @@
"template": "P23 life observation: <checks> checks, <failures> failures",
"required": true,
"fixed_check_count_used": false,
"source_sha256_at_schema_audit": "b9afa66ec73d3a5cadf86f9a71f0d13f5b085c3cc9a534dfe29b2bed0e2e76a0",
"source_sha256_at_schema_audit": "cc7049e1c3919585caeefd1747be12fbf3fa52141fcdb980929c8a16fd7e2ee1",
"authority": {
"path": "docs/spec/acceptance/P23-03.json",
"scope": "component and read-only observation only; native unexecuted; whole unit blocked"
@@ -1,3 +1,205 @@
# 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`: `check` at 1189
reaches `inspect_native_phases` (1162) at 1215 and `inspect_stream` (950)
at 1220/1226. The stream inspection invokes `compare_rest` (531) at 968,
`compare_motion` (738) at 974, and `compare_actor_geometry` (800) at 975,
alongside actor, room, queue, traffic, goods, badge and cabin checks.
- `check` reaches `inspect_os_receipt` (1038), `inspect_os_requests` (1092),
and `inspect_resume` (1070) at 1249, 1250 and 1257.
Request inspection calls `screenshot_pixels` (184) at 1143, which invokes
`inspect_conversion` (158) at 191 for JPEG evidence; rectangle/pixel
checking follows at 1154.
- `check` builds executed check sets at 1270–1272, then calls `BLOCKERS`
at 1273, reaching `condition_matrix` (982) through 1000. All original
seven CONDITIONS and six CATEGORIES (room, queue, EV, staff, goods,
business state, represented by the key `business`) remain required.
Missing executed check names produce pending/deficits; no fixed-true matrix.
- Collector `tools/run_p23_life_observation.py`: `collect_os` (110)
invokes `collect_screenshots` (26) at 186. JPEG collection invokes
`convert_screenshot` (73) at 55; conversion calls `inspect_conversion`
at 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.gd` captures hash-addressed `rest_audit` and `motion`
at 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.gd` at 18–21 invokes
`layout_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.gd`
preloads `passive_observation.gd` at 2 and calls its inherited run at 6.
`passive_observation.gd` extends `observation.gd` at 1;
`observation.gd` preloads 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 targeted `git 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 -c` JSON/hash/path assertions using
`git show 860136f7099f5e3aee99da5798a627a77f2d8eea:<path>`,
`git diff --name-only <base>` and
`git ls-files --others --exclude-standard`: PASS.
All old marker metadata/rows equal base; exactly one appended P23-03
required source-authority entry; test SHA
`cc7049e1c3919585caeefd1747be12fbf3fa52141fcdb980929c8a16fd7e2ee1`
matches 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
`8568457df849ef587c731f072d77244ef5420fc4e1190c5069cfd6cfeea9c89f`
using the existing checker's `read_text().strip().encode()` convention.
An initial extra raw-byte SHA assertion failed (raw file SHA
`1a925e0d7f5c1c9f28670d29dd0fdc5aa48f4d5415946d6de4c15e1d83b5ed66`);
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 -c` succeeded.
- 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-only` CLI, 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:
1. 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.
2. Add prior-frame visual-position/frame-delta evidence and independent interpolation checks; compare rest destinations with typed stored destination/eligibility without re-simulating AI.
3. 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.
4. Finish independent distinct-PID/formal-member/resume-state/load-ACK gates. Fixture assertions do not replace checker proof.
5. 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.
6. 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`.