symfonic.agent.receipt_adoption¶
receipt_adoption ¶
Authenticated preclaim adoption under an explicit HOST-ATTESTED contract.
Only an exact majority no-row read admits a fresh Agent. Admission is not a claim: the existing atomic journal claim arbitrates concurrent adopters. A claimed/ambiguous invocation stays UNKNOWN; accepted turns expose proof only. v1 handles remain reconciliation-only and cannot be adopted. The host must durably register the returned identity before dispatch. Active-issuance checks are observations, not an atomic fence against concurrent host revocation.
ReceiptAdoption
dataclass
¶
ADOPTED permits a subsequent claim attempt; never promises execution.
adopt_receipt_handle
async
¶
adopt_receipt_handle(agent: Any, handle: str, prompt: str, *, authority: Any, attachments: tuple[Any, ...] = (), history: tuple[Any, ...] = (), state: Any = None, session_id: str = '', output_type: Any = None) -> ReceiptAdoption
Restore exact identity in a never-dispatched, unreserved fresh Agent.
Authenticated host attestation is mandatory. The framework proves equality to that declaration, not independent truth of opaque executable state.
Source code in src/symfonic/agent/receipt_adoption.py
adoptable_receipt_identity ¶
Authenticated host registration data; exposes no request payload.
Source code in src/symfonic/agent/receipt_adoption.py
prepare_adoptable_receipt_handle
async
¶
prepare_adoptable_receipt_handle(agent: Any, prompt: str, *, invocation: Any, authority: Any, attachments: tuple[Any, ...] = (), history: tuple[Any, ...] = (), state: Any = None, session_id: str = '', output_type: Any = None) -> str
Seal host declaration and explicit config; host registers before run.
Use adoptable_receipt_identity to register the exact identity in a durable host registry. authority.require_active_receipt must synchronously return exact True at adoption and preclaim, or refuse. Missing, revoked, async or unavailable registry refuses. Concurrent revocation is not atomically fenced with the Mongo claim; hosts needing that must not use this API.