# Repair20 — source submission; tests NOT RUN Source-only repair. No Git command, fixture, collector, series, Godot/native, Runner, agent, commit, branch or integration operation was executed. The only code validation performed was Python `compile(..., 'exec')` in memory, without imports/execution of the edited modules. No acceptance is claimed. Original credit remains 13/88; all 15 conditions + EV, seven domains and three safety outcomes retain their scope. nativeWindows remains pending for every condition. The next submission SHA is assigned by Runner and is not predeclared here. Changed files: - `tools/check_p04_order_evidence.py`: real checkout/role binding, isolated object stores under B, first-1080 R2 join, schema2 recomputation and r20 collection. - `p04_native_series.py`: B1 departure/despawn/full-state joins, explicit 352/176 S3 checks, confined getter projection, persistence pins and six-header diagnostic. - `collect_p04_native.py`: exclusive new collection at `B/audit-support/p04-raw-collect-r20`. - `checker_negative_fixtures.py`: retain existing content-case IDs and meanings; isolate their content layer explicitly in the test harness, while the separate real-Git fixture exercises production role binding without a bypass. - New `build_p04_index.py`, `checker_role_fixtures.py`, `checker_encoder_fixtures.py`, `checker_join_fixtures.py`. - New `REPAIR20_STATUS.md` and `REPAIR20_CORRIGENDUM.md`. In-memory compilation: all eleven Python files (checker plus ten modules in E) compile. This is syntax validation only; every test below is **NOT RUN**. The retained C region, `NATIVE_RUNS` through `verify_native`, is byte-for-byte equal to T's retained source, SHA256 `5d778b3cfab7c139ca03812489508ce9aae90c1d17f8c2249c340f30d1496b3b`. `verify_product_target` itself is also byte-for-byte retained and no longer called. Existing repair17/18/19 status, corrigendum, raw outputs and T's retained archives were not modified. Existing C 25 negatives and series 56 negatives remain required. ## R3 source pins Product source: `scripts/operations/operations_coordinator.gd`, 130891 bytes, SHA256 `871a248ee101b6df543fd5cf0440b5d4b0f02c21fa145a99f0687888c1bc6f90`. Runtime verification checks the complete bodies and cross-checks the actual body bytes, lengths and hashes against `T/ROOT_ACTUAL_PERSISTENCE_CALL_CHAIN.json`. | Function | SHA256 | | --- | --- | | get_day_summary | 449eef926054cf76c39d6b4c016da3d775d41f2b343b4f8ad57b62c594cb32bb | | create_snapshot | 8c6e4f000e6df6f0f996445a57c4c17223cae4e1df57a9c2e3a605cf4d9f5309 | | _snapshot_root_report | 96084d76beeac11d165753a82160f789cd47b4dec4b6bb8cd6599a4f5ed08efe | | _visit_snapshot_tree | 70792369c05882b813632a3c96f934928e9a089d420700cfc0d4c8fa971972a0 | The corrigendum lists all six Array header changes. Native persisted comparisons are direct typed-byte comparisons. Raw getter inequality remains diagnostic. The optional projection admits only the supported persistence subset; unsupported composite dictionary keys fail closed. Its negative controls include field loss, extra fields, both numeric-type directions, value changes, nonfinite floats, invalid keys, collisions, unsaveable values, wrong call chain and use on native persisted comparisons. The positive changes only Array headers and StringName. ## Condition disposition on this untested source No condition is newly proven by this dispatch. All tests are **NOT RUN**. | Condition | State and reason pending Root execution | | --- | --- | | power_stop | Open: new B1 959–963 join; real B at 959/960, normal recorded departure then absence, unchanged one-time release, stock 1, wallet 50, no B charge; recovery 25 at 962 and no extra 963 charge. | | destruction_stop | Pending: retained S3 B4b BROKEN failure and zero-sale/release predicates. | | dependency_stop | Pending: unchanged C paused service identity/progress/reservation proof. | | shift_completion | Open: new C first-1080 join; PIDs 77462/77504/77536 ended, 1338-file content 5f, 44→45, ledger_00000006/25G, DAY2 present before handover and zero after, no extra at 1081. | | recovery_completion | Pending: unchanged C recovery transaction/idempotency join. | | same_minute_replay | Pending: retained real paid request-resend join; never substituted for settlement replay. | | closure_release | Pending: retained S3 closure/release plus despawn-aware B1 checks. | | exit_release | Pending: retained S3 B2 release/completion ordering. | | patience_release | Pending: retained S3 B3 patience expiration and release. | | paused_midnight | Pending: unchanged C paused-midnight series. | | midnight_settlement | Pending: retained S2a nonzero sales/payroll/upkeep/duty joins. | | midnight_replay | Pending: actual advance_to replay, zero processed minutes and zero daily closes, exact Runtime bytes. | | save_restore | Open: direct full typed Runtime and formal 4+4 equality remain mandatory; optional getter projection must equal actual persisted day1. A remaining mismatch is explicitly reported, never projected out of native restore. | | night_staff_absent | Pending: retained S2b WAITING_FOR_STAFF at 1081. | | overtime_task | Pending: retained S2b interrupt-level-zero task/staff/shift and once-only duty joins. | | EV | Pending: retained S1 reachable reserved staff power-stop proof and pinned static chain. | Stage A is implemented but **NOT RUN**. Submission is inferred from actual Git ancestry and scoped diff; the composed product is labelled prospective, not a tested worker game. Integration/final requires an actual two-parent merge and exact recomputed merge tree, native product map/modes and submitted checker/doc patch. Every tracked file and executing module must match HEAD bytes/mode; untracked/ignored files and symlinks fail. Unknown/deleted sources and candidate, code-only or phase declarations cannot authorize a role. Metadata membership comes from the real 9b1a18c tree, without the old count assumptions. Schema2 retains native source/config/input/environment, real lifecycle PIDs, formal proofs, complete raw references, authority and original-audit uncertainty, domain and reachability mappings. Its entire payload is recomputed from raw by the same checker. It contains no candidate==HEAD pin or Root-passed flag. `generation-invocation.json` separately records the actual invocation/HEAD. ## Root execution order (all commands below NOT RUN) Run from the clean, actual auto-submitted checkout. Root supplies actual clean merged/final checkout paths later; do not substitute invented SHAs. Preserve all prior output directories and use exclusive fresh output destinations. ```sh export B=/Users/korizatou114/Projects/TheTree-managed-worktrees/p04-01/.runtime/P04-01/build export E=docs/plans/original-completion-2026-10-02/execution/p04-01 export BUILD_OUTPUT_DIR="$B" export PYTHONDONTWRITEBYTECODE=1 ``` 1. Local file-only and fixture controls on the actual new SHA: ```sh python3 "$E/checker_negative_fixtures.py" python3 "$E/checker_applicability_fixtures.py" --native-bundle "$B/audit-support/native-first-current" python3 "$E/checker_native_fixtures.py" "$B/audit-support/native-first-current" python3 "$E/checker_series_fixtures.py" --build "$B" python3 "$E/checker_encoder_fixtures.py" python3 "$E/checker_join_fixtures.py" --build "$B" ``` 2. Real series against B, then the exclusive r20 collection: ```sh python3 "$E/p04_native_series.py" --build "$B" python3 "$E/collect_p04_native.py" --build "$B" ``` 3. After auto-submit, generate the fresh normal Runner index. B/p04-evidence was absent at static inspection. If it is now occupied, retain it and choose an explicit fresh directory with P04_EVIDENCE_DIR for manual checks; do not overwrite. The normal Runner uses B/p04-evidence and must receive that actual generated index. ```sh python3 "$E/build_p04_index.py" --build "$B" --output "$B/p04-evidence" \ --invocation validate \ --registered-ref deb1bcb2374eb378b840ca345db952bd8572cb6e \ --tested-ref 5f6bc11d6bb6e92d22d787989b219fef3a435bc1 ``` 4. Checker on submitted, merged and final actual checkouts. Real temp-Git fixtures need the generated index, so their execution follows step 3, not a fabricated pre-submission index. They create throwaway repositories/objects only under B. ```sh python3 "$E/checker_role_fixtures.py" --build "$B" --evidence "$B/p04-evidence" python3 tools/check_p04_order_evidence.py --verify-only python3 "$P04_MERGED_CHECKOUT/tools/check_p04_order_evidence.py" --verify-only python3 "$P04_FINAL_CHECKOUT/tools/check_p04_order_evidence.py" --verify-only ``` The same index works in all three roles. For separate invocation records, the generator also accepts `--invocation prepare-integration` and `--invocation final` with explicit fresh output paths while executing from those actual checkouts. These labels are receipt metadata and grant no role. Root must respect the normal Runner state machine: its prepare_integration requires prior formal review. An isolated local prospective-merge control does not replace that review or move Runner state. `runner.validate("P04-01")`, `runner.prepare_integration("P04-01")` and `runner.integrate("P04-01")` remain Root operations only. 5. Mandatory whole validation and full 178-game regression once on exact final sources. The supplied Runner core exposes `runner.verify("P04-01", final_checkout, actual_final_sha, "final")`; retain every configured mandatory validation, then run the existing guarded full-game runner: ```sh python3 "$P04_FINAL_CHECKOUT/tools/run_all_tests.py" \ --project-root "$P04_FINAL_CHECKOUT" --output "$B/p04-final-product-full-r01" ``` Do not change timeout, marker contracts or suite policy, splice phases, or reuse historical 177-suite proof. Confirm the final selected source map and 178-suite roster, and preserve source/default-profile invariance. This command is the one full run, not permission for an additional `make test` native run. 6. Independent Opus review using Root's existing reviewer route, with exact source/validation materials mirrored into the frozen checkout's .review-material. The supplied core's formal method is `runner.review("P04-01")`; that method reviews the actual submitted revision and requires its validation evidence. Any additional final-composition Opus review must explicitly receive the actual final revision. The external commander/Opus CLI entry point and installed Runner configuration were not supplied in this checkout, so no guessed shell command is asserted for them. Root retains its existing formal validation/review/integration workflow. The absent external entry-point/configuration details are handoff context gaps, not evidence of a pass, and not a blocker solely because Root testing is pending.