Skip to content

symfonic.capabilities.memory.staged_values

staged_values

Opt-in staged publication values: STAGED -> READY -> ACTIVE.

A READY turn finished inside Core and is still invisible: its graph rows are pending and it has no vectors. It is deliberately not a CompletedTurn, so no accepted-turn consumer can mistake it for published memory. Only a publisher, composed once with a trusted committed-receipt reader for one exact scope, publishes it after that reader returns the exact local final receipt.

CommittedFinalReceiptReader

Bases: Protocol

Host port, bound once at publisher composition; never a per-call argument.

It receives only the lookup key, never the sealed READY, so it has nothing to echo. Each call must be a fresh read of the host's committed state, on a connection that holds no open transaction of the turn. Return None when no committed final turn exists, including after a local rollback; raise when the local outcome is unknown. Either way, nothing is published.

LocalFinalReceipt dataclass

LocalFinalReceipt(invocation_id: str, full_scope: MemoryScope, run_id: str, output_sha256: str)

What the host durably committed locally, as read back from its store.

full_scope is the owner of the committed row. output_sha256 is the lowercase hex SHA-256 of the UTF-8 bytes of the exact final response text the host committed and delivered, unstripped and unnormalized. Core compares every field with READY; it never accepts a bare "committed" flag.

ReadyTurn dataclass

ReadyTurn(invocation_id: str, full_scope: MemoryScope, request_digest: str, run_id: str, root_run_id: str, terminal_digest: str, output_sha256: str, revision: int, publication: tuple[str, str])

Durable READY evidence, sealed in the journal; never caller authority.

StagedStatus

Bases: Enum

Read-only lifecycle position; UNKNOWN never authorizes a retry.