pub struct FrozenPrefix { /* private fields */ }Expand description
The assembled prefix: city, building, resident, run — in that order, enforced at the only constructor.
Implementations§
Source§impl FrozenPrefix
impl FrozenPrefix
Sourcepub fn assemble(
city: FrozenSegment,
building: FrozenSegment,
resident: FrozenSegment,
run: FrozenSegment,
) -> Result<FrozenPrefix, AxError>
pub fn assemble( city: FrozenSegment, building: FrozenSegment, resident: FrozenSegment, run: FrozenSegment, ) -> Result<FrozenPrefix, AxError>
Slot order is the type: a segment in the wrong position is
E_INVALID_ARGS (fail-closed, never silently reordered).
Sourcepub fn system_blocks(&self) -> Result<Vec<SystemBlock>, AxError>
pub fn system_blocks(&self) -> Result<Vec<SystemBlock>, AxError>
The wire form of the frozen prefix: four system blocks, each
carrying the edge breakpoint BreakpointPlan::marks_edge gives
its slot.
Segments must be UTF-8 (build_prefix guarantees it; hand-built
test prefixes must comply to reach the wire).
pub fn segments(&self) -> [&FrozenSegment; 4]
pub fn segment_hashes(&self) -> [B3Hash; 4]
Sourcepub fn verified_segment_hashes(&self) -> Result<[B3Hash; 4], AxError>
pub fn verified_segment_hashes(&self) -> Result<[B3Hash; 4], AxError>
The four segment hashes, recomputed from the bytes that will be sent and checked against the hashes recorded at assembly.
segment_hashes answers with the values
fixed at construction, and nothing in the tree compared them
against the bytes. A turn that recalculates here cannot send
bytes the recorded prefix does not describe.
§Errors
A segment whose bytes no longer hash to what the run froze.
Sourcepub fn prompt_payload(&self, plan: &BreakpointPlan) -> Result<Payload, AxError>
pub fn prompt_payload(&self, plan: &BreakpointPlan) -> Result<Payload, AxError>
The prompt_assembled payload: four rows, each naming its slot,
its hash, its length, the documents it was assembled from and
what it left out, and the breakpoints plan puts in the request.
One branch, not two. The source rows are read back by an offline rebuild (A15, C16) and by the page that shows a person what their agent was told, and they come from the segments themselves — so a prefix assembled at the city’s desk records the same rows under the same keys as one built from a plan, and a segment made of no documents says so with an empty list.
§Errors
A segment longer than u64 can hold, and a payload the Ledger
refuses.