pub struct TaskControlState {Show 16 fields
pub task_id: TaskId,
pub parent_task_id: Option<TaskId>,
pub lifecycle: String,
pub runnable_cause: RunnableCause,
pub termination: Option<String>,
pub wait_set: Option<TaskWaitSetState>,
pub capability_ids: Vec<String>,
pub capabilities: Vec<Capability>,
pub process: Option<ChildProcessState>,
pub supervision: SupervisionPolicy,
pub supervision_events: Vec<SupervisionEvent>,
pub tokens_used: WireU64,
pub turns_used: u32,
pub child_budget_remaining: Option<ResourceBudget>,
pub budget_grant: Option<BudgetGrant>,
pub mailbox: Mailbox,
}Expand description
One task control block, projected. The lifecycle travels as its label rather than as the
internal enum: TaskLifecycle::Done(TerminationReason) is a semantic-kernel shape, and a
checkpoint that mirrored it would be a checkpoint of a private layout.
The label alone is not invertible, though, and Task 16 needs it to be: a restore that rebuilt
a finished task without the reason it finished for would hand the next transition a different
task table than the uninterrupted run had. So the two data-carrying lifecycles travel with their
data beside the label, while suspended tasks carry one canonical wait_set.
Fields§
§task_id: TaskId§parent_task_id: Option<TaskId>§lifecycle: String§runnable_cause: RunnableCause§termination: Option<String>Why a done task is done. None for every other lifecycle.
wait_set: Option<TaskWaitSetState>Canonical heterogeneous wait state, including partial All satisfaction.
capability_ids: Vec<String>§capabilities: Vec<Capability>Fine-grained, resource/action-scoped grants held by this task. These are authority state, not a derivable cache: a restored nested caller must receive the same delegation ceiling.
process: Option<ChildProcessState>Sub-agent process identity and join state. None only for the root task.
supervision: SupervisionPolicy§supervision_events: Vec<SupervisionEvent>§tokens_used: WireU64§turns_used: u32§child_budget_remaining: Option<ResourceBudget>spc_009-06 · this task’s own grantable pool (Tcb.child_budget_remaining) — None for
every task that was never seeded (the common case) or has none left; Some once seeded,
currently only for root (spc_009-05). Per-task, unlike [SchedulerState::budget_grant]
above, which is the single whole-operation admission grant it was derived from.
budget_grant: Option<BudgetGrant>Parent→child reservation and settlement audit. Required to prevent a restart from either forgetting a debit or returning the same unused reservation twice.
mailbox: MailboxPoint-to-point queue plus dedupe memory. Empty mailboxes stay absent from canonical JSON.
Trait Implementations§
Source§impl Clone for TaskControlState
impl Clone for TaskControlState
Source§fn clone(&self) -> TaskControlState
fn clone(&self) -> TaskControlState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more