BASIS/Trust Model

Trust Model

Quantified trust scoring with tiers and dynamics

Overview

BASIS uses a quantified trust model where entities earn trust through successful operations. Trust is not binary (allow/deny) but graduated on a 0-1000 scale with eight tiers (T0-T7) that progressively unlock capabilities.

Trust Score Range

01000
T0 SandboxT1T2T3T4T5T6T7 Autonomous

Eight Trust Tiers (T0-T7)

T0 — Sandbox

0-199

New or untrusted entities. Completely sandboxed for evaluation.

  • Isolated testing only
  • No external access
  • Observation only

T1 — Observed

200-349

Under active observation. Read-only access with full monitoring.

  • Read-only production access
  • All actions logged
  • Human review required

T2 — Provisional

350-499

Initial trust established. Basic operations with heavy supervision.

  • Basic write operations
  • Policy-checked actions
  • Elevated logging

T3 — Monitored

500-649

Expanding trust. Standard operations with active anomaly detection.

  • Standard operations
  • Anomaly detection active
  • Continuous monitoring

T4 — Standard

650-799

Established track record. External interactions with policy governance.

  • Extended operations
  • External API access
  • Reduced review for low-risk

T5 — Trusted

800-875

Proven reliability. Privileged operations with minimal oversight.

  • Cross-agent communication
  • Delegated tasks
  • Express path for low/medium risk

T6 — Certified

876-950

High autonomy verified. Independent operation with audit trail.

  • Admin tasks
  • Agent spawning
  • Council review only for critical risk

T7 — Autonomous

951-1000

Maximum trust achieved. Complete autonomy within strategic boundaries.

  • Full autonomy
  • Self-governance
  • Auto-approve all except critical risk

Trust Dynamics

Decay

Trust scores decay over time to prevent stale high-trust entities. The decay follows a half-life model:

DECAY_HALF_LIFE_DAYS = 7

decay_factor = 0.5 ^ (days_since_last_action / DECAY_HALF_LIFE_DAYS)
decayed_score = current_score * decay_factor

Example: An agent with score 800 that takes no action for 7 days decays to 400.

Failure Amplification

Failures hurt trust more than successes help. This asymmetry encourages conservative behavior:

FAILURE_MULTIPLIER = 3.0

if action_delta < 0:
    action_delta = action_delta * FAILURE_MULTIPLIER

Example: A failed action that would normally cost -10 points instead costs -30 points.

Tier Boundaries

Trust tiers have hard boundaries. An entity cannot skip tiers and must progress through each level:

TransitionMinimum ActionsSuccess Rate
T0 Sandbox → T1 Observed10100%
T1 Observed → T2 Provisional2595%
T2 Provisional → T3 Monitored5095%
T3 Monitored → T4 Standard10097%
T4 Standard → T5 Trusted25098%
T5 Trusted → T6 Certified50099%
T6 Certified → T7 Autonomous100099.9%

Trust Score Algorithm

# Constants
DECAY_HALF_LIFE_DAYS = 7
FAILURE_MULTIPLIER = 3.0

# Action deltas by outcome
ACTION_DELTAS = {
    "success_low_risk": 5,
    "success_medium_risk": 10,
    "success_high_risk": 25,
    "success_critical_risk": 50,
    "failure_low_risk": -10,
    "failure_medium_risk": -25,
    "failure_high_risk": -50,
    "failure_critical_risk": -100,
    "policy_violation": -200,
    "security_incident": -500
}

def calculate_trust_score(
    current_score: int,
    days_since_last_action: float,
    action_outcome: str
) -> int:
    # Apply decay
    decay_factor = 0.5 ** (days_since_last_action / DECAY_HALF_LIFE_DAYS)
    decayed_score = current_score * decay_factor

    # Get delta for action
    delta = ACTION_DELTAS.get(action_outcome, 0)

    # Apply failure multiplier
    if delta < 0:
        delta = delta * FAILURE_MULTIPLIER

    # Calculate new score with bounds
    new_score = max(0, min(1000, int(decayed_score + delta)))

    return new_score

Tier Derivation

def get_trust_tier(score: int) -> str:
    if score >= 951:
        return "T7_autonomous"
    elif score >= 876:
        return "T6_certified"
    elif score >= 800:
        return "T5_trusted"
    elif score >= 650:
        return "T4_standard"
    elif score >= 500:
        return "T3_monitored"
    elif score >= 350:
        return "T2_provisional"
    elif score >= 200:
        return "T1_observed"
    else:
        return "T0_sandbox"