pub struct TaskContract {
pub contract_id: String,
pub task_type: TaskType,
pub name: String,
pub price_floor_micro_credits: i64,
pub price_ceiling_micro_credits: i64,
pub success_criteria: Vec<SuccessCriterion>,
pub refund_policy: RefundPolicy,
pub min_trust_score: f64,
pub custom_label: Option<String>,
pub created_at: DateTime<Utc>,
}Expand description
A task contract defines the pricing, success criteria, and SLA for a task type.
Contracts are registered once and applied to every task of that type. The actual price is resolved at billing time based on complexity and trust score.
Fields§
§contract_id: StringUnique contract identifier.
task_type: TaskTypeThe task type this contract covers.
name: StringHuman-readable name for this contract.
price_floor_micro_credits: i64Minimum price in micro-credits (e.g., 500_000 = $0.50).
price_ceiling_micro_credits: i64Maximum price in micro-credits (e.g., 5_000_000 = $5.00).
success_criteria: Vec<SuccessCriterion>Success criteria that must all be satisfied.
refund_policy: RefundPolicyRefund policy for failed tasks.
min_trust_score: f64Minimum trust score (0.0 - 1.0) required for an agent to accept this task. Higher trust score → lower price within the range.
custom_label: Option<String>Optional custom label for the task type (used when task_type is Custom).
created_at: DateTime<Utc>When this contract was created.
Implementations§
Source§impl TaskContract
impl TaskContract
Sourcepub fn resolve_price(&self, complexity: TaskComplexity, trust_score: f64) -> i64
pub fn resolve_price(&self, complexity: TaskComplexity, trust_score: f64) -> i64
Resolve the price in micro-credits for a given complexity and trust score.
Higher trust score → discount (lower end of range). Higher complexity → premium (upper end of range).
Formula:
range = ceiling - floor
complexity_offset = range * complexity_position
trust_discount = range * trust_score * 0.2 (up to 20% discount)
price = floor + complexity_offset - trust_discountTrait Implementations§
Source§impl Clone for TaskContract
impl Clone for TaskContract
Source§fn clone(&self) -> TaskContract
fn clone(&self) -> TaskContract
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more