Merge commit 'd2581afd26d1976cdfe4f44c89df49a772524d1e' into HEAD
@@ -3724,6 +3724,17 @@
|
||||
"scope": "normal placement; native and OS pending"
|
||||
}
|
||||
}
|
||||
,{
|
||||
"test": "tests/ui/test_p23_life_observation.gd",
|
||||
"template": "P23 life observation: <checks> checks, <failures> failures",
|
||||
"required": true,
|
||||
"fixed_check_count_used": false,
|
||||
"source_sha256_at_schema_audit": "750254af7d4b8b00508e25d1ef744837d3a7d14ddebe12398e8014bf5e8c68e8",
|
||||
"authority": {
|
||||
"path": "docs/spec/acceptance/P23-03.json",
|
||||
"scope": "component and read-only observation only; native unexecuted; whole unit blocked"
|
||||
}
|
||||
}
|
||||
],
|
||||
"unknown_roster_suite_policy": "refuse, explicitly review its source/schema before accepting",
|
||||
"roster_count_is_not_hardcoded": true,
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# P23-03 Phase 0 — API and state map
|
||||
|
||||
Base: `860136f7099f5e3aee99da5798a627a77f2d8eea`. Static inspection only; no engine execution.
|
||||
|
||||
## Exact source references
|
||||
|
||||
Line numbers below refer to the base; SHA256 covers the complete file.
|
||||
|
||||
| Source | Lines / API | SHA256 |
|
||||
| --- | --- | --- |
|
||||
| autoload/simulation_runtime.gd | 203 initialize(clock,state,seed); 225 seed assignment; 466 submit_command; 508 get_rng_stream; 511 create_snapshot; 1483 enable_production_operations; 1780 default demand configuration; 2831 arrival boundary; 2949 apply arrivals; 4137 queue_manual_checkpoint; 4141 save_to_path; 4169 load_from_path; 5066 seed streams; 6103 spawn_guest executor; 7629 build_facility executor; 10859 staff management report; 12464 supply management report | 4696df4a77feb465a5a3ba8b806569f7bcbe1d03c88289acfb78a3928f307d67 |
|
||||
| autoload/game_state.gd | 20 reset | cf0e884910220e54c56b5875983e53de439af9d893be1e1b65c2121d2a30722f |
|
||||
| scripts/core/simulation_kernel.gd | 91 reset; 104 advance_minutes; 122 advance_one_minute; 175 set_paused | 341c0c878c4894adbac628d0db6362ff69fc3347bdd9e61e50936e15dc2d1edb |
|
||||
| scripts/facility/facility_service.gd | 109 get_instances; 656 create_snapshot | ceb4a3e9224587423f273cdb2b56e6843ab176ac1fc4fe79dd498b5ed5c33b77 |
|
||||
| scripts/guest/guest_service.gd | 170 get_guests; 982 create_snapshot | 56880410e9a00816f9a95d30821982955532de8dd976980934e12016a9f2b21e |
|
||||
| scripts/staff/staff_service.gd | 166 get_staff_members; 682 get_tasks; 1064 create_snapshot | 355ad5c3c9f85dc4d4ffc3bc4293e36f81078c403d1662512a735b2c8d815fb3 |
|
||||
| scripts/transport/elevator_service.gd | 345 get_report; 362 create_snapshot | cea09dd9204551c26b31b30cd3aa847cc77e3b75fdac31662b9694a95fb3580c |
|
||||
| scripts/world/path_service.gd | 545 get_cell_traffic | 447135729a1106639a6eee6754af3195c8a8b458ca26980ae91fa39d80dcfbd4 |
|
||||
| scripts/supply/supply_logistics_bridge.gd | 122 get_report | b9e394af788595d2744b71f1907c8e7c3d762d38ff49992b1ee74e63b9639e80 |
|
||||
| scripts/facility/facility_instance.gd | 8 OperationState; 10 State; 30 state and subsequent live fields | 0c6aa493f3299611e05dd26aa429dda8cf7b5c479e4d09632036fb862f79a324 |
|
||||
| tests/transport/test_runtime_transport_comparison.gd | 91 existing fixed-demand setup; 109 real paid build command | ba577397fa8db5a6cf92cfd398dd7a5ece49e6b59856f14772b67b51ddc0bde9 |
|
||||
|
||||
## Deterministic demand capability
|
||||
|
||||
An existing deterministic input path is available without Runtime edits: fresh clock/state, `initialize(clock,state,seed)`, then the same scheduled `submit_command(&"spawn_guest", payload, ..., execute_at, idempotency_key)` sequence. The executor validates registered definitions and real walkable cells, creates wallets and GuestRuntime actors, and verifies Path actor projection and movement credit. Explicit IDs must avoid the reserved `guest-auto-` namespace. Inputs and processed results must both be recorded; a seed/hash alone does not prove identical arrivals.
|
||||
|
||||
The existing transport comparison exercises public spawning, real paid construction and Runtime-owned movement. It is fixed-demand experimentation, not proof of natural autonomous demand or all six observation categories. Its numeric assertions are not adopted as new acceptance thresholds. Automatic production arrivals are a separate path (`enable_production_operations`): population, weather and terminal-state gates mean the same seed alone cannot guarantee identical accepted arrivals. Layouts must use identical production settings and compare actual arrival inputs/results.
|
||||
|
||||
`build_facility` resolves the registered definition, runs `_build_facility_precheck`, then calls `construction_service.start_construction` with `definition.build_minutes`. Construction cost, time and capacities must come from definitions. B may add only the predeclared existing corridor/EV through this command.
|
||||
|
||||
## Clock and observation
|
||||
|
||||
`reset` defines initial time. Paused manual `advance_minutes` is explicitly supported; abort/pause boundaries must be checked. Commands run before minute increment, then time boundaries, mana, construction, logistics, facility completion, vitals, incidents, queues, AI and publication.
|
||||
|
||||
Facility/guest/staff getters expose typed objects; presentation must copy values without mutating them. Elevator reports contain shafts/trips. Path traffic provides actual density/capacity/block fields. Logistics reports contain requests/deliveries, source/destination IDs, carrier, requirements, weight, state/reason and task ID. They do not contain warehouse stock: requested quantities must never be labelled stock.
|
||||
|
||||
## Formal save/load and evidence
|
||||
|
||||
Use `queue_manual_checkpoint` or `save_to_path`, then `load_from_path` under a distinct real PID. The load API pauses the clock and invokes SaveService package validation before restore. `restore_snapshot` alone is not formal resume. Preserve all package members, source/spec/engine/settings pins, whole typed sparse snapshots and actual CUA/process/cleanup evidence.
|
||||
|
||||
Original references read: BASELINE.txt lines 10,13,16,25,37,43,69,83,106,216; IMPLEMENTATION_PLAN.md line 1800; immutable P23-03 spec; recorded direction 83e836e. All seven conditions remain mandatory, with no partial credit. Root native/OS/resume/full-regression evidence is missing.
|
||||
@@ -0,0 +1,253 @@
|
||||
# P23-03 offline repair — evidence gap
|
||||
|
||||
Status: blocked, not static-complete. No acceptance credit. The failed 0b7727a
|
||||
OS run remains failure history. No receipts, mirror files, product, values,
|
||||
styles or test gates were changed. No git writes or engine/OS/collector/full
|
||||
runs were performed.
|
||||
|
||||
## Corrected direction
|
||||
|
||||
The three previous pixel assumptions are superseded:
|
||||
|
||||
1. `viewport_to_screen` maps to content coordinates, not screenshot pixels.
|
||||
Actual request-0002 and request-0004 CUA receipt calibration records window
|
||||
size 1440x810, screenshot 1440x842, titlebar 32, backing scale 1 and stretch 1.
|
||||
The image lookup must apply the calibrated content origin and independently
|
||||
check agreement with actual CUA click offsets; the number 32 must not become
|
||||
a checker constant. Existing affine composition checks remain required.
|
||||
2. Source RGB cannot be required unchanged after JPEG conversion, NO_STAFF
|
||||
dimming, ghost outlines and antialiasing. Palette identity is source
|
||||
provenance, not a screenshot color oracle. Pixel proof needs measured
|
||||
within-image noise and independent expected-class/state/shift alternatives.
|
||||
3. Every report row must be accounted for, but not every row is visible. Use
|
||||
report/audit fields for visible, clipped/clamped, outside with reason,
|
||||
ghost/inactive and facility-state dimming. Require eligible visible coverage
|
||||
of all six categories on both FRONT and BACK. Never silently skip a row.
|
||||
|
||||
The spec requires draw-consumed rows, pixel rectangles and provenance to
|
||||
correspond; it does not require unchanged source RGB. The function docstring
|
||||
now explicitly warns that the implementation still uses the superseded checks.
|
||||
|
||||
## Verified material and blocking dependency
|
||||
|
||||
Mirror:
|
||||
`/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/.runtime/P23-03/offline-os-0b7727a-r07`
|
||||
|
||||
All 94 files named by MIRROR_INDEX.json were read and their SHA256 verified;
|
||||
zero missing files or mismatches. The only indexed conversion record is
|
||||
`os-pair/A/writer-request-0002/root-early-conversion.json`, with stdout/stderr.
|
||||
The only decoded PNG is the corresponding `root-early-decoded.png`, SHA256
|
||||
`206a9aafdc50d1f2f330690e14390de8c7ed5b0df024cedf8f2fbd35326f455a`.
|
||||
|
||||
The other three required stable screenshots are JPEG bytes despite .png names:
|
||||
|
||||
- `os-pair/A/writer-request-0002/screen-after.png`
|
||||
- `os-pair/A/writer-request-0004/screen-before.png`
|
||||
- `os-pair/A/writer-request-0004/screen-after.png`
|
||||
|
||||
Their magic starts `ffd8ffe000104a46`. No frozen decoded PNG/conversion records
|
||||
for these files are in the mirror. Searching the original source root named
|
||||
by MIRROR_INDEX for `*decoded*.png` and `*conversion*.json` also returned none.
|
||||
The existing conversion verifier requires a separate PNG, original raw hash,
|
||||
CUA call attribution and pinned `/usr/bin/sips` conversion record. Creating
|
||||
replacement conversion assertions, rewriting receipt paths, or silently
|
||||
changing that converter authority would not preserve this proof gate.
|
||||
|
||||
Minimal next input: Root supplies separate decoded PNGs and genuine conversion
|
||||
records/logs for those three existing raw images, adds their hashes to a new
|
||||
mirror inventory while preserving the original inventory and receipts. This
|
||||
does not require another OS capture. Alternatively the commander must explicitly
|
||||
specify an offline Python JPEG decoder authority and its provenance contract.
|
||||
Worker must not execute sips under the Python-only direction.
|
||||
|
||||
Until then the requested full frozen before/after comparison, BACK cropped
|
||||
pixel fixtures, calibrated noise and per-row pixel results cannot be submitted
|
||||
as complete. Geometry/report preparation alone cannot meet all requested tests.
|
||||
The behavioral repair and new fixtures/tests have not been implemented.
|
||||
|
||||
## Local commands and outputs
|
||||
|
||||
These read-only Python checks used the mirror path above as `p`:
|
||||
|
||||
```python
|
||||
import json, pathlib, hashlib
|
||||
p = pathlib.Path('/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/.runtime/P23-03/offline-os-0b7727a-r07')
|
||||
j = json.loads((p / 'MIRROR_INDEX.json').read_text())
|
||||
bad = [r['path'] for r in j['files'] if not (p/r['path']).is_file()
|
||||
or hashlib.sha256((p/r['path']).read_bytes()).hexdigest() != r['sha256']]
|
||||
print('indexed', len(j['files']), 'mismatches', bad)
|
||||
print('conversion records', [r['path'] for r in j['files'] if 'conversion' in r['path']])
|
||||
```
|
||||
|
||||
Output:
|
||||
```
|
||||
indexed 94 mismatches []
|
||||
conversion records ['os-pair/A/writer-request-0002/root-early-conversion.json', 'os-pair/A/writer-request-0002/root-early-conversion.json.stderr', 'os-pair/A/writer-request-0002/root-early-conversion.json.stdout']
|
||||
```
|
||||
|
||||
Calling the existing `screenshot_pixels(p/name)` for each of the three paths
|
||||
above (without manufacturing a conversion argument) produced:
|
||||
```
|
||||
writer-request-0002/screen-after.png: JPEG screenshot requires conversion record
|
||||
writer-request-0004/screen-before.png: JPEG screenshot requires conversion record
|
||||
writer-request-0004/screen-after.png: JPEG screenshot requires conversion record
|
||||
```
|
||||
|
||||
Command: `python3 tools/test_p23_life_observation_evidence.py`
|
||||
```
|
||||
................................
|
||||
----------------------------------------------------------------------
|
||||
Ran 32 tests in 0.058s
|
||||
|
||||
OK
|
||||
```
|
||||
|
||||
These are existing unit tests, not the requested new repair tests, and do not
|
||||
prove the repair or acceptance. Root native/OS/full review remains pending.
|
||||
Seven conditions, six categories, 30/88, no partial credit, timeout 900 and
|
||||
cap null remain unchanged.
|
||||
|
||||
## Follow-on: 106-entry mirror (2026-10-15)
|
||||
|
||||
The missing-conversion dependency above is **resolved**, not a current blocker.
|
||||
The prior text is retained as failure history. The worker read all 106 indexed
|
||||
files and verified every byte count and SHA256, plus the preserved initial94
|
||||
inventory SHA and unchanged entries. No mirror or original receipt was edited.
|
||||
|
||||
`OFFLINE_MIRROR_106_DIAGNOSTICS.json` contains the explicit original absolute
|
||||
path -> mirrored absolute path -> equal indexed SHA256 mapping for all106 files,
|
||||
including the eight named PNG/conversion files. Each conversion was checked
|
||||
against its corresponding actual CUA screenshot call ID/raw hash, pinned sips
|
||||
binary SHA, original argv, output PNG magic/dimensions/hash and stdout/stderr
|
||||
hashes. Original raw/png path strings and argv remain unchanged. A read-only
|
||||
resolver locates indexed mirrored bytes; it does not rewrite conversion records.
|
||||
Direct reads of the source artifact directory were denied by the host
|
||||
(`PermissionError: Operation not permitted`); equality to the frozen inventory
|
||||
and conversion-record hashes was verified, not a fresh direct source-directory
|
||||
comparison. This limitation is not represented as a missing PNG conversion.
|
||||
|
||||
New `--offline-mirror` preparation diagnostics check content/image dimensions,
|
||||
backing scale, content origin derived from recorded titlebar, affine composition,
|
||||
and agreement with the separately recorded click events. They independently
|
||||
derive existing audit row identities/local rectangles from report positions and
|
||||
source palette provenance. Every existing audit row has visible/clipped/outside
|
||||
accounting and a calibrated screenshot rectangle. Room enum/operation names are
|
||||
read from the actual FacilityInstance source. Dimming is derived from operation,
|
||||
not merely the NO_STAFF state name. These are preparation diagnostics, not a
|
||||
replacement acceptance pixel gate. In particular, audit font_width remains an
|
||||
engine assertion, and receipt click events have not been verified against the
|
||||
full helper-definition/tool trace. No source RGB tolerance was invented.
|
||||
|
||||
Actual frozen-frame results:
|
||||
|
||||
- FRONT request0002: 9 audit rows (3 room,1 queue,2 guest,3 business), all visible.
|
||||
EV/staff/goods coverage pending. Two rooms are INACTIVE and one OPERATING.
|
||||
One actual draw-consumed traffic overlay at cell[-6,2,0], local rect
|
||||
[261,294,60,92], has no corresponding rectangle-audit row.
|
||||
- BACK request0004: 4 audit rows (2 room,2 business), all visible and both rooms
|
||||
INACTIVE. Queue/EV/staff/goods coverage pending; no eligible traffic overlay.
|
||||
- Before/after temporal differences within all13 calibrated audit rectangles
|
||||
are zero. This establishes stability only, not spatial JPEG error or correct
|
||||
drawing class/state. It supplies no pixel acceptance credit.
|
||||
- The existing independent typed-stream checker recomputed all14 frozen stream
|
||||
records successfully; the CLI still returned blocked/pending(exit2), as required.
|
||||
|
||||
Current repair status: **incomplete / blocked**, not genuinely submitted.
|
||||
The legacy `compare_rectangles` and its normal-OS call site have deliberately
|
||||
not been relabelled as repaired. Remaining worker work includes an independent
|
||||
expected-class/state/shift pixel discriminator with measured within-image noise,
|
||||
state negatives, full ghost/inactive/traffic draw accounting, independent badge
|
||||
width provenance and integration into the strict OS checker. The added
|
||||
preparation path does not solve these items and must not be used for acceptance.
|
||||
Missing frozen provenance includes the FRONT traffic-overlay rectangle audit,
|
||||
opposite-layer ghost draw audit, and independent font measurements for badge
|
||||
widths. Existing reports/source can support further preparation; these missing
|
||||
records do not establish that a fresh OS capture is already necessary.
|
||||
|
||||
Local validation: Python AST syntax checks; 42 checker unit tests (existing32
|
||||
plus10 preparation tests); actual mirrored checker commands above. Tests cover
|
||||
wrong titlebar/click shifts, PID, nonfinite scales, clipped/outside rectangles,
|
||||
measured temporal noise, report rectangle/identity/coverage/palette tampering.
|
||||
They do not include the still-required pixel-state discriminator negatives.
|
||||
No Godot, native, sips execution, collector, OS run, full regression, git write,
|
||||
branch/integration, Runner action or agent delegation occurred. Root native,
|
||||
complete A/B FRONT/BACK pan/zoom/distinct-PID OS matrix, mandatory full regression
|
||||
and independent Opus review remain pending. Historical baselines remain32 tests,
|
||||
17+17 semantic,319 native,7153/2585 and7/6/30/88; the new local42 count is not a
|
||||
replacement acceptance baseline. Timeout900 and cap null are unchanged.
|
||||
|
||||
## Owner proof-method repair (2026-10-15)
|
||||
|
||||
The owner's recorded decision supersedes the proposed automatic class/state/
|
||||
style discriminator, shift/swap alternative scoring, measured-noise gate and
|
||||
independent badge-width measurement gate. They are no longer required work.
|
||||
Palette RGB is provenance only. Font width remains the recorded engine value;
|
||||
no independent font measurement or numeric image tolerance was introduced.
|
||||
All earlier entries above are retained as history, not current requirements.
|
||||
|
||||
Implemented within the narrowed Python edit scope:
|
||||
|
||||
- Shared `frame_rows` now handles both offline and normal OS screenshot frames,
|
||||
uses receipt calibration checked against actual click events, checks affine
|
||||
composition, independently derives row identity/local geometry/text/palette,
|
||||
validates room state/operation and actor enum names, and retains every audit
|
||||
row with visibility, clipping reason, calibrated image rectangle and failures.
|
||||
- The legacy `compare_rectangles` and its tests are removed and replaced by
|
||||
grounded negatives. Fully outside eligible image crops and exactly uniform
|
||||
crops fail; source RGB is never compared to screenshot RGB.
|
||||
- `drawing_rectangle_rows` now expects every draw-consumed traffic overlay.
|
||||
Missing/extra rows fail the mechanical frame, without synthesizing audit rows.
|
||||
- Pure-Python PNG crops and review manifests are written for each frozen frame.
|
||||
Manifests bind decoded whole-image/raw/conversion/request/receipt hashes,
|
||||
per-row source hash, recorded font width, state, operation, layer and geometry.
|
||||
A separate SHA file hashes the exact manifest bytes. Normal OS frames use the
|
||||
same path and emit per-image review materials. Pixel categories receive no
|
||||
credit without an independent direct-image review verdict bound to that SHA,
|
||||
covering every eligible row with category/state/position verdicts. The worker
|
||||
created no actual review verdict; synthetic verdict files exist only inside
|
||||
temporary unit-test fixtures.
|
||||
|
||||
Current scope blocker, found by reading the actual dependencies:
|
||||
`tests/fixtures/p23-03/passive_observation.gd:150` owns `draw_rectangles`, not
|
||||
`world_preview.gd`. Its explicit room/queue/cabin/actor/badge loops at lines
|
||||
152-171 do not consume traffic audit rows from the view or report. The transform
|
||||
and palette audit path at lines172-182 only processes that locally built array.
|
||||
`world_preview.gd:762` draws the traffic overlay, but has no existing rectangle
|
||||
audit emitter or callback. Changing only world_preview cannot connect traffic
|
||||
rows to the actual request's `rectangles` field without altering the fixture.
|
||||
No inert emitter, mislabelled badge, or checker-generated observed audit was
|
||||
added to pretend this connection exists. World source remains unchanged.
|
||||
|
||||
Minimal separate scope proposal: permit one read-only traffic-row loop in
|
||||
`passive_observation.gd::draw_rectangles`, before its existing transform/palette
|
||||
loop, consuming report traffic rows with density>0 or temporary_block. Use
|
||||
category `traffic`, comma-separated cell coordinates as id, the report rectangle
|
||||
and `scenes/main/world_preview.gd` as style source. Alternatively explicitly
|
||||
authorize wiring a view-owned traffic audit emitter into that same fixture.
|
||||
The broad contract lists this fixture, but the latest finish recipe explicitly
|
||||
narrows edits to checker/tests and world only; the worker did not override it.
|
||||
Step4 is therefore incomplete and this repair is **blocked**, not submitted.
|
||||
|
||||
Local validation: both Python files parse with `ast.parse`; 47 local checker
|
||||
tests pass. New tests exercise blank crops, missing/extra/traffic rows, enum/name
|
||||
errors, affine/click calibration shifts, image-outside crops, exact crop hashes,
|
||||
wrong-manifest/missing/extra/rejected review rows and no credit without review.
|
||||
The r07 offline CLI verified all106 indexed entries and exited2 as blocked:
|
||||
|
||||
- FRONT request0002: expected10 rows, observed9; mechanical failure
|
||||
`offline rectangle coverage`. The traffic overlay at [-6,2,0] remains a genuine
|
||||
unaudited overlay. EV/staff/goods coverage pending; zero pixel credit.
|
||||
- BACK request0004: expected4/observed4; mechanical checks pass.
|
||||
Queue/EV/staff/goods coverage pending; zero pixel credit.
|
||||
|
||||
Current review artifacts are in `offline-r07-review/`; complete diagnostics are
|
||||
in `OFFLINE_REPAIR_OWNER_METHOD_DIAGNOSTICS.json`. The prior
|
||||
`OFFLINE_MIRROR_106_DIAGNOSTICS.json` is preserved unchanged.
|
||||
|
||||
Still pending: Root frozen native checks, fresh A/B FRONT/BACK ordinary pan/zoom
|
||||
OS observation and formal distinct-PID resume, the exact full177 regression,
|
||||
and independent Opus direct-image/all-condition review. No Godot, Runner,
|
||||
native/OS, full regression, git write, integration or agent execution occurred.
|
||||
All7 conditions, all6 categories on both layers/layouts, source recomputation,
|
||||
raw/request/CUA/conversion provenance, calibrated geometry, 30/88 without partial
|
||||
credit, timeout900 and cap null remain unchanged. No acceptance PASS is claimed.
|
||||
@@ -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.
|
||||
@@ -0,0 +1,45 @@
|
||||
# R10 diagnostic budget repair submission
|
||||
|
||||
Status: submitted for Root verification; no acceptance credit claimed.
|
||||
Contract base: `860136f7099f5e3aee99da5798a627a77f2d8eea`.
|
||||
Starting submitted source: `336a8cd0b30db1add11869ebceab847db693f531`.
|
||||
|
||||
The mirrored OPUS_R10_BUDGET_REPAIR_DIRECTION.json and
|
||||
ROOT_OS_R10_BUDGET_FINDING.json resolve the input gap recorded in
|
||||
R10_CONTEXT_GAP.md. That historical note and all copied evidence are retained.
|
||||
The failed R10 B run remains 484 checks / 11 failures, validate
|
||||
`4958d8f55b6b458694bf158769ce3bff`; it provides no acceptance credit.
|
||||
|
||||
The observation fixture counted construction only. Its common A/B budget now
|
||||
also counts all five planned candidates' registered catalog signing_cost and
|
||||
the 40 RAW_FOOD purchase. The shared assignment list and purchase quantity
|
||||
feed both budgeting and actual setup commands. PurchaseQuoteV2.make reads the
|
||||
current SupplyCatalog unit_price; the service's eligibility branch selects
|
||||
base_total or effective_total. The live supply preview is recorded and checked
|
||||
against that budget immediately before purchase. No margin or production
|
||||
value is added. Both budgets still include B's improvement construction.
|
||||
The budget record retains construction rows and adds construction totals,
|
||||
candidate sources/costs and signing total, item/unit price/quote/purchase total,
|
||||
needed, initial resources and deltas.
|
||||
|
||||
Every setup operation already passed through command(), which asserts its
|
||||
CommandResult.is_success() and records its receipt. Failure names now include
|
||||
the payload, distinguishing individual builds, hires and assignments. This
|
||||
continues to cover conditions, purchases and kitchen production without skips.
|
||||
|
||||
A cheap checker preflight verifies all three spend categories enter needed
|
||||
before deltas and that the setup shares its assignment/quantity plan. Local
|
||||
negative tests remove each spend increment and delta coverage. These are
|
||||
static checks, not runtime evidence or acceptance assertions.
|
||||
|
||||
Worker validation: 51 local Python checker tests passed; Python syntax checks
|
||||
passed. No Godot, native, OS, full regression, Runner operation, git write,
|
||||
production checkout access or additional agent was used.
|
||||
|
||||
Root evidence for this repaired source is missing at submission, as expected.
|
||||
Root must freeze the source and perform the exact native and normal OS A/B
|
||||
proof, distinct-PID load, mandatory full177 regression, independent Opus review,
|
||||
integration/final and ledger. Reuse requires matching applicability. The native
|
||||
48-demand, observation cohort, seven conditions/six categories, staff/goods
|
||||
coverage, 30/88 with no partial credit, OS child timeout 3600, worker/native
|
||||
900 and null cap are unchanged.
|
||||
@@ -0,0 +1,45 @@
|
||||
# R10 repair context gap
|
||||
|
||||
Status: blocked on missing recorded R10 decision, not on missing Root proof.
|
||||
|
||||
The read-only HEAD check returned the requested submitted starting point
|
||||
`336a8cd0b30db1add11869ebceab847db693f531`. The contract base remains
|
||||
`860136f7099f5e3aee99da5798a627a77f2d8eea`. The initial worktree contained an
|
||||
untracked `tools/__pycache__/`; it was preserved.
|
||||
|
||||
The supplied run direction requires keeping the recorded R10 budget repair
|
||||
exactly narrow, but does not include that decision's concrete repair instructions
|
||||
or location. The available `OPUS_CONCRETE_IMPLEMENTATION_DIRECTION.json` is the
|
||||
initial recipe (run `83e836e232c74975aaf51f4fab5a1af9`), not the R10 decision.
|
||||
No R10 decision was found in this checkout's P23 execution materials or fixtures;
|
||||
`.review-material` is absent. A targeted JSON/Markdown search for R10 budget
|
||||
direction in the sibling P23 runtime directory found no match. Access to the
|
||||
normal production checkout's P23 execution directory and sibling validation
|
||||
checkouts returned `Operation not permitted`; no access workaround was attempted.
|
||||
|
||||
Static context inspected before considering source edits:
|
||||
|
||||
- `API_AND_STATE_MAP.md` describes deterministic initialization and public
|
||||
arrival/build commands. Current `simulation_runtime.gd:203` still accepts the
|
||||
explicit seed, and `game_state.gd:20` resets resources to defaults.
|
||||
- `layout_comparison.gd:21` declares the budget as `GameState.reset`; its run
|
||||
resets state before initialization and records the initial snapshot before
|
||||
issuing layout-specific build commands.
|
||||
- `observation.gd:49` onward derives a common diagnostic construction budget
|
||||
from registered definition costs, including the declared B improvement, and
|
||||
issues `change_resources` before building. This is a separate observation path.
|
||||
- `check_p23_life_observation_evidence.py:1212` requires equality of A/B initial
|
||||
snapshots. These observations do not establish which precise repair R10
|
||||
authorized, or justify inventing budget/seed policy.
|
||||
|
||||
Required continuation input: the complete recorded R10 budget repair decision
|
||||
and its referenced failure evidence, mirrored into readable task materials (or
|
||||
provided directly), including any prescribed budget/seed and checker changes.
|
||||
No specification, acceptance, budget, production, fixture, checker, renderer,
|
||||
or policy change was inferred. Only this context-gap note was added.
|
||||
|
||||
No tests were run: there is no source repair to validate. No Godot, native, OS,
|
||||
full regression, Runner operation, git write, integration, or additional agent
|
||||
was used. Root exact-candidate native/OS/resume/full-regression evidence and
|
||||
independent Opus review remain missing and required; no PASS or acceptance
|
||||
credit is claimed. Root capacity recovery remains separate.
|
||||
@@ -0,0 +1,443 @@
|
||||
# P23-03 repair inspection
|
||||
|
||||
## Repair 26 — submitted for Root validation; no acceptance credit
|
||||
|
||||
This section supersedes the status below. Preserved the five premodified files,
|
||||
both R13 fixtures, all 86 existing tests, and every historical section. Historical
|
||||
49 and the twelve false R13 judgments are unchanged. Seven conditions, six
|
||||
categories and 30/88 are unchanged. No Runtime, gameplay, save, economy, mana,
|
||||
asset or UI-entry source was changed.
|
||||
|
||||
Implemented the remaining local work:
|
||||
|
||||
- Both independent packers now rebuild vertical components from fitted feet and
|
||||
pose cores after every scale reduction. Scale ceilings decrease monotonically,
|
||||
so termination has a finite measure and no iteration-limit exemption. Stable
|
||||
components use the existing ordered forward/backward fitting and p=1 retained
|
||||
member aggregation. A positive separates a previously intersecting component
|
||||
at p=2; retaining the stale component would incorrectly reduce it to p=1.
|
||||
- Whole-state fixtures cover queue lanes plus work staff, queue precedence and
|
||||
order, the actual R13 cafeteria/access-cell geometry, carried and treated
|
||||
patients, occupied rest facilities, queued staff, passenger/floor coexistence
|
||||
on FRONT/BACK, and independently calculated no-fit aggregates. Negatives
|
||||
include stale groups, pose/feet, carrier-relative positions, category/region/
|
||||
transit spoofing, missing identities and displaced aggregation badges.
|
||||
- Cabin candidates no longer silently truncate after two seat rows. Additional
|
||||
identities reuse the existing two-row anchor pattern and participate in the
|
||||
same independent fit/no-fit decision. The synthetic saturation configuration
|
||||
retains every boarded identity in member lists; it changes no definition.
|
||||
- OS and offline callers use the shared hash-bound drawing_context loader.
|
||||
Tests cover valid context, absent fields/objects, malformed raw/rest context,
|
||||
report binding and object hash mismatches. Frame tests include valid transit
|
||||
and occupied-rest authority, missing/malformed rest authority, and conservative
|
||||
rejection of overlap without raw context. No flags grant exemptions.
|
||||
- GDScript component fixture now includes four occupants, scale-driven regroup,
|
||||
and actual _fit_life_actors aggregation with nine drawn and ten retained IDs,
|
||||
badge text and position. This fixture has NOT been executed by Godot.
|
||||
|
||||
Source/consumer audit:
|
||||
|
||||
- _build_life_observation calls fitting before publishing; _draw_life_overlay
|
||||
consumes fitted floor/passenger rows and the aggregation badge at/text.
|
||||
_draw_observed_actor consumes at/scale/mode/frame/flip. Logical cell, preferred
|
||||
center and state remain separate. Existing click handling selects world
|
||||
facilities/construction/stairs; there is no actor hit-test to relocate.
|
||||
- passive_observation.draw_rectangles and Python drawing_rectangle_rows consume
|
||||
fitted actor extents and actual aggregation badge coordinates. frame_rows
|
||||
carries all member identities and drawn_keys into review metadata. Whole typed
|
||||
diagnostic captures preserve the same report; compare_actor_geometry rebuilds
|
||||
classification, bounds, fit and aggregation independently. compare_rest invokes
|
||||
complete geometry for occupied resting facilities. compare_motion binds the
|
||||
actual published report/history, not unfitted preferred positions.
|
||||
- inspect_offline_mirror and inspect_os_requests both pass drawing_context's
|
||||
hash-bound state/rest objects to frame_rows. inspect_stream separately runs
|
||||
rest, cabin, motion and complete geometry checks. Missing objects raise and
|
||||
cannot become a successful exemption. Unit tests exercise this shared loader;
|
||||
no real OS/offline evidence was rerun or relabeled.
|
||||
- strict_test_markers.load_contracts rejects duplicate suite rows. The existing
|
||||
single P23 row already declares the exact two source print sites' template
|
||||
`P23 life observation: <checks> checks, <failures> failures`. parse_raw obtains
|
||||
counts only from actual logs; source_sha256_at_schema_audit is historical
|
||||
metadata, not a current-source acceptance bypass. No marker-contract append
|
||||
is required, no suite-policy row was added, and no marker was fabricated.
|
||||
Root's source map must bind the final modified fixture and all changed files.
|
||||
|
||||
Local verification: 87, 91, 93, 95, 97, 98 and 99 tests passed as work progressed;
|
||||
the final rerun passed **99 tests in 0.213s**, exit 0. The original expected R13 row11/29 rejection
|
||||
is retained. Python compile checks for checker, tests and runner passed without
|
||||
bytecode output. git diff --check passed. No tests were deleted or weakened.
|
||||
Read-only discovery encountered inaccessible sibling worktrees and nonexistent
|
||||
BUILD_OUTPUT_DIR shorthand; the actual allocated build directory supplied both
|
||||
R13 direction files. A shell glob lookup had no match; no source was lost.
|
||||
|
||||
Root native/OS evidence, the 177-test full regression and independent Opus
|
||||
all-condition review remain missing, as expected for worker submission.
|
||||
Submission is not acceptance and earns no unit credit. No Godot, native/OS,
|
||||
full regression, Runner, provider, git write or agent was run.
|
||||
|
||||
## Repair 25 continuation — current status: blocked, implementation incomplete
|
||||
|
||||
This section supersedes the status of the historical sections below. There is
|
||||
no specification, permission, or floor-interpretation gap. The remaining blocker
|
||||
is unfinished implementation and verification, not missing Root evidence alone.
|
||||
All 809 pre-existing added lines were preserved and extended. No candidate is
|
||||
claimed implemented or ready for acceptance. Seven conditions, six categories,
|
||||
and 30/88 remain exact; historical 49 is preserved without relabeling.
|
||||
|
||||
Read before editing: AGENTS.md, Phase 0 API_AND_STATE_MAP, recorded concrete
|
||||
direction, both authoritative R13 geometry/region directions, renderer,
|
||||
checker/tests, diagnostic/passive collectors, Runtime initialize/spawn/save/load
|
||||
entry points, enums, marker parser and existing contract. No new assets or
|
||||
Runtime/gameplay/save/UI-entry changes.
|
||||
|
||||
Changes in this continuation:
|
||||
|
||||
- Drawing-row validation accepts the existing raw-state/rest-audit context and
|
||||
invokes complete geometry classification and fitting. OS frames pass the
|
||||
hash-bound stream objects; offline image review loads the matching writer
|
||||
capture and checks its report binding before passing the same objects.
|
||||
- Track validation checks the raw actor endpoint, source-valid adjacent origin,
|
||||
finite nonfuture times and boolean pause. A drawing's region/in_transit flags
|
||||
cannot grant an exemption. Without raw context the old conservative check
|
||||
remains, and frame output explicitly says `absent: fail closed, no transit
|
||||
exemptions`. Historical images have not been rerun or relabeled.
|
||||
- Rest selection still independently validates routes, costs, locks and
|
||||
eligibility. For actual occupied rest facilities its geometry now runs through
|
||||
complete cross-kind fitting, including queue precedence and independently
|
||||
reconstructed aggregation identities/no-fit, instead of requiring every
|
||||
rest-slot identity to have an unshifted drawing row.
|
||||
- Added the actual +m badge to Python and GDScript image-audit rectangle lists;
|
||||
frame metadata retains all aggregate members and drawn keys. This additional
|
||||
diagnostic row type does not change the six acceptance categories.
|
||||
- Added full state-to-geometry positives for actual track interpolation,
|
||||
staff/guest mixed packing on FRONT/BACK, fractional low-world-pixel scale and
|
||||
saturated aggregation with all identities retained. Added track/time/pause,
|
||||
forged-region/out-of-cell, aggregate identity loss and badge omission checks.
|
||||
R13 row11/29 remains an expected FAIL. Existing tests were not removed.
|
||||
|
||||
Precise outstanding TODOs before an implemented submission:
|
||||
|
||||
1. Complete full state-to-geometry positives for queue lane + work staff,
|
||||
passenger + floor, carried/resting/treated staff and cabin aggregation.
|
||||
Exercise compare_rest with an actual occupied facility, legitimate no-fit
|
||||
aggregate and queued staff; its new integration lacks those full fixtures.
|
||||
2. Complete full semantic negatives for queue precedence/order and forcing the
|
||||
receiving R13 guest back into its access cell. Existing primitive receiving
|
||||
fixture tests and overlay negatives are retained but are not substitutes for
|
||||
every required state-to-geometry case.
|
||||
3. Audit and implement regrouping after scale changes in BOTH packers. They
|
||||
currently form vertical groups before fitting; fitted feet/cores can change
|
||||
vertical intersections. Do not claim the required regrouping positive passes.
|
||||
Confirm carrier-relative pose/feet, cabin member coverage, and badge placement
|
||||
through the required semantic cases before declaring the renderer finished.
|
||||
4. Add full frame/offline/OS-context unit cases (including rest authority and
|
||||
malformed/missing stream context). Standalone/full transit paths have tests;
|
||||
production caller wiring was read but no OS/offline evidence run occurred.
|
||||
5. Finish the GDScript UI fixture and source-authority integration audit. Existing
|
||||
four-occupant UI preparation is retained and unexecuted. Marker contracts and
|
||||
suite policies are unchanged; do not append a duplicate suite row or fabricate
|
||||
an acceptance marker. If an authority append is necessary, only the single
|
||||
strict contract-permitted entry is authorized.
|
||||
|
||||
Local checks actually executed:
|
||||
|
||||
- Checker unit command `PYTHONDONTWRITEBYTECODE=1 python3
|
||||
tools/test_p23_life_observation_evidence.py`: 78 tests OK (0.104s), 80 OK
|
||||
(0.112s), 83 OK (0.134s), 85 OK (0.112s), then **86 OK (0.124s)**.
|
||||
No checker unit failure occurred in this continuation.
|
||||
- No-bytecode `compile(Path(p).read_bytes(), p, "exec")` syntax check for
|
||||
checker, checker tests and Root runner: all three OK, exit 0.
|
||||
- Read-only `git diff --check`: exit 0, no output.
|
||||
- One shell heredoc edit attempt failed before execution (`can't create temp
|
||||
file for here document: operation not permitted`); applied the intended edit
|
||||
with apply_patch afterward. One read-only search named a nonexistent
|
||||
`tools/regression/suite_policy.py`; read the actual JSON policy and runner
|
||||
directly. These were tool/read failures, not test passes.
|
||||
|
||||
No Godot/native/OS, full regression, Runner, provider, git write, integration or
|
||||
other agent was run. Root's **new native/OS evidence**, the **177-test full
|
||||
regression**, and the **independent Opus all-condition review** are still missing.
|
||||
Those expected later proofs alone are not the reason for this blocked status.
|
||||
|
||||
## Repair 24 continuation — current status: blocked, implementation incomplete
|
||||
|
||||
The floor/anchored-region interpretation is RESOLVED. No clarification or
|
||||
permission is requested. This status is an incomplete implementation, not an
|
||||
external specification blocker and not a submitted candidate. Preserve this
|
||||
worktree and every earlier uncommitted change. Historical sections below are
|
||||
retained as history, not current interpretations.
|
||||
|
||||
Read the current renderer, RoomPresentation, the recorded concrete direction,
|
||||
both R13 direction files, Phase 0 API map, Runtime initialization/spawn/formal
|
||||
save/load sources, and cleaning pose dependencies. No domain inputs or assets
|
||||
were changed. Seven conditions, six categories and 30/88 remain exact.
|
||||
|
||||
Implemented preparation in this continuation:
|
||||
|
||||
- Added per-actor cell/track, lane, facility, work-column and carried-patient
|
||||
bounds, inset by world pixel; added original logical cell to drawing rows.
|
||||
Staff queue placement now precedes the special staff anchors.
|
||||
- Added a cross-kind vertical grouping and forward/backward interval packer,
|
||||
integer scale trials and deterministic retained-member aggregation with a
|
||||
readable +m badge. Cabin rows participate. Preferred centers and pose fields
|
||||
remain separate from fitted drawing coordinates. This GDScript has NOT been
|
||||
executed and is not established as native-correct.
|
||||
- Added independent Python interval fitting and replaced original-scale
|
||||
assertions with reconstructed centers, bounds, poses, fitted rows and
|
||||
aggregation comparison. Queue and room reports are cross-checked before
|
||||
geometry classification; boarded keys are rebuilt from EV reports.
|
||||
- Added tests for the 56px four-mover case (all p=2), mixed actor kinds,
|
||||
saturation with all identities retained, individual intervals, and R13's
|
||||
receiving cafeteria guest outside its unchanged access cell. Added a full
|
||||
synthetic state-to-geometry four-mover case and mutations for cell, state,
|
||||
scale, position, missing/duplicate actors and unnecessary aggregation.
|
||||
- Added the four-occupant GDScript component fixture. It is NOT native evidence.
|
||||
|
||||
Known remaining implementation work (must be resolved before submission):
|
||||
|
||||
1. The full geometry entry point passes independently derived transit keys to
|
||||
pairwise checking, but standalone drawing-row/offline checks still use the
|
||||
conservative default with no transit exemptions. Reconcile those paths
|
||||
using authoritative inputs; never trust an in_transit/region flag.
|
||||
2. Existing compare_rest still expects each visible slot in actor_drawings and
|
||||
its original rest center. Reconcile legitimate aggregation and the new
|
||||
staff queue precedence without bypassing the independent no-fit check.
|
||||
3. Finish full classification tests for queue/work mixed groups, queue
|
||||
precedence/order, spoofed category, forced access-cell receiving position,
|
||||
carried/resting/treated staff, passengers and FRONT/BACK. Existing primitive
|
||||
packing positives are not a substitute for these full semantic cases.
|
||||
4. Audit pose/feet and regrouping after scale changes, low-world-pixel views,
|
||||
carried patients and cabin aggregation; validate the actual GDScript and
|
||||
report consumers through Root only after worker readiness. No new native
|
||||
correctness or complete collision-removal claim is made here.
|
||||
|
||||
Checks actually executed in this continuation, all local:
|
||||
|
||||
- `PYTHONDONTWRITEBYTECODE=1 python3 tools/test_p23_life_observation_evidence.py`:
|
||||
71 tests OK (0.093s), 76 tests OK (0.102s), then **78 tests OK (0.111s)**.
|
||||
Existing R13 row11/29 remains an expected rejection. No unit test failure
|
||||
occurred during this continuation; earlier failures remain recorded below.
|
||||
- No-bytecode `compile(Path(p).read_bytes(), p, "exec")` for checker,
|
||||
checker tests and Root runner: all three syntax checks OK, exit 0.
|
||||
- One dependency lookup used the wrong cleaning-bridge directory and returned
|
||||
an rg missing-file error; located and read the actual source under
|
||||
scripts/environment. This was a read failure, not a passing test.
|
||||
|
||||
No Godot/native/OS, full regression, Runner, provider, git write or agent was
|
||||
run. Root's **new native/OS evidence**, the **177-test full regression**, and
|
||||
the **independent Opus all-condition review** are still missing. Historical
|
||||
49 remains preserved and is not relabeled. No partial acceptance is claimed.
|
||||
|
||||
The inspection below is retained history. The repair 24 section above records
|
||||
the current status; the former full-box impossibility argument is superseded.
|
||||
|
||||
Scope: the seven immutable acceptance conditions and existing allowed paths.
|
||||
Validation: local Python syntax and checker unit tests only; no Godot execution.
|
||||
|
||||
Read the immutable acceptance spec, recorded concrete implementation direction,
|
||||
existing Phase 0 API map, renderer, actor art, and independent checker.
|
||||
The R13 provider stdout, command, and prompt SHA256 values match 01-actual.json.
|
||||
The actual structured review contains 8 frames and 132 rows. Its summary's
|
||||
168-row claim is not used to replace the structured rows. False judgments remain
|
||||
false. The reader-request-0003 whole screenshot confirms overlapping actors and
|
||||
obscured traffic presentation. Historical runtime evidence is unchanged.
|
||||
|
||||
Root native/OS evidence for a new candidate, the 177-test full regression, and
|
||||
independent Opus all-condition review remain required and are not worker tests.
|
||||
|
||||
## Status: blocked; partial independent checker preparation only
|
||||
|
||||
The renderer repair and traffic geometry/layer audit are **not implemented**.
|
||||
No claim of submission readiness or acceptance is made. No renderer, Runtime,
|
||||
policy, immutable spec, source authority pin, or historical evidence was changed.
|
||||
|
||||
### Placement specification gap and concrete failing evidence
|
||||
|
||||
In the original `os-pair/A/reader-request-0003/request.json`, SHA256
|
||||
`7dc3ee0bcc428e9d103726ee2448c767f1dd4107f9490833dc860c0b5140068c`,
|
||||
the decoded report contains guests `os-p23-012` through `os-p23-015`, all
|
||||
`MOVING`, logical cell `[1,1,0]`, with no service or queue request. Their
|
||||
tracks' `from` and `cell` are both `[1,1,0]`. The current cell is 64x96 pixels
|
||||
(`traffic` row 40's inset rect is `[709,390,60,92]`). Each actor's current
|
||||
draw/report footprint is 48x54 pixels: the 16x18 PixelPeople grid at scale 3.
|
||||
The four rectangles require area 10368, while the cell has area 6144.
|
||||
Consequently offsets alone, preserving those sizes and containing all four
|
||||
rectangles in that cell, cannot satisfy the requested nonoverlap invariant.
|
||||
This is already present in the supplied evidence, not a hypothetical load.
|
||||
|
||||
Source references: `world_preview.gd::_cell_dimensions`, `_actor_drawing`,
|
||||
`_tracked_actor_position`; checker `drawing_rectangle_rows` and
|
||||
`compare_actor_geometry`; `pixel_people.gd`'s 16x18 drawing grid.
|
||||
|
||||
The direction specifies offsets inside room/cell art, containment consistent
|
||||
with logical cell/state, retained motion, and no visual redesign. It does not
|
||||
resolve what presentation change is permitted when existing footprints cannot
|
||||
fit. Shrinking actors or expanding the permitted projection area could solve
|
||||
this capacity issue, but neither is silently treated here as authorized by an
|
||||
offset repair. This is a question about the admissible presentation, not a
|
||||
claim that every possible rendering solution is impossible.
|
||||
|
||||
Minimal proposal for the owner: specify whether deterministic scale reduction
|
||||
within the original logical cell is permitted (including the required readable
|
||||
minimum and behavior when it still cannot fit), or define an allowed room/lane
|
||||
projection for these non-queued moving actors. No Runtime capacity change,
|
||||
actor omission, or acceptance waiver is proposed. Retain all seven conditions.
|
||||
|
||||
### Independent work preserved
|
||||
|
||||
Added `validate_actor_nonoverlap` to both the semantic geometry path and offline
|
||||
drawing-row gate. It recomputes full footprints from raw `at`/`scale`, includes
|
||||
cabin passengers, rejects duplicate identities and invalid numeric geometry,
|
||||
and does not use eligibility labels or asserted booleans. Edge contact is
|
||||
allowed; positive-area overlap is rejected with actor identities.
|
||||
|
||||
Five added unit tests cover edge contact, overlap despite forged verdicts and
|
||||
off-screen labels, cabin/floor overlap, invalid footprints, and the actual R13
|
||||
false row 11 against staff row 29. The small historical-negative fixture copies
|
||||
only the needed raw drawing inputs and preserves `[11,false,false,false]` with
|
||||
request/manifest hashes. Its inputs were checked against the original typed
|
||||
report. The original review files and all their rows remain untouched.
|
||||
|
||||
The original manifest hash matches
|
||||
`53aa8e2f12e5d0a089529457fcd55ee1ba0600e8dffff2225bb8b057d007fe1a`;
|
||||
all crops in that manifest pass SHA verification. Opened the whole decoded image
|
||||
and crops 11, 29, 40 directly; crops 11 and 29 show the same covered figure.
|
||||
|
||||
Still missing: collision-free renderer placement, draw-consumed band rectangle,
|
||||
actual layer/geometry audits, and the requested additional cell/state, band,
|
||||
layer, and stale-frame negatives. Passing these local tests does not resolve
|
||||
those missing deliverables.
|
||||
|
||||
### Local checks actually run
|
||||
|
||||
Before edits:
|
||||
`PYTHONDONTWRITEBYTECODE=1 python3 tools/test_p23_life_observation_evidence.py`
|
||||
returned exit 0, `Ran 51 tests in 0.142s`, `OK`.
|
||||
|
||||
After edits the same command returned exit 0,
|
||||
`Ran 56 tests in 0.093s`, `OK`.
|
||||
|
||||
Syntax command (no bytecode output):
|
||||
```
|
||||
python3 -c 'from pathlib import Path; files=["tools/check_p23_life_observation_evidence.py","tools/test_p23_life_observation_evidence.py","tools/run_p23_life_observation.py"]; [(compile(Path(p).read_bytes(),p,"exec"),print("syntax OK:",p)) for p in files]'
|
||||
```
|
||||
Exit 0; printed `syntax OK:` for each of those three files.
|
||||
`git diff --check` returned exit 0 with no output (read-only check).
|
||||
No Godot, native/OS, full regression, provider, Runner, git write, or agent
|
||||
execution occurred. The initial shell heredoc attempt failed before execution
|
||||
because the shell could not create its temporary file; subsequent inspection
|
||||
used `python3 -c`.
|
||||
|
||||
## Recorded geometry direction continuation — blocked pending placement clarification
|
||||
|
||||
Read the complete `BUILD_OUTPUT_DIR/negative-image-review-r13/
|
||||
OPUS_GEOMETRY_RESOLUTION_DIRECTION.json`, the owner run direction, the current
|
||||
PixelPeople and WorldPreview sources, RoomPresentation slots, the existing
|
||||
Phase 0 audit and the actual initialize/spawn/save/load API sources. The spec
|
||||
still matches its contracted **stripped-text** SHA256. No spec, Runtime, save,
|
||||
asset, UI entry, gameplay value, authority entry or suite policy was changed.
|
||||
|
||||
### Implemented independent preparation
|
||||
|
||||
- Replaced the full-box overlap invariant with identity cores. The table is
|
||||
pinned to PixelPeople SHA256
|
||||
`a171703083aa2d00f8be2b63e1daef9c41717c8fe59d8056878bc4b7df1e0b0c`.
|
||||
Upright walking/carry-walking phases 2 and 6 shift the core up one grid unit.
|
||||
Standard-room sleep phases 2, 3 and 4 extend its top from y=11 to y=10,
|
||||
keeping the bottom at y=16, as required by the actual breathing marks.
|
||||
Flips use the actual 16-grid mirror. Missing pose inputs now fail closed.
|
||||
- Preserved the edge, forged-verdict, cabin, invalid-geometry and R13 tests.
|
||||
Edge coordinates now use 6x12 core extents instead of the rejected 16x18
|
||||
full-box extents; the deliberate overlap moves from [15,17] to [5,11].
|
||||
Added a passing full-box-overlap/disjoint-core case and bob, breathing,
|
||||
flip, missing-pose, duplicate, forged-transit and source-pin tests.
|
||||
R13 row11/29 still fails: both recomputed cores are [669,520,18,36].
|
||||
The fixture's newly required mode/frame/flip values were copied from the
|
||||
original request and checked against it. False judgments remain false.
|
||||
- Added the LifeOverlay Node2D between InactiveLayerRooms and LayerLens,
|
||||
connected its draw signal, and queued its redraw from the parent draw.
|
||||
The overlay draws traffic first, then cabin passengers and floor actors.
|
||||
Existing inactive-art alpha remains 0.22. Actor rows and animation inputs
|
||||
are unchanged. The report records observation/consumed serials, actual
|
||||
child indices and the passes executed in the callback.
|
||||
- Added the prescribed band rectangle at cell_bottom - 2*world_pixel,
|
||||
with existing thickness clamp, colour thresholds and 0.90 opacity.
|
||||
The blocked X is contained in the band pass. `compare_traffic` independently
|
||||
recomputes both cell and band rectangles from typed state. Overlay checks
|
||||
reject stale serial, reversed passes, child-order errors, a core covered
|
||||
by the band, and forged band geometry. Source wiring/order is also checked,
|
||||
so valid report flags do not excuse the tested reversed source callback.
|
||||
FRONT/BACK local synthetic checks and GDScript serial/order assertions were
|
||||
added. GDScript was **not executed**.
|
||||
|
||||
### Exact outstanding interpretation
|
||||
|
||||
Placement rule 1 gives service/rest/treatment anchors a facility region, while
|
||||
rule 2 says a floor actor must *also* remain in its own logical cell. It is
|
||||
unclear whether “floor actor” excludes these facility-anchored actors or means
|
||||
every non-passenger. This is consequential in the actual R13 request, not only
|
||||
in a fabricated layout:
|
||||
|
||||
- `guest-auto-00000044` receives `service_00000009` at cafeteria
|
||||
`facility_00000003`. Its unchanged logical cell is [5,0,0]. The recorded
|
||||
traffic inset [965,486,60,92] reconstructs cell [963,484,64,96].
|
||||
The facility rect is [1027,388,256,192], and its four-pixel inset starts at
|
||||
x=1031. There is no common x interval with the logical cell ending x=1027.
|
||||
- `guest-auto-00000019` receives `service_00000002` at standard room
|
||||
`facility_00000007`, rect [131,292,128,96]. Its logical access cell [-6,2,0]
|
||||
reconstructs to [259,292,64,96]. The facility inset ends x=255; again there
|
||||
is no common x interval. Its room pose is standard_room_sleep.
|
||||
|
||||
`r13_service_region_gap.json` preserves the needed original report fields,
|
||||
with source request SHA256
|
||||
`7dc3ee0bcc428e9d103726ee2448c767f1dd4107f9490833dc860c0b5140068c`.
|
||||
Direct comparison verified every copied guest, traffic and room rectangle.
|
||||
A diagnostic unit test demonstrates the empty intersection for both examples.
|
||||
These extracted fields are not substituted for whole typed acceptance evidence.
|
||||
|
||||
This does **not** establish that the new specification is impossible: rule 7
|
||||
allows aggregation when p=1 cannot fit. If floor means all non-passengers, these
|
||||
otherwise roomy facilities must aggregate their service guests with zero drawn
|
||||
members. If floor means unanchored actors, those guests can be packed and drawn
|
||||
in their facility region. The initial commentary's “constraint conflict” is
|
||||
therefore narrowed to this interpretation question. No cell restriction was
|
||||
silently removed and no zero-drawn service aggregation was silently adopted.
|
||||
An asynchronous question asks the owner to select the intended interpretation.
|
||||
|
||||
### Remaining implementation and evidence
|
||||
|
||||
Ordered placement, scale fitting, no-fit aggregation, queue-order preservation,
|
||||
carrier-relative fitted placement, transit recomputation/exemptions and their
|
||||
checker integration remain unimplemented. The checker remains conservative:
|
||||
an asserted in_transit flag never bypasses overlap, but the required genuine
|
||||
transit exception is not implemented. The existing geometry checker still
|
||||
expects original actor positions/scales. The four-occupant GDScript fixture,
|
||||
positive packing cases (staff/guest, passenger/floor, queue, saturation and
|
||||
carried patient), and the new containment/aggregation/queue-order negatives
|
||||
remain outstanding. The partial renderer changes are not a submitted candidate
|
||||
and are not claimed to solve R13 actor collisions. All existing tests remain.
|
||||
|
||||
Still missing: Root **new native/OS evidence**, the **177-test full regression**,
|
||||
and **independent Opus all-condition review** for the final candidate.
|
||||
Historical 49 is preserved and is not relabeled or credited to these edits.
|
||||
Seven immutable conditions and all6/30/88 remain exact, without partial credit.
|
||||
|
||||
### Checks actually run in this continuation
|
||||
|
||||
- `PYTHONDONTWRITEBYTECODE=1 python3 tools/test_p23_life_observation_evidence.py`:
|
||||
first core run: 63 tests, 7 failures and 1 error because older synthetic
|
||||
reports omitted pose fields. Updated those fixtures with explicit poses;
|
||||
63 tests then passed (0.089s), followed by 64 (0.094s) after the bounds
|
||||
diagnostic. First overlay run: 71 tests, 1 error because the older spatial
|
||||
fixture lacked the new band rectangle. Updated that fixture with explicit
|
||||
band geometry and consumed-frame fields. Final run: **71 tests, OK, 0.081s**.
|
||||
- The existing no-bytecode `compile(Path(p).read_bytes(), p, "exec")` syntax
|
||||
check passed for checker, checker tests and Root runner script (exit 0).
|
||||
- Direct Python read-only comparisons verified both extracted R13 fixtures
|
||||
against the original SHA-bound request and verified the immutable spec pin.
|
||||
- A shell heredoc read attempt failed before execution with “can't create
|
||||
temp file”; inspection continued with `python3 -c`.
|
||||
|
||||
No Godot, native/OS, full regression, Runner, nested provider, git write or
|
||||
other-agent execution occurred. Only allowed files were edited. The worktree's
|
||||
previous uncommitted work was retained and extended.
|
||||
@@ -0,0 +1,86 @@
|
||||
# Repair28 continuation / repair29 source handback
|
||||
|
||||
Record: SOURCE-READY, source-only submission for P23-03. This is not acceptance.
|
||||
The preserved repair28 implementation is unchanged by this continuation. Only the
|
||||
existing P23 marker source audit SHA and this new note are changed in repair29.
|
||||
Older notes, raw receipts and failure history remain unchanged.
|
||||
|
||||
## Input and preserved-state verification
|
||||
|
||||
Read all six Root inputs in full from the explicitly supplied
|
||||
`.runtime/P23-03/build/audit-support/root-repair29-input/` directory outside W.
|
||||
Each byte count and SHA256 matches MANIFEST.json. Its authoritative patch is
|
||||
64,737 bytes (SHA256 6b0a2a236a08f1c473850c06f7a761d1f0f8f4749db271771550d409d46e37b0),
|
||||
despite the older instruction's 384318-byte description. No input is missing.
|
||||
Before editing, all eight W file lengths and SHA256 values matched
|
||||
PRESERVED_MANIFEST.json; `git diff --binary` equalled PRESERVED_DIFF.patch byte
|
||||
for byte. The untracked r15 fixture was separately verified by its manifest SHA.
|
||||
|
||||
## A–E disposition and source map
|
||||
|
||||
| Item | Existing implementation / disposition |
|
||||
| --- | --- |
|
||||
| A1–A2 | scenes/main/world_preview.gd:1057 expands stops by reported shaft width; :1076 stops outward lanes at the footprint; :1094 retains member/visible/overflow accounting and badge offset. tools/check_p23_life_observation_evidence.py:965 independently reconstructs queues. |
|
||||
| A3 | scripts/ui/room_presentation.gd:77 supplies count, operation, doors and phase text; scenes/main/world_preview.gd:1224 draws existing PixelArt cabin/gate and badge on LifeOverlay; :811 draws cabins above inactive-layer context. |
|
||||
| A4 | scenes/main/world_preview.gd:640 collects opaque obstacles, :674 subtracts rectangles, :831 draws every traffic row including fully covered rows beneath opaque later cabins/badges. No density row is discarded. |
|
||||
| A5 | scenes/main/world_preview.gd:564 deep-copies the consumed model, including shaft_footprint (:1097), badge_rect (:1286), traffic_obstacles (:649), segment_rects (:665). |
|
||||
| B(a–d) | tests/ui/test_p23_life_observation.gd:32 covers width-2, overflow, empty cabin, both layers, operation/doors/phase and traffic geometry. tools/test_p23_life_observation_evidence.py:40 adds meaningful R15 intrusion/traffic and typed-state negatives. tests/fixtures/p23-03/passive_observation.gd:194 uses the reproducible badge rectangle. |
|
||||
| C1–C2 | tools/check_p23_life_observation_evidence.py:1840 validates external S/M/T/Q, allowed changes, deterministic merge tree, S-only/M-only blobs and complete T source/settings/input/QA bindings; :1799 and :1821 enforce the structural marker join retaining M/P18. tools/run_p23_life_observation.py:245 consumes external roles; :334 records v2 evidence. tools/test_p23_life_observation_evidence.py:135 covers composition negatives. |
|
||||
| C2(vi), C3 | tools/check_p23_life_observation_evidence.py:2108 refuses v1 history as current evidence; :1986 allows one screenshot only for screenshot requests, retaining real-input pairs. Existing staff, OS receipt, distinct-PID resume and image gates remain. Root owns final full regression and independent review. |
|
||||
| D | The earlier assertion that kitchen full177 was consistent is withdrawn: p04-final-product-full-r01 failed the relationships-v2 kitchen envelope (legacy/version/original_relationships added; threshold_candidates/next_candidate_sequence missing). Old 177 gives no T credit. No kitchen source or overlay was changed. ACTUAL_SUPPORT_COMPLETED.json records approved QA3a9c support integration 5041b88bdf25d0deaf3cb335be981896522c4880 (reported main tree df9b2851edaa7d02a55b834328cf9e9a9bb7203a). Root must bind the actual later M and its kitchen QA blob to T; neither 9b nor any old full result is fixed as authority. The four D05 choices are not worker blockers. |
|
||||
| E; repair29(b–c) | This note supplies the continuation handback and structured SOURCE-READY record. |
|
||||
| repair29(a), step 4 | completion_marker_contracts.json:3710 now pins the actual final GDScript test SHA. Only that existing row's audit SHA changes; template, required flag, authority scope and every other row remain intact. |
|
||||
|
||||
No concrete remaining A–C source omission was identified in this bounded check;
|
||||
therefore no code or test was changed and no new negative test was needed.
|
||||
|
||||
## R15 negative fixture provenance
|
||||
|
||||
tests/fixtures/p23-03/repair28_r15_negative.json is an extraction of historical
|
||||
local-coordinate fields, not a raw receipt. It identifies source 9a26f9a,
|
||||
manifest a25e15f00d09acb16b05e180a6263c3771c84449bd6e0c99b6968fd739727bd2,
|
||||
request 7099ca03da3cef5819e7965f6fdea8777b9995a9e12806e870e844ec2b02b9a5,
|
||||
R15 os-pair/A/reader-request-0003/request.json and negative rows 6/17.
|
||||
Tests calculate counterfactual geometry only in memory. This extraction and all
|
||||
synthetic projections grant no S/T execution or OS credit and do not relabel raw history.
|
||||
|
||||
## Frozen changed-source SHA256
|
||||
|
||||
| Path | SHA256 |
|
||||
| --- | --- |
|
||||
| scenes/main/world_preview.gd | 6c43e19fbce8ff5c442017ab22443f39f65f356c308ee895355cd7678d307f33 |
|
||||
| scripts/ui/room_presentation.gd | 2eda851534777575298ea005e2e6d0ee90785a81357d5b9c34cfb95f615a8181 |
|
||||
| tests/fixtures/p23-03/passive_observation.gd | 812c2a3b399b079333e4eae0fbf78946f1c39041e6859e65f8bc7c44aaad6bfc |
|
||||
| tests/fixtures/p23-03/repair28_r15_negative.json | 8525cdfbc504583778624ab103efb4642374715be73187e97bdbf18d180a1616 |
|
||||
| tests/ui/test_p23_life_observation.gd | 610ff2f33ec0e42bdca55d692e640c9bd8fe9244b9b49b0263419b1998ff9e9e |
|
||||
| tools/check_p23_life_observation_evidence.py | 767f3452cd9f0671e25bfda113153b0b1471fcbfdfa7aba6133f991a61cf306d |
|
||||
| tools/run_p23_life_observation.py | 1fa85aa53886887f9611997194240bf6e112f831e8f36ea3aff982d12538bdec |
|
||||
| tools/test_p23_life_observation_evidence.py | 4a52215b125f3445abde9992ee69ad9b09fc114977e359b52f190c966e6d3c39 |
|
||||
|
||||
## Verification and pending Root evidence
|
||||
|
||||
ROOT_LOCAL_TEST_RESULT.json is authoritative: `python3 -B
|
||||
tools/test_p23_life_observation_evidence.py`, exit 0, **123 tests, 0 failures**,
|
||||
0.267 seconds. The earlier worker count of 121 is superseded. These unchanged
|
||||
tests were not rerun in repair29; no Python source changed, so no syntax rerun
|
||||
was needed. Manifest/hash/diff comparisons via `python3 -B -c` exited 0.
|
||||
`git diff --check` exited 0. Final `python3 -B -c` hash/byte comparison exited 0:
|
||||
all eight preserved sources remain unchanged, and the marker file differs from
|
||||
HEAD by exactly the one authorized SHA replacement. Marker file SHA256 is
|
||||
4dbba39cad454d02a004ee3d000457c3e13f7fc017dcfdb847aca7b192a8e30b.
|
||||
The P23 marker entry SHA256 is
|
||||
f83f022c44db6f89fc18d634f7ec9ce54b56450299c0e30fb1275cd2b88b6b39
|
||||
(UTF-8 JSON, sorted keys, compact separators, ensure_ascii=False).
|
||||
Initial shell attempts failed before validation: heredoc temporary-file creation
|
||||
was denied (exit 1); `python` was unavailable (exit 127). The successful checks
|
||||
used `python3 -B -c` without temporary files.
|
||||
|
||||
Still missing and explicitly Root's work: exact-source native/component and
|
||||
impact evidence, same-demand A/B, normal OS on both layouts across all six
|
||||
categories and FRONT/BACK/pan/zoom, formal save and distinct-PID normal load,
|
||||
actual CUA receipts and independent bound-frame image judgments, one mandatory
|
||||
full regression on T, and independent Opus all-condition review. Root binds
|
||||
S/M/T/Q after submission and performs normal integration/final gates. No worker
|
||||
engine, OS, Runner, Git write, main operation or subagent was used. Seven
|
||||
conditions, six categories, 30/88 denominator, formal13, max repairs null and
|
||||
all counters/caps remain unchanged. No acceptance verdict is issued.
|
||||
@@ -0,0 +1,26 @@
|
||||
# Repair 28: traffic projection checker
|
||||
|
||||
Scope: checker, its Python tests, one minimal decoded fixture and this note. Renderer, Runtime, save paths and controller unchanged. No git writes, Godot/native/OS, Runner or full regression operations.
|
||||
|
||||
## Separate routing and defect records
|
||||
|
||||
- Normal negative validate 97b6cdf9 failed because the current index was absent. Historical 49 was preserved by canonical rename retaining index SHA c0cc9e…. That missing-current-proof result is not evidence of this static defect.
|
||||
- Independent readiness 887f9684 (READINESS_19FC3F5_ACTUAL.json) identifies the actual checker overconstraint. ROOT_19FC3F5_BAND_MISMATCH_REPRO.json and OPUS_19FC3F5_BAND_SCOPE_DIRECTION.json describe its repro and authorized scope.
|
||||
|
||||
All seven repair27 input files were read/decoded directly and their byte counts and SHA256 checked against MANIFEST.json (original paths retained in fixture provenance). The original frame-180 landing densities remain zero. The new 45 KB fixture contains only the unchanged decoded fields used by overlay validation: report frame/source metadata, actor drawings, cabins, traffic and camera/elevator track fields; raw world bounds, elevators and staff tasks. It is an extraction, not a raw receipt. No unused megabytes of state, rest or motion were copied. The positive test is explicitly COUNTERFACTUAL: only its in-memory report densities at (0,1,0) and (1,1,0) become 1, covering guests 018/019. It grants no engine/OS acceptance.
|
||||
|
||||
## Correction and caller audit
|
||||
|
||||
compare_traffic passes its actual snapshot into validate_life_overlay(report, root=ROOT, snapshot=None). inspect_stream already binds that state to its raw object and invokes compare_traffic; native layout and OS writer/reader stream validation therefore receive raw authority. The controller run_p23_life_observation.py has no direct validate_life_overlay/compare_traffic caller. Offline/OS drawing paths already use drawing_context to bind report/state/rest and retain compare_rest, compare_cabin_geometry and compare_actor_geometry. No new drawing gate was added there. Existing direct unit callers without state remain fail closed.
|
||||
|
||||
Cabin exemptions apply only to passenger entries belonging to that same raw shaft; cabin geometry reuses compare_cabin_geometry. A floor entry cannot inherit a passenger exemption by copying its key. Carried exemptions require actual active rescue transport binding and reuse compare_actor_geometry for original binding, track and raised-region fitting, excluding boarded/queue placements. Existing rest-authority checks remain unchanged. Missing-carrier KeyError remains deferred and fails closed.
|
||||
|
||||
Serial, consumed serial, reported passes, source child/pass order, source connection/parent restrictions, band rectangle and same-report checks remain unchanged. Floor cores keep the same strict intersection predicate. Every intersecting actor contributes a clipped horizontal interval. Sorted interval union must leave a nonzero uncovered span; no ratio or threshold was introduced.
|
||||
|
||||
## Local verification
|
||||
|
||||
- Python 3 -B compile() of both changed Python files: passed without writing bytecode.
|
||||
- Entire checker suite: 108 tests passed (all 99 existing plus 9 new); original R13 row11/29 negative retained. New tests cover counterfactual cabin success, occupied and blocked full union occlusion, spoofed cabin rectangle/membership, absent raw state, floor copy of cabin key, missing carrier binding, and carried binding/track/position mutations. Existing reversed report/source pass tests remain.
|
||||
- git diff --check: passed.
|
||||
|
||||
Root native/component, A/B on both layouts, normal OS, one full177 and independent Opus all-condition pixel review are expected after submission and do not block worker submission. No such unexecuted checks are claimed passed. Registered timeout 900 s, seven conditions, six categories, 30/88 and formal credit 0 remain unchanged.
|
||||
@@ -0,0 +1,90 @@
|
||||
# Repair 35 — source submission
|
||||
|
||||
Scope: P23-03 cabin-intrusion presentation repair only. Source input is
|
||||
`93248f4d79a3be71d7a1ac0592e9219d405cd6b7`; recorded tested Q is
|
||||
`428f653cdac375c1d4589e6c2d6138e914acf9da`. No Runtime, demand, assets,
|
||||
acceptance, policy, process ownership or timeout changes.
|
||||
|
||||
## Exact inputs and Phase 0
|
||||
|
||||
First read the repair35 `EXACT_INPUTS.json` under
|
||||
`/Users/korizatou114/Projects/TheTree-managed-worktrees/p23-03-code/.runtime/P23-03/build/audit-support/cabin-repair35-exact-inputs/`.
|
||||
Read its complete supplied `original_full_request.txt`, `actual_Opus_repair.json`
|
||||
and `actual_Opus_run.json`; all three supplied SHA256 pins match. Provenance-only
|
||||
source locations were not needed. Read the sibling actual-worker preflight.
|
||||
|
||||
Read the SHA-verified preserved all87 probe
|
||||
`audit-support/cabin-repair34-exact-inputs/CURRENT932_ALL_CABIN_INTRUSION_PROBE.json`
|
||||
under the same BUILD (SHA256
|
||||
`da395d697e0ec1bd2fb805757aa320314bbc840260f6062d12ecf5d859ceebd0`).
|
||||
Read all 87 complete collision rows and all their whole SHA-verified typed
|
||||
state/report objects: 19 distinct stream/state/report pairs, 31 distinct objects.
|
||||
Also decoded all referenced objects in all 161 current stream captures and read
|
||||
every file in the supplied r16 stage (1962 files, including the actual Q sources).
|
||||
No required evidence was truncated, compressed, relabelled or edited.
|
||||
|
||||
Used that preserved evidence to apply the new candidate-region rule: 70 rows
|
||||
select a corridor landing and 17 require identity aggregation because no lane is
|
||||
available. All 87 candidate regions intersect a cabin; outside-class rows: zero.
|
||||
This is static application to old negative evidence, not new rendered proof.
|
||||
|
||||
The existing `API_AND_STATE_MAP.md` remains the deterministic-demand/save-load
|
||||
audit. Directly checked current GuestRuntime enum (`MOVING` = 3, lines 6–19),
|
||||
WorldService `get_occupant`/`get_entity_cells`/`is_walkable` (194/204/228), and
|
||||
ElevatorService's copied public report (345). These read-only APIs supply the
|
||||
same queue lane topology and full-width shaft geometry; no new API is needed.
|
||||
Current complete dependency SHA256:
|
||||
|
||||
| Source | SHA256 |
|
||||
| --- | --- |
|
||||
| scripts/world/world_service.gd | add67a0799f961a7dce1d382ea6dac67022fbd013f8c4c6b11321df96f37944a |
|
||||
| scripts/transport/elevator_service.gd | cea09dd9204551c26b31b30cd3aa847cc77e3b75fdac31662b9694a95fb3580c |
|
||||
| scripts/guest/guest_runtime.gd | 57ba99e5d977b5302987f4359a19056f1ab09c8fb7e4762ee8d79cbb9316741a |
|
||||
|
||||
The immutable spec matches `8568457d…a9c89f` using the existing checker's
|
||||
`read_text().strip()` hash convention. Original acceptance and recorded complete
|
||||
Opus repair/run directions remain authoritative.
|
||||
|
||||
## Six pose classes
|
||||
|
||||
| Case | Product, world_preview.gd | Independent checker |
|
||||
| --- | --- | --- |
|
||||
| (a) MOVING/idle footprint actor | 1608 candidate region, 1651 cabin rule, 1743 center before fitting | 1532 candidate region, 1577 cabin rule, 1584 center before jitter |
|
||||
| (b) Lift-to-corridor walking transit | 1555 merged track bounds, 1565 landing becomes non-transit | 1532 merged track bounds, 1458 landing becomes non-transit |
|
||||
| (c) Carrier and raised patient | 1624 recursively relocated carrier region, then minus 12p | 1556 recursively relocated carrier region, then minus 12p; 1612 center |
|
||||
| (d) Fractional cabin crossing adjacent floor | 1565 positive-area intersection with actual cabin rect | 1458 intersection after independent cabin/badge validation at 1505 |
|
||||
| (e) No corridor lane | 1590 landing badge anchor, 1759 aggregation with every identity | 1482 landing badge anchor, 1703 identity aggregation |
|
||||
| (f) Queue plus relocated actor | 1602 prefer unreserved lane, otherwise existing packing | 1487 reservation choice, 1712 existing packing |
|
||||
|
||||
Room slots, queue placement/overflow, cabin/passenger geometry and overlay order
|
||||
are retained. The new landing centers preserve original jitter; carried patients
|
||||
use the relocated carrier before the 12p raise. No-lane actors share a counted
|
||||
aggregation at the floor's landing badge anchor, retaining key/id/state/cell/mode.
|
||||
Report-only region/boarded assertions cannot authorize a position.
|
||||
|
||||
`validate_cabin_intrusion`, `validate_actor_nonoverlap`, `actor_track_transit`
|
||||
are byte-identical to the supplied Q checker; `PIXEL_PEOPLE_CORE_SHA256` is
|
||||
unchanged. The existing P23-03 marker source-audit SHA alone was updated; all
|
||||
other marker rows and suite-policy are preserved.
|
||||
|
||||
`run_p23_life_observation.py:315` inspects both completed headless layout streams
|
||||
inside the existing exception/receipt/cleanup path, before OS collection.
|
||||
Failure therefore prevents OS collection. This is staging, not OS evidence.
|
||||
|
||||
## Verification and remaining Root work
|
||||
|
||||
- `py_compile` passes for the runner, checker and checker tests.
|
||||
- The full Python checker test file passes: 142 tests, including the seven new
|
||||
tests covering (a)–(f), old in-cabin positions, tampered flags, missing actors,
|
||||
missing aggregation identities, combined no-lane identities and unwarranted
|
||||
relocation. Existing 135 tests are retained.
|
||||
- Native assertions were extended at `tests/ui/test_p23_life_observation.gd:56`
|
||||
for same-floor and fractional moving cabins on both layers; not executed here.
|
||||
- No Godot, native/OS collection, full regression, Git writes, Runner operations
|
||||
or subagents were run. Root native/OS evidence is missing.
|
||||
|
||||
Root staging remains: affected native/UI test; typed headless A/B with early
|
||||
strict inspection and new-output intrusion probe requiring zero; then current
|
||||
S/M/T/Q OS r17; then one final full 179 and independent review. Keep all r16
|
||||
negative inputs and the all87 probe versioned. Seven conditions,
|
||||
30/88/formal-13 and no partial credit remain unchanged.
|
||||
@@ -0,0 +1,69 @@
|
||||
# Repair36 worker submission
|
||||
|
||||
Scope: world_preview observation labels, independent checker, Python/GD controls.
|
||||
No Runtime, service, data, art, policy, original negative, or acceptance changes.
|
||||
Input authority: registered BUILD `audit-support/badge-repair36-exact-inputs/EXACT_INPUTS.json`, source 26f60095; original paths are provenance identifiers.
|
||||
|
||||
The resolver places fixed cabin rectangles/badges first, then business, supply,
|
||||
landing, aggregation in array order. A positive-area collision advances to the
|
||||
first blocking rectangle's right edge and repeats. With finite rectangles of
|
||||
positive width this always terminates on the anchor row; the specified upper
|
||||
and lower fallback rows are therefore unreachable. No margin, pixel threshold,
|
||||
clipping, truncation, member alteration, or new viewport rule is introduced.
|
||||
Original anchors and ordered blocker identities are retained in deep-copy reports.
|
||||
Traffic obstacles use the resolved positions; actor placement/traffic subtraction
|
||||
and cabin/transit guards retain their existing implementations.
|
||||
|
||||
The checker separately projects anchors back into the original report shape for
|
||||
existing raw-state queue/business/aggregation recomputation. It independently
|
||||
replays label geometry and validates reported positions and blocker identities.
|
||||
All label pairs must have zero positive-area intersection. Both production image
|
||||
review consumers require explicit indexed `judgments`; the legacy `rows` helper
|
||||
interface remains available for unchanged historical unit controls only. Compact
|
||||
bits are never accepted for new image-review evidence.
|
||||
|
||||
## Static all40 comparison
|
||||
|
||||
Inputs: all40 original manifests plus their unchanged original requests in
|
||||
`p23-normal-os-26f-r17`, read only. This is a counterfactual static projection,
|
||||
not a new rendered screenshot or native/OS acceptance.
|
||||
|
||||
Original manifest label pairs: exactly one intersection, B/writer-request-0021,
|
||||
rows 5 (queue) and 26 (aggregation). Resolved labels: zero intersections in all
|
||||
40 frames, including fixed cabin labels. Thirty frames have no movement.
|
||||
The following is the complete movement list in local canvas coordinates:
|
||||
|
||||
| Frame | Label | Original | Resolved | displaced_by |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| A/reader-request-0003 | landing/0 | 563,468 | 755,468 | cabin/0/rect |
|
||||
| A/writer-request-0014 | landing/0 | 563,468 | 845,468 | cabin/0/badge |
|
||||
| A/writer-request-0021 | landing/0 | 563,468 | 875,468 | cabin/0/badge |
|
||||
| A/writer-request-0025 | landing/0 | 563,468 | 855,468 | cabin/0/badge |
|
||||
| A/writer-request-0030 | landing/0 | 563,468 | 755,468 | cabin/0/rect |
|
||||
| B/reader-request-0003 | landing/1 | 819,468 | 1111,468 | cabin/0/badge, cabin/1/badge |
|
||||
| B/writer-request-0014 | landing/0 | 563,468 | 1101,468 | cabin/0/badge, cabin/1/badge |
|
||||
| B/writer-request-0014 | landing/1 | 819,468 | 1217,468 | cabin/1/badge, landing/0 |
|
||||
| B/writer-request-0021 | landing/0 | 563,468 | 755,468 | cabin/0/rect |
|
||||
| B/writer-request-0021 | landing/1 | 819,468 | 1011,468 | cabin/1/rect |
|
||||
| B/writer-request-0021 | aggregation/0 | 563,372 | 825,372 | landing/2, cabin/0/badge |
|
||||
| B/writer-request-0025 | landing/1 | 819,468 | 1111,468 | cabin/0/badge, cabin/1/badge |
|
||||
| B/writer-request-0030 | landing/1 | 819,468 | 1111,468 | cabin/0/badge, cabin/1/badge |
|
||||
|
||||
The affected queue anchor remains local [563,372], corresponding to original
|
||||
manifest screenshot [642,469]. Its five members remain hidden and its complete
|
||||
label remains unchanged. The historical reviewer index24/text26 disagreement
|
||||
and all prior negatives remain untouched; no staff defect or acceptance credit
|
||||
is inferred.
|
||||
|
||||
## Validation boundary
|
||||
|
||||
Worker runs Python syntax/local semantic tests only. GD controls are added but
|
||||
not executed here. Root still must replay currentbad, run localized/native,
|
||||
new normal OS A/B with indexed independent image review, then one full regression
|
||||
and formal review/integration/ledger in the recorded order. No formal acceptance,
|
||||
original88 credit, Windows, held-gesture, performance, or asset credit is claimed.
|
||||
|
||||
Local result: Python AST syntax PASS; 146 Python tests PASS (142 retained plus
|
||||
four focused controls). All 142 pre-existing test method ASTs match HEAD exactly.
|
||||
`git diff --check` PASS. Only the existing P23 GD marker source SHA was refreshed;
|
||||
no marker requirements or policies changed. No Godot/native/OS/full was run.
|
||||
@@ -0,0 +1,21 @@
|
||||
# Repair37 portable recorded negative fixture
|
||||
|
||||
Candidate starts at `059c2f743be655c11627a2b19d8eab9f86a000a6` under the unchanged P23-03 contract. No Git write or Runner operation was performed.
|
||||
|
||||
`tests/fixtures/p23-03/recorded-badge-negative.json.gz` is copied byte-for-byte from Root's `.runtime/P23-03/build/audit-support/badge-repair37-portable-fixture/PROPOSED_PORTABLE_FIXTURE.json.gz` in the parent worktree directory. SHA256: `17b1596fb1dca0436cd656ac21a9dc754c75b4485335a0aebe533f70e1c1b5ac`; gzip length 83,518 bytes; decompressed length 3,490,211 bytes. Repeated decompression yields identical bytes.
|
||||
|
||||
The bundle records observed source `26f60095bff015efbf7d7cf89b5b0bbab1fec31e`, observed tested commit `dfe0dc44b0b88ace598c1b8bd05283c6084cb081`, and original PID 87103. These are preserved negative-input provenance, not acceptance evidence for 059 or this candidate. Original relative paths below are relative to the preserved `p23-normal-os-26f-r17` evidence root:
|
||||
|
||||
| Payload | Original relative path | Bytes | SHA256 |
|
||||
| --- | --- | ---: | --- |
|
||||
| request | `os-pair/B/writer-request-0021/request.json` | 655285 | `f9cd2d5ff9dd63d9cf7ae4a295ccef8eea16f75ac784696dc40906703731e1d8` |
|
||||
| state | `os-pair/B/writer-stream/objects/724d8fe362ba3e05eddd83c4b7c54da101899df6cd91ae88250feea3d4feff82.json` | 1867011 | `724d8fe362ba3e05eddd83c4b7c54da101899df6cd91ae88250feea3d4feff82` |
|
||||
| manifest | `os-pair/B/writer-request-0021/review-image-0/manifest.json` | 75726 | `a98782ec1263aba400d542862dd084d2f1dd4cf7a0851cf7f0679867e545a338` |
|
||||
|
||||
The loader verifies all three payload lengths and hashes on every call. Request uses JSON, report and state use the existing typed decoder; state retains the whole-Dictionary check. There is no runtime lookup, fallback, cache, extraction, or skip.
|
||||
|
||||
Local validation: all 146 Python tests pass; AST audit against 059c2f7 confirms 145 test methods are source-byte and AST identical, and the remaining method is AST identical after replacing only the manifest assignment value with the same fixed placeholder. Python syntax compilation passes. A fresh isolated copy of Git-tracked candidate files plus the fixture, without `.runtime`, passes Repair36LabelTests 4/4. Separate corrupt-payload and missing-fixture controls fail with fatal errors. No extra fixture is retained.
|
||||
|
||||
Frozen whole-file SHA256 values remain unchanged: renderer `4bc49a19a38b9c3b4d6bfc243ddf46f1f25469a8273adb5e812911ef9424a1f2`; checker `e41479ae51bccdfab3f31bd348794b441c2f341179bbe33222e2aacdf88f987f`.
|
||||
|
||||
Native and OS checks are still pending. Root's final local run on the new tested commit, raw geometry/native checks, new normal OS run, every indexed-image review, mandatory full 179, formal all 7, integration and ledger remain pending. No Godot or full suite was run by this worker.
|
||||
@@ -0,0 +1,296 @@
|
||||
# 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`.
|
||||
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)
|
||||
|
||||
1. 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.
|
||||
2. 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.
|
||||
3. 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.
|
||||
4. 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.
|
||||
5. 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.
|
||||
@@ -0,0 +1,922 @@
|
||||
{
|
||||
"errors": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"expected_row_count": 10,
|
||||
"images": [
|
||||
{
|
||||
"conversion_sha256": "d9e92a5b1925d6e1855f6eaff2820007d7db8dd79a5348ec801a38251b40fe90",
|
||||
"raw_sha256": "ab073ed1055ca2356a050fdd47176c454c109ebe5c008b194ea8a5f149efa7f5",
|
||||
"receipt_sha256": "184d50e702232ce259ca75b830992cb8e91d5175289a21812661325bf0024860",
|
||||
"request_sha256": "172dc9a8f4bb684583f7417ac4c544172ee66b4134845fe540326df5598e6167",
|
||||
"whole_image_sha256": "206a9aafdc50d1f2f330690e14390de8c7ed5b0df024cedf8f2fbd35326f455a"
|
||||
},
|
||||
{
|
||||
"conversion_sha256": "b25b2224963f9a02ad87675969ab51c90aff29891b136095198afc2fe95acb73",
|
||||
"raw_sha256": "7027a7f1813aa8c9fcff38e6e4b022ed718d6f9c9fd13d31ecc3d6d10818ac10",
|
||||
"receipt_sha256": "184d50e702232ce259ca75b830992cb8e91d5175289a21812661325bf0024860",
|
||||
"request_sha256": "172dc9a8f4bb684583f7417ac4c544172ee66b4134845fe540326df5598e6167",
|
||||
"whole_image_sha256": "e6ab48ad864a1b5fdca2da587d95fe7949ac0c59e664a4524db66e3e861a73aa"
|
||||
}
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"rows": [
|
||||
{
|
||||
"category": "room",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0000-image-0.png",
|
||||
"sha256": "0811d7a2ac82283233b2b5179ddc6ac32a86fac3a211febae2c706ba36513286"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0000-image-1.png",
|
||||
"sha256": "0811d7a2ac82283233b2b5179ddc6ac32a86fac3a211febae2c706ba36513286"
|
||||
}
|
||||
],
|
||||
"dimmed": true,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": null,
|
||||
"id": "facility_00000002",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
131.0,
|
||||
388.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 0,
|
||||
"screenshot_rect": [
|
||||
210.0,
|
||||
485.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"34413b",
|
||||
"8e6348",
|
||||
"c39665",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"c6b999",
|
||||
"a6b6a0",
|
||||
"d4c7a5",
|
||||
"acb9a5",
|
||||
"897487",
|
||||
"f1e9cb",
|
||||
"b39b77",
|
||||
"615563",
|
||||
"a57852",
|
||||
"587f7b",
|
||||
"edc97c",
|
||||
"d6ad52",
|
||||
"709b94",
|
||||
"a37b91",
|
||||
"72b6b8",
|
||||
"c1e0d4",
|
||||
"445652",
|
||||
"a2b2a3",
|
||||
"d3aa8f",
|
||||
"ca9c62",
|
||||
"ffe9a8",
|
||||
"6c8993",
|
||||
"adc5b4",
|
||||
"52836c",
|
||||
"c7c6a6",
|
||||
"a8b6aa",
|
||||
"d8bf89",
|
||||
"aec0bf",
|
||||
"8a7155",
|
||||
"617f82",
|
||||
"3e514e",
|
||||
"404f63",
|
||||
"83958a",
|
||||
"283a39",
|
||||
"586c62",
|
||||
"526177",
|
||||
"dcc08b",
|
||||
"9daa8d",
|
||||
"879eaa",
|
||||
"556e62",
|
||||
"4d6472",
|
||||
"e2bd6c",
|
||||
"ba7157",
|
||||
"bfbb9a",
|
||||
"a9aa91",
|
||||
"9ab9b3",
|
||||
"d5e3d0",
|
||||
"f2ca81",
|
||||
"fff0d6",
|
||||
"a67c53"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_tower_art.gd",
|
||||
"style_source_sha256": "71df9b8400cb883a5bb1c89729f80c77e734df503fc54154be3e486adb8391df",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "room",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0001-image-0.png",
|
||||
"sha256": "bb79fa3c9cc46f2f7b9d31b2de85c3b6f6b4446718d3614cfeeba818ea87cb69"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0001-image-1.png",
|
||||
"sha256": "bb79fa3c9cc46f2f7b9d31b2de85c3b6f6b4446718d3614cfeeba818ea87cb69"
|
||||
}
|
||||
],
|
||||
"dimmed": true,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": null,
|
||||
"id": "facility_00000003",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
1027.0,
|
||||
388.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 1,
|
||||
"screenshot_rect": [
|
||||
1106.0,
|
||||
485.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"34413b",
|
||||
"8e6348",
|
||||
"c39665",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"c6b999",
|
||||
"a6b6a0",
|
||||
"d4c7a5",
|
||||
"acb9a5",
|
||||
"897487",
|
||||
"f1e9cb",
|
||||
"b39b77",
|
||||
"615563",
|
||||
"a57852",
|
||||
"587f7b",
|
||||
"edc97c",
|
||||
"d6ad52",
|
||||
"709b94",
|
||||
"a37b91",
|
||||
"72b6b8",
|
||||
"c1e0d4",
|
||||
"445652",
|
||||
"a2b2a3",
|
||||
"d3aa8f",
|
||||
"ca9c62",
|
||||
"ffe9a8",
|
||||
"6c8993",
|
||||
"adc5b4",
|
||||
"52836c",
|
||||
"c7c6a6",
|
||||
"a8b6aa",
|
||||
"d8bf89",
|
||||
"aec0bf",
|
||||
"8a7155",
|
||||
"617f82",
|
||||
"3e514e",
|
||||
"404f63",
|
||||
"83958a",
|
||||
"283a39",
|
||||
"586c62",
|
||||
"526177",
|
||||
"dcc08b",
|
||||
"9daa8d",
|
||||
"879eaa",
|
||||
"556e62",
|
||||
"4d6472",
|
||||
"e2bd6c",
|
||||
"ba7157",
|
||||
"bfbb9a",
|
||||
"a9aa91",
|
||||
"9ab9b3",
|
||||
"d5e3d0",
|
||||
"f2ca81",
|
||||
"fff0d6",
|
||||
"a67c53"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_tower_art.gd",
|
||||
"style_source_sha256": "71df9b8400cb883a5bb1c89729f80c77e734df503fc54154be3e486adb8391df",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "room",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0002-image-0.png",
|
||||
"sha256": "b90d74efdd21be0eb69555138dccacb62100825a908c6f17958e17a46321056b"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0002-image-1.png",
|
||||
"sha256": "b90d74efdd21be0eb69555138dccacb62100825a908c6f17958e17a46321056b"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": null,
|
||||
"id": "facility_00000007",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
131.0,
|
||||
292.0,
|
||||
128.0,
|
||||
96.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "OPERATING",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 2,
|
||||
"screenshot_rect": [
|
||||
210.0,
|
||||
389.0,
|
||||
128.0,
|
||||
96.0
|
||||
],
|
||||
"state": "OPEN",
|
||||
"state_name": "OPEN",
|
||||
"style_colors": [
|
||||
"34413b",
|
||||
"8e6348",
|
||||
"c39665",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"c6b999",
|
||||
"a6b6a0",
|
||||
"d4c7a5",
|
||||
"acb9a5",
|
||||
"897487",
|
||||
"f1e9cb",
|
||||
"b39b77",
|
||||
"615563",
|
||||
"a57852",
|
||||
"587f7b",
|
||||
"edc97c",
|
||||
"d6ad52",
|
||||
"709b94",
|
||||
"a37b91",
|
||||
"72b6b8",
|
||||
"c1e0d4",
|
||||
"445652",
|
||||
"a2b2a3",
|
||||
"d3aa8f",
|
||||
"ca9c62",
|
||||
"ffe9a8",
|
||||
"6c8993",
|
||||
"adc5b4",
|
||||
"52836c",
|
||||
"c7c6a6",
|
||||
"a8b6aa",
|
||||
"d8bf89",
|
||||
"aec0bf",
|
||||
"8a7155",
|
||||
"617f82",
|
||||
"3e514e",
|
||||
"404f63",
|
||||
"83958a",
|
||||
"283a39",
|
||||
"586c62",
|
||||
"526177",
|
||||
"dcc08b",
|
||||
"9daa8d",
|
||||
"879eaa",
|
||||
"556e62",
|
||||
"4d6472",
|
||||
"e2bd6c",
|
||||
"ba7157",
|
||||
"bfbb9a",
|
||||
"a9aa91",
|
||||
"9ab9b3",
|
||||
"d5e3d0",
|
||||
"f2ca81",
|
||||
"fff0d6",
|
||||
"a67c53"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_tower_art.gd",
|
||||
"style_source_sha256": "71df9b8400cb883a5bb1c89729f80c77e734df503fc54154be3e486adb8391df",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "queue",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0003-image-0.png",
|
||||
"sha256": "eeb6b5a301d017693ba3acd47d22b63348bc6536c5ddcfd593aa0d593e256aac"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0003-image-1.png",
|
||||
"sha256": "eeb6b5a301d017693ba3acd47d22b63348bc6536c5ddcfd593aa0d593e256aac"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": 36.0,
|
||||
"id": "0",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
259.0,
|
||||
276.0,
|
||||
42.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": null,
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 3,
|
||||
"screenshot_rect": [
|
||||
338.0,
|
||||
373.0,
|
||||
42.0,
|
||||
14.0
|
||||
],
|
||||
"state": {
|
||||
"members": [
|
||||
"guest/guest-auto-00000019"
|
||||
],
|
||||
"overflow": 0,
|
||||
"visible_count": 1
|
||||
},
|
||||
"state_name": null,
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "待ち1人"
|
||||
},
|
||||
{
|
||||
"category": "guest",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0004-image-0.png",
|
||||
"sha256": "e08ebb7ae2eb1f2f66360df04d7c132bed923ece9ba5d406c72f23c16bc71e34"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0004-image-1.png",
|
||||
"sha256": "e08ebb7ae2eb1f2f66360df04d7c132bed923ece9ba5d406c72f23c16bc71e34"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": null,
|
||||
"id": "guest/guest-auto-00000019",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
267.0,
|
||||
325.0,
|
||||
48.0,
|
||||
54.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": null,
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 4,
|
||||
"screenshot_rect": [
|
||||
346.0,
|
||||
422.0,
|
||||
48.0,
|
||||
54.0
|
||||
],
|
||||
"state": "QUEUING",
|
||||
"state_name": "QUEUING",
|
||||
"style_colors": [
|
||||
"688da0",
|
||||
"b87659",
|
||||
"a69a63",
|
||||
"89789e",
|
||||
"638d72",
|
||||
"edc49d",
|
||||
"c99371",
|
||||
"a56f50",
|
||||
"303c40",
|
||||
"719d94",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"eee6c7",
|
||||
"e3dfc2",
|
||||
"956940",
|
||||
"d3ad6b",
|
||||
"b48850",
|
||||
"af9059",
|
||||
"d8bc78",
|
||||
"f3ebcf",
|
||||
"efe7ce",
|
||||
"805e44"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_people.gd",
|
||||
"style_source_sha256": "a171703083aa2d00f8be2b63e1daef9c41717c8fe59d8056878bc4b7df1e0b0c",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "guest",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0005-image-0.png",
|
||||
"sha256": "8b4be9869042638da9a5afdd90ce982baa16623c2b5e4cbedc50109680867522"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0005-image-1.png",
|
||||
"sha256": "8b4be9869042638da9a5afdd90ce982baa16623c2b5e4cbedc50109680867522"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": null,
|
||||
"id": "guest/guest-auto-00000020",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
139.0,
|
||||
301.0,
|
||||
48.0,
|
||||
54.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": null,
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 5,
|
||||
"screenshot_rect": [
|
||||
218.0,
|
||||
398.0,
|
||||
48.0,
|
||||
54.0
|
||||
],
|
||||
"state": "RECEIVING_SERVICE",
|
||||
"state_name": "RECEIVING_SERVICE",
|
||||
"style_colors": [
|
||||
"688da0",
|
||||
"b87659",
|
||||
"a69a63",
|
||||
"89789e",
|
||||
"638d72",
|
||||
"edc49d",
|
||||
"c99371",
|
||||
"a56f50",
|
||||
"303c40",
|
||||
"719d94",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"eee6c7",
|
||||
"e3dfc2",
|
||||
"956940",
|
||||
"d3ad6b",
|
||||
"b48850",
|
||||
"af9059",
|
||||
"d8bc78",
|
||||
"f3ebcf",
|
||||
"efe7ce",
|
||||
"805e44"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_people.gd",
|
||||
"style_source_sha256": "a171703083aa2d00f8be2b63e1daef9c41717c8fe59d8056878bc4b7df1e0b0c",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "business",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0006-image-0.png",
|
||||
"sha256": "62525c0b9f2c189545666c134eb6f83b660d6efbc0698278ce049ace7e708d0a"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0006-image-1.png",
|
||||
"sha256": "62525c0b9f2c189545666c134eb6f83b660d6efbc0698278ce049ace7e708d0a"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": 73.0,
|
||||
"id": "0",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
133.0,
|
||||
390.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 6,
|
||||
"screenshot_rect": [
|
||||
212.0,
|
||||
487.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "職員不足 未稼働"
|
||||
},
|
||||
{
|
||||
"category": "business",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0007-image-0.png",
|
||||
"sha256": "379c49ce02077552289ae503c74a4a0032150ff6cec3ea20c42045f6a059ec3d"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0007-image-1.png",
|
||||
"sha256": "379c49ce02077552289ae503c74a4a0032150ff6cec3ea20c42045f6a059ec3d"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": 73.0,
|
||||
"id": "1",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
1029.0,
|
||||
390.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 7,
|
||||
"screenshot_rect": [
|
||||
1108.0,
|
||||
487.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "職員不足 未稼働"
|
||||
},
|
||||
{
|
||||
"category": "business",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0008-image-0.png",
|
||||
"sha256": "79ea1c2d0ff2d4e8f6c7ff20f019a4e264c480438e7528b8de85709b8d8eeda5"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0008-image-1.png",
|
||||
"sha256": "79ea1c2d0ff2d4e8f6c7ff20f019a4e264c480438e7528b8de85709b8d8eeda5"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [
|
||||
"offline rectangle coverage"
|
||||
],
|
||||
"font_width": 69.0,
|
||||
"id": "2",
|
||||
"layer": 0,
|
||||
"local_rect": [
|
||||
133.0,
|
||||
294.0,
|
||||
75.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": false,
|
||||
"operation": "OPERATING",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 8,
|
||||
"screenshot_rect": [
|
||||
212.0,
|
||||
391.0,
|
||||
75.0,
|
||||
14.0
|
||||
],
|
||||
"state": "OPEN",
|
||||
"state_name": "OPEN",
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "営業中 利用1人"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
646334f4ef3c78a8cfe5d68d3738c4d772cdd71cbf80b2dba7c153693ead4419
|
||||
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
@@ -0,0 +1,443 @@
|
||||
{
|
||||
"errors": [],
|
||||
"expected_row_count": 4,
|
||||
"images": [
|
||||
{
|
||||
"conversion_sha256": "363c2bdb1da77458226d01e971b9aea1220fcc81f70fb5c3c816a12b7039fac3",
|
||||
"raw_sha256": "2abb4675f9978e7b86599c4334732ebadcb7cd5c5c51deeacaa7d0dee858e9b9",
|
||||
"receipt_sha256": "b393e4e0afcdbc72f8cbb3c88cbe6cab7fa2548855ee648c69c5ac61f7fffb17",
|
||||
"request_sha256": "1a9ace68b3cf0ca997ea3e28ba1da1c30aa0cff72bf5d433d008ce578c7de093",
|
||||
"whole_image_sha256": "abf7d2e89413431438f35cc3eecb5534a7257cb033906c5397592678b2e9bce4"
|
||||
},
|
||||
{
|
||||
"conversion_sha256": "d9f5e79103258a50bb5d0866725a8488017a9cc8ef150312d16de9043618b55c",
|
||||
"raw_sha256": "e5a7ac0c3ba3f001baae7c771304d1a9a9cf024240176e8f8735a9dcf1091b31",
|
||||
"receipt_sha256": "b393e4e0afcdbc72f8cbb3c88cbe6cab7fa2548855ee648c69c5ac61f7fffb17",
|
||||
"request_sha256": "1a9ace68b3cf0ca997ea3e28ba1da1c30aa0cff72bf5d433d008ce578c7de093",
|
||||
"whole_image_sha256": "b82e6ef061d9b4e8cbc3321405553f3f447c8abfb61ce38532254130a704ee95"
|
||||
}
|
||||
],
|
||||
"mechanical_pass": true,
|
||||
"rows": [
|
||||
{
|
||||
"category": "room",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0000-image-0.png",
|
||||
"sha256": "94beea581b9586cda35d6c16a0bb8dccc7cad6c6cd0a9842ead3b34d19066f43"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0000-image-1.png",
|
||||
"sha256": "94beea581b9586cda35d6c16a0bb8dccc7cad6c6cd0a9842ead3b34d19066f43"
|
||||
}
|
||||
],
|
||||
"dimmed": true,
|
||||
"eligibility": "visible",
|
||||
"failures": [],
|
||||
"font_width": null,
|
||||
"id": "facility_00000004",
|
||||
"layer": 1,
|
||||
"local_rect": [
|
||||
131.0,
|
||||
388.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"mechanical_pass": true,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 0,
|
||||
"screenshot_rect": [
|
||||
210.0,
|
||||
485.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"34413b",
|
||||
"8e6348",
|
||||
"c39665",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"c6b999",
|
||||
"a6b6a0",
|
||||
"d4c7a5",
|
||||
"acb9a5",
|
||||
"897487",
|
||||
"f1e9cb",
|
||||
"b39b77",
|
||||
"615563",
|
||||
"a57852",
|
||||
"587f7b",
|
||||
"edc97c",
|
||||
"d6ad52",
|
||||
"709b94",
|
||||
"a37b91",
|
||||
"72b6b8",
|
||||
"c1e0d4",
|
||||
"445652",
|
||||
"a2b2a3",
|
||||
"d3aa8f",
|
||||
"ca9c62",
|
||||
"ffe9a8",
|
||||
"6c8993",
|
||||
"adc5b4",
|
||||
"52836c",
|
||||
"c7c6a6",
|
||||
"a8b6aa",
|
||||
"d8bf89",
|
||||
"aec0bf",
|
||||
"8a7155",
|
||||
"617f82",
|
||||
"3e514e",
|
||||
"404f63",
|
||||
"83958a",
|
||||
"283a39",
|
||||
"586c62",
|
||||
"526177",
|
||||
"dcc08b",
|
||||
"9daa8d",
|
||||
"879eaa",
|
||||
"556e62",
|
||||
"4d6472",
|
||||
"e2bd6c",
|
||||
"ba7157",
|
||||
"bfbb9a",
|
||||
"a9aa91",
|
||||
"9ab9b3",
|
||||
"d5e3d0",
|
||||
"f2ca81",
|
||||
"fff0d6",
|
||||
"a67c53"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_tower_art.gd",
|
||||
"style_source_sha256": "71df9b8400cb883a5bb1c89729f80c77e734df503fc54154be3e486adb8391df",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "room",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0001-image-0.png",
|
||||
"sha256": "713f0f370de8ff40def7b5fbe9f071b8f5be3db1604b18bce5c6cf7e8eb62c54"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0001-image-1.png",
|
||||
"sha256": "713f0f370de8ff40def7b5fbe9f071b8f5be3db1604b18bce5c6cf7e8eb62c54"
|
||||
}
|
||||
],
|
||||
"dimmed": true,
|
||||
"eligibility": "visible",
|
||||
"failures": [],
|
||||
"font_width": null,
|
||||
"id": "facility_00000005",
|
||||
"layer": 1,
|
||||
"local_rect": [
|
||||
1027.0,
|
||||
388.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"mechanical_pass": true,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 1,
|
||||
"screenshot_rect": [
|
||||
1106.0,
|
||||
485.0,
|
||||
256.0,
|
||||
192.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"34413b",
|
||||
"8e6348",
|
||||
"c39665",
|
||||
"eee5c9",
|
||||
"608d84",
|
||||
"c6b999",
|
||||
"a6b6a0",
|
||||
"d4c7a5",
|
||||
"acb9a5",
|
||||
"897487",
|
||||
"f1e9cb",
|
||||
"b39b77",
|
||||
"615563",
|
||||
"a57852",
|
||||
"587f7b",
|
||||
"edc97c",
|
||||
"d6ad52",
|
||||
"709b94",
|
||||
"a37b91",
|
||||
"72b6b8",
|
||||
"c1e0d4",
|
||||
"445652",
|
||||
"a2b2a3",
|
||||
"d3aa8f",
|
||||
"ca9c62",
|
||||
"ffe9a8",
|
||||
"6c8993",
|
||||
"adc5b4",
|
||||
"52836c",
|
||||
"c7c6a6",
|
||||
"a8b6aa",
|
||||
"d8bf89",
|
||||
"aec0bf",
|
||||
"8a7155",
|
||||
"617f82",
|
||||
"3e514e",
|
||||
"404f63",
|
||||
"83958a",
|
||||
"283a39",
|
||||
"586c62",
|
||||
"526177",
|
||||
"dcc08b",
|
||||
"9daa8d",
|
||||
"879eaa",
|
||||
"556e62",
|
||||
"4d6472",
|
||||
"e2bd6c",
|
||||
"ba7157",
|
||||
"bfbb9a",
|
||||
"a9aa91",
|
||||
"9ab9b3",
|
||||
"d5e3d0",
|
||||
"f2ca81",
|
||||
"fff0d6",
|
||||
"a67c53"
|
||||
],
|
||||
"style_source": "scripts/ui/pixel_tower_art.gd",
|
||||
"style_source_sha256": "71df9b8400cb883a5bb1c89729f80c77e734df503fc54154be3e486adb8391df",
|
||||
"text": null
|
||||
},
|
||||
{
|
||||
"category": "business",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0002-image-0.png",
|
||||
"sha256": "a5ba5edbf9706e2b8a3ceb1de3d61e11074fbb731316e9686e2cec5ea98fc2ae"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0002-image-1.png",
|
||||
"sha256": "a5ba5edbf9706e2b8a3ceb1de3d61e11074fbb731316e9686e2cec5ea98fc2ae"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [],
|
||||
"font_width": 73.0,
|
||||
"id": "0",
|
||||
"layer": 1,
|
||||
"local_rect": [
|
||||
133.0,
|
||||
390.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": true,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 2,
|
||||
"screenshot_rect": [
|
||||
212.0,
|
||||
487.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "職員不足 未稼働"
|
||||
},
|
||||
{
|
||||
"category": "business",
|
||||
"crops": [
|
||||
{
|
||||
"image_index": 0,
|
||||
"path": "row-0003-image-0.png",
|
||||
"sha256": "e977d7db178d1d61310fe7e33a9c25873b62b584337d93ea29960d6f8c5bb869"
|
||||
},
|
||||
{
|
||||
"image_index": 1,
|
||||
"path": "row-0003-image-1.png",
|
||||
"sha256": "e977d7db178d1d61310fe7e33a9c25873b62b584337d93ea29960d6f8c5bb869"
|
||||
}
|
||||
],
|
||||
"dimmed": false,
|
||||
"eligibility": "visible",
|
||||
"failures": [],
|
||||
"font_width": 73.0,
|
||||
"id": "1",
|
||||
"layer": 1,
|
||||
"local_rect": [
|
||||
1029.0,
|
||||
390.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"mechanical_pass": true,
|
||||
"operation": "INACTIVE",
|
||||
"reason": "whole rectangle in viewport",
|
||||
"row_index": 3,
|
||||
"screenshot_rect": [
|
||||
1108.0,
|
||||
487.0,
|
||||
79.0,
|
||||
14.0
|
||||
],
|
||||
"state": "NO_STAFF",
|
||||
"state_name": "NO_STAFF",
|
||||
"style_colors": [
|
||||
"b5cbb5",
|
||||
"273c49",
|
||||
"526d68",
|
||||
"233d40",
|
||||
"8cae98",
|
||||
"749981",
|
||||
"567e68",
|
||||
"c6d3b6",
|
||||
"d5dec4",
|
||||
"574d39",
|
||||
"776445",
|
||||
"8a7350",
|
||||
"69583d",
|
||||
"65583e",
|
||||
"385d45",
|
||||
"47463e",
|
||||
"5a594b",
|
||||
"aaa083",
|
||||
"829a8d",
|
||||
"b69465",
|
||||
"514839",
|
||||
"8d7951",
|
||||
"e1bd6c",
|
||||
"dfd4ad",
|
||||
"2f493f",
|
||||
"e4d9b9",
|
||||
"58784c",
|
||||
"4c7950",
|
||||
"5e8b57",
|
||||
"739957",
|
||||
"95ad69",
|
||||
"648957",
|
||||
"e34332",
|
||||
"e3a62f",
|
||||
"55c96b",
|
||||
"f5d582",
|
||||
"34413b",
|
||||
"fff2ce",
|
||||
"3c4e40",
|
||||
"f5d58a",
|
||||
"304b41",
|
||||
"f0e2b9",
|
||||
"303c40",
|
||||
"d69a56",
|
||||
"4ca5c7",
|
||||
"efbd72",
|
||||
"79d3e7",
|
||||
"e5f8fa",
|
||||
"64d48c",
|
||||
"e16262",
|
||||
"8ff0ab",
|
||||
"ff8a80",
|
||||
"52bdd0",
|
||||
"8ce6ee",
|
||||
"d7ebef",
|
||||
"29483d",
|
||||
"f0e2bd",
|
||||
"8ca4af",
|
||||
"6f8b67",
|
||||
"427582",
|
||||
"a24b45",
|
||||
"a77d3f",
|
||||
"6b6258",
|
||||
"89914d",
|
||||
"6f9a55",
|
||||
"67518e",
|
||||
"ffd080"
|
||||
],
|
||||
"style_source": "scenes/main/world_preview.gd",
|
||||
"style_source_sha256": "add770377c190a5ccdde95379539de9753f7dabc703c1d58452ba590c6eda2f0",
|
||||
"text": "職員不足 未稼働"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
f013e0d1d6231833b656859cc73ad0b58b389047e421ad2c43cc598820e21067
|
||||
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |