ADAPT-1 baseline corrections (per handoff: fix D2+D3, record D1 as
FIXED_DEPTH_ROUTE_INAPPLICABLE — no OUTWARD semantics change).
CORRECTION-1 (D2): producer contract enforced
- Worker prompts updated: artifact file must contain exactly one JSON
document; StageCompleted markers go to stdout ONLY
- _load_worker_artifact_file(): canonical reader requires pure JSON;
LEGACY_COMPATIBILITY_ONLY permits exactly the known 'StageCompleted:
<STAGE>' trailing sentinel (regex-anchored, no arbitrary salvage);
corrupt JSON is never masked
- Acceptance: pure JSON OK; exact sentinel OK; arbitrary trailing text
rejected; corrupt JSON rejected; all 6 stage prompts carry the contract
CORRECTION-2 (D3): StageAttempt telemetry wired into real production path
- research_event_relay: marks tool windows on tool running/completed/error/
failed events (observational, never changes classification)
- StageExecutor._run_relay_with_telemetry: marks model windows around
relay.run(); attempt threaded through _execute_stage into all 8 stage
methods (telemetry_attempt kwarg, default None)
- PROVEN on a real production-path execution: ADVERSARIAL record shows
wall=0.3006, model_time=0.3001 (1 window), tool_time=0.3001 (1 window) —
overlapping by design, non-additive model respected
- telemetry failures never raise into the stage path (observational)
D1 NOT a code correction: recorded as
FIXED_DEPTH_ROUTE_INAPPLICABLE_TO_LOCAL_EVIDENCE_TASKS —
EXPECTED_ROUTING_LIMITATION / ADAPTIVE_REQUIREMENT. OUTWARD external-
evidence semantics preserved unchanged.
1163 tests pass (was 1158); ruff clean.