Repository navigation
Support Atem r8 agent control, approvals and local chat APIs - #56
Conversation
Define the first complete agent-control API milestone and the joint Atem/Astation history, recovery, approval and notification contract. 🤖 Built with SMT <smt@agora.build>
Correct Codex chat and session-rule support, record remaining r8 agreement points, and distinguish current Astation support from the proposed API. 🤖 Built with SMT <smt@agora.build>
Close the four r1 contract findings, record two draft fixture corrections, and preserve the conformance gate. Track the planned r7.3 permission-only session-rule revocation separately. 🤖 Built with SMT <smt@agora.build>
Preserve the completed protocol reviews and the approved chat-send and lease-free approval design while keeping implementation and live verification gates explicit. 🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
Preserve the native approval inbox, shared chat wire models, protected local API and pinned r7.3 fixture work. Resolve the guide against the implemented routes while retaining the separate r8 implementation gate. 🤖 Built with SMT <smt@agora.build>
Remove the standalone review guide and retain concise operational comments beside the workflow settings. 🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
Record PR #56 and the combined Swift validation result, and distinguish implemented r7.3 approval support from the remaining r8 and live acceptance work. 🤖 Built with SMT <smt@agora.build>
Confirm all four contract edits at 10e089a, record static fixture checks and remaining runtime gates, and refresh the active session/API handoffs. 🤖 Built with SMT <smt@agora.build>
Pin the contract and fixtures to Atem main 4f87bab. Negotiate revision 8 and known features, hide incompatible hosts, add atomic Send with confirmed takeover and owner-scoped leases, and answer approvals without a lease. Share bounded ordered history and result projections between native approval activity and the protected local API. Preserve durable receipt recovery and fence delayed control replies after release or replacement. Validate all seven published client scenarios, API workflows and resource bounds. Document the four agreed contract edits and the current API. 🤖 Built with SMT <smt@agora.build>
🤖 Built with SMT <smt@agora.build>
Claude Code ReviewCode Review: PR #56 - Atem r8 Agent ControlSummaryLarge, generally well-structured PR adding r8 protocol support, chat APIs, and approval/rule management. The lease-ownership and receipt-recovery logic is carefully designed with extensive fixture coverage. Below are concrete findings. Findings1.
|
Codex Code Review
|
Astation must connect to the deployed Atem r8 host and operate launched agents through native UI and its protected local API. This changes every hello to revision 8, pins the merged Atem contract at
4f87bab1289848cb6a0da5707d2e7830eb5c057d(#78), and confirms all four implementation contract edits. Older hosts are hidden from instance/session selection with an upgrade notice; there is no fallback.Validation: the personally provisioned build passed 941 Swift tests (6 environment-dependent skips, 0 failures), including all 7 upstream client scenarios through the real decoder/client. Release build, 65 automation tests, 18 packaging tests, signature/entitlement checks and bundled-resource validation passed. Host fixtures are pinned for provenance; Swift does not claim to execute Atem’s host journal tests.
Live verification on 2026-10-18: relaunched the personally provisioned Astation Local app, authenticated to Genie, negotiated all 9 r8 features, discovered running Claude and Codex sessions, and observed explicit complete history_end boundaries through the protected API. Both histories were empty. Read-only history lookups for unknown request IDs completed through chat/history and chat/page with explicit unavailable coverage on both sessions. Neither reads nor lookups acquired control. No prompts, terminal input, interrupts, stops or approval decisions were sent to working agents. Nonempty live pagination and the disposable-provider approval/mutation matrix remain separate validation; deterministic tests cover those client paths. Polling is implemented; SSE replay, a full native conversation UI and offline APNs delivery remain separate work.
Review follow-up: local
operator_idvalues are cooperative ownership labels under one bearer authority, not distinct authenticated principals; docs/local-control-api.md states that boundary.testLargeFinalResultMetadataCannotBlockOrEvictUnconfirmedRequestsexceeds 4 MiB with mixed final and unconfirmed records and asserts the persisted limit and survival of unconfirmed work. Failed chat delivery remains an explicit page error available by polling; HTTP 202 means asynchronous admission, not host delivery. Invalid chat messages close the subscription rather than being retried at the same sequence.Merged as
4f4581ac7c3e453a39a830dc6c4577aeb71dda6a. The final review found no critical issues; three P2 follow-ups (owner-scoped pending cancellation, overlapping history ordering, and definitive refusal eviction) are tracked in #57.Current lifecycle and security invariants: designs/protocol/r8-client.md. Callable API: docs/local-control-api.md. No Atem checkout was edited or built.
Generated with SMT smt@agora.build