roles/gateway.md carries the settled bar: a ping means waiting-on-Joel
and aging, important first-notice breakage, or an answer he asked for.
One incident one thread, one ping per crossing, worker receipts never
ping, runbook cadence is evidence. Ack-first applies to addressed
inbound only; ambient gets observe and zero outbound. Morning digest
beat: idempotent 07:30 LA wake with registry readback in the driver.
Replace current 5.3 model rules/defaults with gpt-5.4 across AGENTS, skills,
gateway fallback docs/config, system-bus model constants, inference-router,
pi config, and Langfuse normalization.
Add packages/restate/src/trigger-prd.ts to compile markdown PRDs into a DAG
using pi with openai-codex/gpt-5.4, then submit Restate runs whose story nodes
dispatch host agents with a mandatory joelclaw mail contract.
Add host-only internal endpoints in packages/system-bus/src/serve.ts for:
- /internal/agent-dispatch
- /internal/agent-result/:id
- /internal/agent-await/:id
Allow per-node Restate handler timeouts so long-running PRD stories can wait on
agent completion without faking success.
Canonical at joelclaw/roles/, symlinked to ~/.joelclaw/roles/.
Each role defines scope, boundaries, delegation rules, and capability restrictions.
Gateway: triage only, no code. Codex-worker: implement only, mandatory mail.
Loop-worker: pipeline protocol with file reservation. Voice: conversational only.