pub struct FleetTaskReceipt {Show 23 fields
pub fleet: String,
pub schema_kind: String,
pub schema_revision: u32,
pub content_hash: String,
pub member_id: String,
pub member_role: String,
pub posture_role: Option<String>,
pub authority_fingerprint: Option<String>,
pub provider: String,
pub model: String,
pub declared_model: Option<String>,
pub endpoint: Option<EndpointIdentity>,
pub requested_reasoning: String,
pub effective_reasoning: String,
pub provider_control: String,
pub provider_effective_reasoning: String,
pub selection_source: String,
pub capability_normalized: bool,
pub router: Option<RouterIdentity>,
pub routing_summary: Option<RoutingDisclosure>,
pub member_network_tool: bool,
pub cross_provider_inference: bool,
pub transport: String,
}Expand description
The durable, visible receipt for one exact-Fleet task launch.
This is the artifact that makes an exact Fleet auditable: it names the Fleet and the member that ran, the exact provider and canonical wire model they were frozen to, every side of the reasoning decision, and — when a Reasoning Router chose the tier — that service’s exact identity, route, and configured requested-to-provider-effective call reasoning.
No task text, no summary text, no secrets, no absolute paths. Every field
is a non-sensitive id, model string, tier label, count, hash, or boolean. The
Fleet is identified by qualified origin/name plus content hash rather than
by where it lives on disk.
Every field added after the first shipped shape carries serde(default), so
journals and events written by an older build stay readable.
Fields§
§fleet: StringQualified Fleet identity, e.g. workspace/glm-pair.
schema_kind: Stringexact or legacy.
schema_revision: u32§content_hash: StringContent hash of the frozen snapshot this launch resolved against.
member_id: StringFixed member id — what addresses the roster profile.
member_role: StringFixed semantic member role — what gates, handoffs, and records use.
posture_role: Option<String>The runtime permission posture the member’s clamped ceiling resolved to, when it is not the same string as the semantic role.
These are two different facts and a receipt must not collapse them. The
semantic role (auditor, implementer) is what an operator named and
what gates key on; the posture (scout, builder, verifier) is which
built-in tool surface and system prompt the clamped ceiling actually
permits. Displaying the posture where the role belongs renames the
operator’s member; enforcing the role where the posture belongs would
hand an arbitrary role name a surface nobody granted it.
None means the two coincide, so an unchanged receipt stays unchanged.
Fingerprint of the permission envelope this launch installs on the child.
Separate from posture_role on purpose, and the separation is the
point: the posture is the semantic answer to “which built-in surface
does this member run on”, while the fingerprint is the effective
answer to “exactly which allowlist, deny list, write authority, and
delegation budget were installed”. Two members can share a posture and
carry different envelopes, so a receipt that recorded only the posture
could not be checked against the child that actually ran.
The spawn boundary compares this against the envelope it is about to
construct and refuses the launch when they differ, which is what stops
the value from being a label nobody verifies. None means the launch
carried no host-derived ceiling.
provider: StringExact provider the member is frozen to.
model: StringCanonical wire model. The same value the child actually spawns with.
declared_model: Option<String>The model string as written in the saved Fleet, when it differed from the canonical wire form.
endpoint: Option<EndpointIdentity>Non-secret identity of the endpoint the worker’s request goes to.
requested_reasoning: StringWhat the saved Fleet asked for (auto included).
effective_reasoning: StringThe tier the selector landed on.
provider_control: StringHow much reasoning control the route actually expresses.
provider_effective_reasoning: StringWhat the provider is actually told — not always the selector tier.
selection_source: StringWhere the decision came from.
capability_normalized: boolWhether the route’s real capability moved the requested tier.
router: Option<RouterIdentity>The Reasoning Router service that chose the tier, when one did.
routing_summary: Option<RoutingDisclosure>Content-free disclosure of the bounded routing summary that left for
the Router’s provider. None when no Router was called.
member_network_tool: boolWhether the member holds a model-visible network tool. This is a tool
statement, not a transport one — see transport_disclosure.
cross_provider_inference: boolWhether a Router on a different provider than the worker saw the bounded summary.
transport: StringPlain-language statement of what actually crosses the network.
Implementations§
Source§impl FleetTaskReceipt
impl FleetTaskReceipt
Sourcepub fn new(
fleet: impl Into<String>,
schema_kind: impl Into<String>,
schema_revision: u32,
content_hash: impl Into<String>,
member_id: impl Into<String>,
member_role: impl Into<String>,
route: &PreflightedRoute,
resolved: &ResolvedReasoning,
routing_summary: Option<RoutingDisclosure>,
member_network_tool: bool,
) -> Self
pub fn new( fleet: impl Into<String>, schema_kind: impl Into<String>, schema_revision: u32, content_hash: impl Into<String>, member_id: impl Into<String>, member_role: impl Into<String>, route: &PreflightedRoute, resolved: &ResolvedReasoning, routing_summary: Option<RoutingDisclosure>, member_network_tool: bool, ) -> Self
Build a receipt from a resolved decision plus the preflighted identity it was resolved for.
Sourcepub fn with_posture_role(self, posture_role: impl Into<String>) -> Self
pub fn with_posture_role(self, posture_role: impl Into<String>) -> Self
Record the runtime permission posture this member’s clamped ceiling resolved to, alongside — never instead of — its semantic role.
A posture equal to the role is dropped: there is nothing to disclose when the two coincide, and storing it would make the field noise.
Record the fingerprint of the permission envelope this launch installs.
Unlike Self::with_posture_role nothing is dropped for coinciding
with something else: the fingerprint is the value the spawn boundary
checks, and an absent one means “no ceiling to enforce”, not “the
obvious ceiling”.
Trait Implementations§
Source§impl Clone for FleetTaskReceipt
impl Clone for FleetTaskReceipt
Source§fn clone(&self) -> FleetTaskReceipt
fn clone(&self) -> FleetTaskReceipt
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more