Files
TheTree_mock/docs/plans/original-completion-2026-10-02/execution/p18-01-contract-r01/opus-collector-repair-decision-r02.json
T

8 lines
5.0 KiB
JSON

{
"action": "run",
"task_id": "P18-01-CODE",
"reason": "Resume existing candidate f76ad96990a4d7371b6ab667df0a068cc06be798 only. This is the recorded repair_ready repair. Repairs stay at 2/2, with no counter reset and no changes to caps, model policy, scope, spec or rights. Accepted game behavior source is the exact retained Astra preflight: Root actual guarded native import 5540 / parse 5632 all 308, 7/843 pass, no guards or cleanup errors, all 9 PIDs ended. Do not reconstruct or change any game or test source (scripts/relationship/*, autoload/simulation_runtime.gd, tests/s4/*, .uid files, suite-policy.json, completion_marker_contracts.json). Formal validator bc8bc48c on f76 failed with PermissionError (Operation not permitted: ps) in live_engines before any engine started. That shows collection must stay Root-owned and must not run inside Seatbelt. The earlier Sol run 13d58f6c only updated the handoff because the worker never received these instructions.\n\nWHAT TO CHANGE: only tools/run_p18_relationship_tests.py and protocol notes under docs/plans/original-completion-2026-10-02/execution/p18-01-code/.\n\n(1) DEFAULT MODE: fixed argv `python -B tools/run_p18_relationship_tests.py --output {build_dir}/p18-relationship-evidence`. It strictly verifies output that Root already finished collecting. It must not use subprocess or ps, start an engine, or read or write any player or profile outside the output directory. It must work in the ordinary registered sandbox. Missing, outdated, forged or incomplete input must make it reject with a nonzero exit. Never fabricate success.\n\n(2) `--collect`: Root-only fresh guarded native collection. Reuse tools/run_all_tests.py source_refs/execute_phase and the existing owned_outer/Guard/diagnostic/marker/logger contracts, a fresh private CoW source and owned profiles. Keep the existing exact native isolation, Guard, logger, process ownership and cleanup conditions exactly as they are. No raw Godot against the player profile. Run import, then all-script parse (expected parse count 308), then the 7 native tests: 2 new P18 tests, s4 relationship_event_service and runtime_relationship_events, s6 runtime_snapshot_serialization and runtime_save_lifecycle, and ui staff_management. Do not run a duplicate full regression. Write self-contained raw phase files (existing phase/engine-native.log etc.) with SHA-256 hashes recorded in the receipt.\n\n(3) `--prepare-only`: preview bytes, capacity and roster without starting any engine.\n\nVERIFIER MUST CHECK:\n- the current exact source-map content SHA and project settings SHA, independent of checkout path;\n- the collector, shared/helper, engine and marker pins;\n- exactly 7 unique tests and 9 import+parse+test rows, with all 308 parse expected;\n- full raw marker, diagnostic, phase, profile, ownership and cleanup files, each matching its recorded SHA;\n- complete default player before/after equality in the receipt;\n- every PID ended and no guard or cleanup error.\n\nConfine all paths to the supplied --output. Reject `..` escapes, absolute escapes, symlinks, duplicate or unknown or malformed flags, and mutually exclusive mode combinations. No source exemptions and no weakening for convenience.\n\nWORKER MAY: run AST/py_compile/static checks, --prepare-only, and negative verify checks against a temporary synthetic output directory (missing, tampered-hash, symlink, escape and incomplete cases must reject). The worker must NOT: run native or full tests or --collect, edit the Runner, change caps or model policy, commit, push or touch main, or read credentials. Report any environment denial with exact evidence. Write a short protocol note describing the modes, the receipt schema, and Root's next steps: after this collector change, Root reruns the exact final native --collect once into the task-allocation build_dir, then ordinary Runner validation (default verify mode), a separate Opus review, then integration. Finish quickly and return an ordinary submitted result. Original P18-01 UI rendering, approved initial values, full final roster and Windows final acceptance remain unmet; do not claim the unit complete.",
"codex_model": "gpt-6-astra",
"codex_model_reason": "This is the last recorded repair (2/2) and there is no counter reset, so a weak result can't be cheaply retried. The work is in a single file, but it is security- and provenance-sensitive. The worker has to split one collector into three modes (verify-only that works in the sandbox, Root-only collect, prepare-only) and keep the exact existing run_all_tests/Guard/owned_outer/marker contracts unchanged. On top of that it needs strict hash, pin and roster verification (7 tests, 9 rows, parse count 308, player equality) and path and symlink confinement. A subtle mistake here would either break the formal validator again or weaken isolation. The accepted game behavior source also came from Astra, so continuing with Astra keeps the context consistent. The extra usage and time are justified by the higher chance of passing on the first try; game source is out of scope, which keeps the run short."
}