=== task-2729+13 L1 ISOLATED SMOKE (real launcher code paths, mock runner, real subprocess 0) === (subprocess.run/Popen/call/os.system sabotage 활성 — 실제 spawn 시 RuntimeError) [L1-1] build_launcher_fn(CANONICAL_ROOT) [flag 부재] = None (기대 None=ACTIVE false) read_real_wake_enabled(CANONICAL_ROOT)=False ✓ (프로덕션 entrypoint default 동작 무변경) [L1-2] flag on + sealed key 부재 → None (기대 None fail-closed, real wake 0) [L1-3] flag on + mock sealed key → decision=LAUNCHED, mock_runner호출=1, argv_len=5 LaunchRecord.to_json() keys=['argv_len', 'decision', 'dry_run', 'reason', 'returncode', 'sha256', 'task_id', 'ts'] — raw key/argv 미노출(argv_len 만) ✓ [L1-4] 잘못된 key → decision=FAIL_CLOSED_NON_ANU_KEY (기대 FAIL_CLOSED_NON_ANU_KEY), runner 추가호출 없음=1 === L1 SMOKE RESULT: ALL PASS — real launcher 코드경로 실행, 실제 subprocess 0(sabotage 하 PASS), raw key 0, 프로덕션 default launcher_fn=None ===