pub struct SessionGrantV1 {Show 15 fields
pub grant_id: SessionGrantId,
pub revision: HarnessRevision,
pub actor_run_id: HarnessRunId,
pub allowed_targets: Vec<HarnessGrantTargetV1>,
pub allowed_delivery_bundles: Vec<HarnessSelectorV1>,
pub maximum_child_count: u16,
pub maximum_child_depth: u16,
pub operation_timeouts: HarnessOperationTimeoutsV1,
pub task_permissions: HarnessTaskPermissionsV1,
pub read_permissions: HarnessReadPermissionsV1,
pub monitoring_visibility: HarnessMonitoringVisibilityV1,
pub context_permissions: HarnessContextPermissionsV1,
pub state: SessionGrantStateV1,
pub created_at_unix_ms: u64,
pub updated_at_unix_ms: u64,
}Fields§
§grant_id: SessionGrantId§revision: HarnessRevision§actor_run_id: HarnessRunId§allowed_targets: Vec<HarnessGrantTargetV1>§allowed_delivery_bundles: Vec<HarnessSelectorV1>§maximum_child_count: u16§maximum_child_depth: u16§operation_timeouts: HarnessOperationTimeoutsV1§task_permissions: HarnessTaskPermissionsV1§read_permissions: HarnessReadPermissionsV1§monitoring_visibility: HarnessMonitoringVisibilityV1§context_permissions: HarnessContextPermissionsV1§state: SessionGrantStateV1§created_at_unix_ms: u64§updated_at_unix_ms: u64Implementations§
Source§impl SessionGrantV1
impl SessionGrantV1
pub fn validate(&self) -> Result<(), HarnessValidationError>
pub fn allows_target( &self, node_id: &HarnessSelectorV1, workspace_id: &HarnessSelectorV1, provider_profile: &HarnessSelectorV1, mode: HarnessExecutionModeV1, ) -> bool
pub fn allows_delivery_bundle(&self, selector: &HarnessSelectorV1) -> bool
Sourcepub fn default_for_run(
grant_id: SessionGrantId,
actor_run_id: HarnessRunId,
target: HarnessGrantTargetV1,
now_unix_ms: u64,
) -> Self
pub fn default_for_run( grant_id: SessionGrantId, actor_run_id: HarnessRunId, target: HarnessGrantTargetV1, now_unix_ms: u64, ) -> Self
The default grant a dispatch mints for its own run when harness MCP
is requested and no exact grant was supplied
(HarnessGrantPolicyV1::Operator, gate4agent-arc-mailbox-and-task-layer
Slice A(i)). Read-only, own run’s lineage only: SelfOnly on every
read_permissions axis (never Descendants — this grant never sees
outside the one run it was minted for) plus Timeline monitoring, so
every currently-shipped g4a_* read tool resolves (see
allowed_tool_ids); the task’s own sibling runs still surface through
g4a_context_get, which derives them independently of this scope.
task_permissions.create/.mutate are open (D5, Slice D: the owner’s
mandate reaches g4a_task_create/g4a_task_move in the caller’s own
subtree) but request_run stays closed – spawning runs stays
operator-only. No context writes, no delivery bundles, no child runs.
operation_timeouts and the child limits are this crate’s own
valid_grant() test fixture values, not invented here.