Files
TheTree_mock/docs/plans/original-completion-2026-10-02/execution/p04-01/REPAIR47_STATUS.md
T

6.4 KiB

RUN47 submission — bounded S4 admission repair

P04-01 remains unaccepted. This is the same original 30/88 unit, formal credit 16, P04 credit 0. No completion, integration or native-success claim is made. All edits are under the contracted execution directory. Product code, registered spec, checker (including REQUIRED/REACH_REFS), denominator, caps and permissions are unchanged. No Git writes, other agents, Runner actions or engine launches.

Changes and count/roster audit

  • s4/run_s4_native.py, former line 301: removed current 316-script admission. admission compares the whole sorted source-derived .gd res:// list. It runs before check-only writes its plan and again before native writes parse-paths. Plans carry the exact list; missing/extra/duplicate/non-.gd/same-count changes fail.
  • Former line 240: removed selected/product 1339/1338 assumptions. Cache admission requires the exact current product map, with precisely the checker as its extra; the real product/selection difference allows no other input. Existing hashes, failed-cache rejection and no-adoption guards remain. Option B uses no cache.
  • p04_native_series.py, former lines 73/187/1030: removed literal source counts; retained whole source/manifest/input/source_after equalities and pin checks. Result count comes from the actual manifest. FreshSeries S4 also calls the admission function and compares plan and actual parse-paths.
  • s4/receipt_lifecycle_fixtures.py, former lines 81/92: split historical-pinned lifecycle from current-derived admission. It now explicitly loads the unchanged, hash-pinned r28 wrapper, retaining historical 1338/316 synthetic fixtures. The standard runner comes from the supplied retained M copy. Current cases live in s4/admission_controls.py; another valid derived roster is accepted as well.
  • Remaining 316 in current controls is only the deliberately stale negative and the historical AST/receipt fixture. The current wrapper has none. The 329 pin diagnoses this supplied M fixture only; production has no fixed roster size.
  • Resolver's 1721 members/71488772 bytes are the immutable historical relocation identity, already bound to the fixed manifest hash; retained. S4 phase-cut 121/132, eleven kernel phases, three slots, four engine phases and case roster are scenario/receipt invariants rather than source counts; retained unchanged.
  • S4_ROOT_RUN.md now distinguishes the current derived rules from historical relocation/count descriptions. Its parse-path receipt row describes the new admission. Earlier 1338/316 observations remain historical. S2b/S3 normative fixed-product instructions are explicitly superseded. S1/S2 source-count observations describe earlier runs, not current admission. ORDER_AUDIT, EVIDENCE_COLLECTION, CURRENT_STATUS and REPAIR47_PLAN are synchronized.
  • checker_series_fixtures.py uses BUILD for disposable fixtures. No test was removed or disabled.

Before import is attempted (phase is None), cleanup requires the complete original source inventory with no generated UID. After import is attempted, the existing exact planned UID snapshot/seal still applies. Partial/unknown UID sets and changed source fail in both branches. The original exception stays in error; cleanup errors remain separate guards, and the pass predicate still requires a sealed import, all four successful phases and owned PID cleanup. Engine identity, fixed inputs, default-player protection, source checks and first-failure behavior are preserved.

Q46 failure, preserved verbatim

{
  "passed": false,
  "error": "AssertionError: complete 316-script parse roster",
  "guard_errors": ["AssertionError: exact source and planned UID set"],
  "phases": [],
  "actual_captured_PIDs": []
}

No S4 game verification ran. REPAIR47_Q46_FAILURE_REFERENCE.json records the raw file hash and verbatim failure fields. The original raw and historical wrapper were not modified. Q46 successes elsewhere are reference only, never adopted.

Engine-free verification

REPAIR47_VALIDATION.json includes commands, exit codes, raw-log hashes and full finite outputs. The final current admission program passed 34 controls: actual 329 scripts, another derived roster, checker-only selection extra, every required roster rejection, actual check-only main admission and its six rejected mutations, the real FreshSeries roster block, the real cache set guard, historical 316 via pinned r28 AST, and pre-import/attempted-import UID/source rejection cases. Its check-only unit explicitly stubs historical template and engine identity; this is a synthetic control, not a fresh-Q provenance plan or native proof.

Affected series (62 controls), join (29 controls), and historical lifecycle (six cases) passed. Historical lifecycle was finally confirmed against retained M. Five changed Python files passed AST and compile checks; bytecode and scratch are in allocated BUILD. Initial control-development failures (two absent contract paths in the product-only M copy and one synthetic UID owner outside the existing plan's allowed selection) are recorded, not treated as passes. Their fixture references/owners were corrected; the final finite runs passed.

REPAIR47_PLAN.json records unchanged hashes against S46 for the eleven unaffected pure programs, their prior Q46 results, and unchanged top-level series function hashes. Those eleven programs were not rerun. This is reuse of unchanged pure checks only, not adoption of native receipts. The affected series/join checks were rerun. The checker file is byte-for-byte unchanged (SHA256 3bb0cde776bc295f6f18e74f1e23bf3d832d8e4f71aed260601c82d287c655fd). The historical wrapper remains 2d3be39d2b310abac058e27336ac816c234043a0a1dd7b2c52d84994907dd31b. Spec raw bytes remain unchanged; the existing one-final-LF dispatch identity protocol yields the contracted 9ec722e7… hash (REPAIR43_PRECHECK records it).

Formal six-series check-only plans were not run by this worker: they require Root's clean final Q/provenance. No claim that W check-only passed, or failed only because of dirtiness, is made. No native/full/registered acceptance test ran. Root must follow the complete option-B sequence in REPAIR47_PLAN.json: freeze Q, affected pure, six clean plans, capacity/PID checks, one fresh native batch, readers/adapters, fresh all-15/EV/subclauses, full 184 once, index, verify-only, registered p04-acceptance before independent Opus review, then normal integration.