P23-03: 生活の観察

This commit is contained in:
Agent Control Runner
2026-10-15 10:03:36 +09:00
parent 55c29f1192
commit 0b7727a66c
4 changed files with 177 additions and 8 deletions
@@ -0,0 +1,72 @@
# Offline checker repair on 55c29f1
Source HEAD: 55c29f119234dd6f993c604c4edc6f377fe3951c. Registration base remains
860136f7099f5e3aee99da5798a627a77f2d8eea. No git writes or engine execution.
Read access: MIRROR_INDEX.json and all 2,622 named files were successfully read
under `/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/.runtime/P23-03/offline-evidence-55c29f1-r06`.
No mirror bytes were changed. The initial shell heredoc could not create its
temporary file; the read check was executed using Python `-c` instead.
## First defects and production cause
Both layouts first failed at frame-030, checker line 328, with KeyError:
`shaft_id`. State objects:
- A: `layout-A/objects/ac3ed64a6e6162918e4d44c45b2f78d09e50d473b607f3469350a06074a7efb3.json`
- B: `layout-B/objects/97ea43afe3d1b21602ebe2a602e7b7d796ff05f03983cd4d1b3edc9157e39a08.json`
The exception came from `shaft['shaft_id']`, not `t['shaft_id']`. Every trip in
these failing frames has shaft_id. Saved shaft rows have it only in config.
There is no evidence of shaft-less QUEUED trips to support accepting that shape.
`autoload/simulation_runtime.gd:541` writes elevators.create_snapshot().
`scripts/transport/elevator_service.gd:362-367` copies the saved cars without
flattening config; get_report at 345-359 merges config into each report row before
counting queued trips. request at 169-171 assigns shaft_id on creation, and the
restore validator at 412-454 requires the exact trip keys and shaft/connector
agreement. The connector spelling is defined at 617-618; trips are ordered at
707-710. `scenes/main/world_preview.gd:973-975` consumes get_report and sorts
trips by enqueue time/actor. The checker now counts using the merged row identity.
## Reviewable changes
- `tools/check_p23_life_observation_evidence.py`: replace
`t['shaft_id'] == shaft['shaft_id']` with `t['shaft_id'] == row['shaft_id']`;
validate exact trip keys, companion identity, shaft/stops/connector attribution
and QUEUED/BOARDED state before recomputing. Whole report equality remains strict.
- `tests/fixtures/p23-03/queued_elevator.json`: retain one actual frame-030
queued trip and its shaft, without a cabin seat. Distilled unit data only.
- `tools/test_p23_life_observation_evidence.py`: queued shape positive and
shaft attribution, waiting_count, missing/extra key negatives; update two
pre-existing abbreviated synthetic fixtures to the actual shaft/trip shape.
- This repair report. The complete implementation diff is available through
`git diff -- tools/check_p23_life_observation_evidence.py tools/test_p23_life_observation_evidence.py`;
the new fixture and this file are untracked submission files.
## Local results
`inspect_stream` on each exact absolute mirror directory:
```
layout-A inspect_stream PASS 17 frames
layout-B inspect_stream PASS 17 frames
```
For both, labels are frame-000, frame-030, frame-060, frame-090, frame-120,
frame-150, frame-180, frame-210, frame-240, frame-270, frame-300, frame-330,
frame-360, frame-390, frame-420, frame-450, frame-480. Each returns fields:
guests, staff, tasks, elevators, room_service_fields, queues, traffic, goods,
cabin_geometry. Every frame also passes the existing two-motion-history-frame
check, unchanged. No later schema/semantic mismatch was observed.
Python syntax AST checks pass. Local checker tests: 32 tests, OK.
The initial test run exposed two abbreviated synthetic fixtures; subsequent
queue expectations were corrected for actual lift landing exclusion. Tests
were preserved. git diff --check passes; changed files are within allowed_paths.
completion_marker_contracts retains its one required P23 strict template entry;
no marker changes. Seven conditions, six categories and 30/88 remain unchanged.
Root native results (319 tests, A/B PASS), matched metric values (48 metrics,
7153/2585), production data and services were not modified. Root OS evidence
remains pending as expected at worker submission; this repair grants no acceptance.