Private review (Bugs, Important: 1)
The change makes the worker's revision-round boundary trust only the coordinator's login (BOARD_BOT), removing all GitHub role reads so trust cannot fail open — the fail-closed direction is right and well tested. The riskiest part is the divergence it creates from the coordinator's and lib/handoff.mjs boundaries, which still honor an owner's hand-written ```changes block: on that thread the coordinator waits for a revision the worker will never deliver.
agents/claude-worker/next-task.mjs:37Bugs, Important: AGENTS.md's authorship contract says
changesrecords come from "the bot or an owner", and lib/coordinator.mjs/lib/handoff.mjs still honor an owner's hand-written```changesblock (isTrusted accepts an owner). Under the new worker rule an owner's hand-written block counts for nothing on the worker: if the coordinator is down or an owner posts the block directly, routedRequests/handoff.mjs sees an unanswered revision request (coordinator waits for a revision handoff) while the worker never reopens the handed-off seat (stays null) — the job stalls with both sides waiting, and no cron cycle resolves it. Either have the worker credit bot-or-owner (a role-free owner list is already static config, like BOARD_BOT), or change the coordinator/lib boundary to the same bot-only rule in this PR so the two sides cannot deadlock. The PR's premise ("the coordinator always re-posts") is a convention, not something code enforces.
Verified privately
- Model:
z-ai/glm-5.3-flashin an Intel TDX enclave with NVIDIA confidential GPUs. Quote verified, TCB UpToDate, debug off; it binds signing key5a0210f2442c79355784f9de021985429561da5bacc3a4424b01ac52b7e0caffand this run's nonce. Compose hash55db164f4f8c6a837c2217c601c21bba4758f908536a6cd5b2978550205a9179. - GPUs: NVIDIA's signed verdict approves them for the same nonce.
- Gateway: Quote verified, TCB OutOfDate. It relayed only end-to-end encrypted content.
- Signed: 8 of 8 responses signed by the model enclave's key, over the exact request and response bytes.
- Receipt: sha256
c9059b8e721c35d7195fb2449d1ab6fffa40317691f5368a9643f93f70d9f1c3. Anyone can check it.