{
  "files": [
    "crates/spt-daemon/src/broker.rs",
    "crates/spt-daemon/src/livehost.rs",
    "crates/spt-daemon/src/lib.rs",
    "crates/spt-daemon/src/er309_gate.rs"
  ],
  "implementation": "Debug-only, one-shot scheduling hooks. Actual engine-room publication pauses after translation_ready and before HostedSession insertion, without holding the sessions/log mutex. First main-loop SessionPoll/reconcile waits for allow-reconcile; captures actual InfoJson before/after, queried endpoints, and actual offlined return. No liveness/status/controller mutations or deadline changes.",
  "schema": {
    "publication-held.json": {
      "endpoint": "engine-room",
      "session_id": "u64",
      "pid": "u32|null; PTY root",
      "process_started_at": "u64|null; root birth identity",
      "broker_pid": "u32"
    },
    "reconcile-observed.json": {
      "endpoint": "engine-room",
      "pid": "u32; observing process",
      "before": "InfoJson|null",
      "after": "InfoJson|null",
      "live_endpoints": "string[]|null on query error",
      "offlined": "string[]|null on query error",
      "query_error": "actual connect/sessions error string|null"
    },
    "gate-error.json": {
      "classification": "PRECONDITION",
      "stage": "publication|reconcile|release-publication|allow-reconcile|session-query|evidence filename",
      "error": "error description",
      "pid": "u32"
    }
  },
  "barriers": "SPT_TEST_ER309_DIR and explicit SPT_HOME must be existing absolute directories, canonical gate parent exactly SPT_HOME, outside the platform resident home. allow-reconcile and release-publication must be regular files. Both waits are bounded to 30 seconds, with loud wait/release/error diagnostics. Evidence uses existing atomic writer.",
  "errors": "Validated-scope wait, query and evidence-write failures attempt gate-error.json and emit ER309_GATE_PRECONDITION. Invalid/untrusted scope emits PRECONDITION stderr only: intentionally never writes to an unvalidated path. Failure writing gate-error itself also logs loudly. Driver must classify these as PRECONDITION, never product RED.",
  "no_op": "Absent environment variable returns before claiming either one-shot gate; does not change product state. Module, calls, and query-error capture are cfg(debug_assertions), absent in release.",
  "notes": [
    "Startup resume_restart_orphaned_endpoints retains its original non-offlining census before the main-loop gate. The first liveness reconciliation cannot run before allow-reconcile.",
    "No existing exported signatures changed. LSP references unavailable: xd://lsp reports no mounted device; inspected narrow callsite references instead.",
    "No builds, tests, validation, formatters or linters run, as assigned. Main owns integrated proof."
  ]
}