{
  "files": [
    ".spt/preserved/hertz-fp-driver-review/d2/launch-v2.ps1",
    ".spt/preserved/hertz-fp-driver-review/d2/launch-v2.cs"
  ],
  "implemented": "Native CREATE_SUSPENDED launcher with ProcessStartInfo.ArgumentList preservation, Windows quoting, explicit stdio handle inheritance, non-inheritable private job and exact 0x2000 readback, assignment/membership before resume, retained-handle identities and cleanup, separate native exit/completion reason, run scope, atomic snapshots and appended chronology, actual native fault controls.",
  "schema": {
    "record": "Required version-2 contract fields; subject.native_exit is nullable uint32 preserving native DWORD. CONFIRMED_GONE appears only in final status after reference release, zero accounting and successful closure.",
    "events": "RecordFile.events.jsonl rows: {event,elapsed_ms,record:<complete v2 snapshot>}. Ordering: initialized,launcher_identified,limits_read,created_suspended,assigned,membership_read,resumed; shutdown and final follow.",
    "membership_request": "Atomically publish RecordFile.membership-request.json: {request_id:<new nonempty string>,home:<absolute EnvironmentFile SPT_HOME>,supervisor:{pid,created},brain:{pid,created}|null}. New request IDs produce fresh readbacks.",
    "membership_response": "RecordFile.membership.json: {version:1,request_id,home,measured_utc,valid,supervisor,brain,error}. Each nonnull identity row: {pid,created,exe,anchored,in_job:<bool|null>,query_ok,win32_error:<int|null>,error}. valid requires both live anchored members; null brain is valid:false with supervisor evidence retained.",
    "membership_authority": "Supervisor may differ from direct subject: home daemon.pid, native executable/birth and owned-job membership must match. Brain requires brain.ready pid, native parent equals anchored supervisor and birth ordering. Queried handles carry QUERY_INFORMATION|SYNCHRONIZE only, never termination rights."
  },
  "integration_facts": [
    "Accounting fault returns126/confirmation_failed/UNREADABLE with active_processes:null; assignment fault returns127/setup_refused and confirms only the owned suspended process gone; crash calls native ExitProcess(198) after persisted resumed state.",
    "EnvironmentFile merges string values into inherited environment, including explicit SPT_HOME; overrides of OWL_SESSION_ID/SPT_AGENT_ID/SPT_ENDPOINT_ID/SPT_SESSION_ID are refused rather than scrubbed.",
    "Seconds includes PS setup/Add-Type and native confirmation; cleanup reserve is20%, minimum250ms, maximum3s, inside that bound.",
    "Controls must release external Process references before expecting ActiveProcesses0.",
    "No validation, compilation, parsing, tests or process launches performed, as explicitly assigned. Main has been notified implementation is ready for serial verification."
  ],
  "untouched": "Driver, controls, documentation, prior launchers and previous evidence."
}