Issue #301 requires a webhook to invoke an authored .on() body and replay safely after a daemon crash. The current authored-flow-executor.ts explicitly has no durable authored root: each f.run/f.llm/f.agent submits a fresh child run through run.start. The kernel admits closed RunSpec data only and has no authored handler registration or resume protocol. Running a TS callback as a deterministic subprocess would replay fresh child runs after a crash and falsely imply durable handler execution. A durable authored root/admission bridge requires work outside the slice E file list. Define and implement that bridge before claiming #301 acceptance item 2 for authored callbacks. Independent work can land the immutable declaration, allowlist preflight, daemon-free HTTP inbox receiver, and a RunSpec inbox watcher. The current daemon also uses synchronous std::thread pollers and has no Tokio dependency; the watcher should follow the established pattern without adding a runtime dependency.
Issue #301 requires a webhook to invoke an authored .on() body and replay safely after a daemon crash. The current authored-flow-executor.ts explicitly has no durable authored root: each f.run/f.llm/f.agent submits a fresh child run through run.start. The kernel admits closed RunSpec data only and has no authored handler registration or resume protocol. Running a TS callback as a deterministic subprocess would replay fresh child runs after a crash and falsely imply durable handler execution. A durable authored root/admission bridge requires work outside the slice E file list. Define and implement that bridge before claiming #301 acceptance item 2 for authored callbacks. Independent work can land the immutable declaration, allowlist preflight, daemon-free HTTP inbox receiver, and a RunSpec inbox watcher. The current daemon also uses synchronous std::thread pollers and has no Tokio dependency; the watcher should follow the established pattern without adding a runtime dependency.