Back to Architecture
Governance Framework

ACMF Maturity Model

Agent Capability Maturity Framework - Progressive autonomy with automatic progression based on demonstrated performance and automatic regression on failures.

Four Maturity Levels

OBSERVE
LEARNING
ASSISTED
AUTONOMOUS

OBSERVE

New agents, learning baseline patterns

Observe only, no execution. Agent watches human decisions and learns patterns.

Execution RightsCannot execute
Human OversightAll decisions reviewed

LEARNING

Building confidence, validation phase

Can execute but all actions require human review and approval.

Execution RightsExecute with review
Human OversightAll executions reviewed

ASSISTED

Proven agents handling routine tasks

Full execution capability, but critical operations still require human approval.

Execution RightsFull execution
Human OversightCritical ops only

AUTONOMOUS

Mature agents with proven track record

Fully autonomous execution with audit trail only. No human approval needed.

Execution RightsFull execution
Human OversightAudit trail only

Progression Requirements

TransitionSuccess RateMin TasksConsecutive SuccessMax Override RateMin Confidence
OBSERVELEARNING
95%100205%85%
LEARNINGASSISTED
90%2003010%80%
ASSISTEDAUTONOMOUS
95%500502%90%

All Criteria Must Be Met

Progression requires simultaneously meeting all thresholds. Metrics reset when advancing to a new mode to track fresh performance.

Automatic Progression & Regression

Automatic Progression

Agents automatically progress to higher maturity levels when they meet all progression criteria.

Performance Tracking

Continuous monitoring of success rate, confidence, and human override rate

Metrics Reset

Performance counters reset upon progression to track new mode behavior

State Persistence

Maturity state persisted to Redis for recovery across restarts

Automatic Regression

Agents automatically regress to lower maturity levels when they experience too many consecutive failures.

Failure Threshold

5+ consecutive failures trigger automatic regression

Cascade Regression

AUTONOMOUS → ASSISTED → LEARNING → OBSERVE

Detailed Logging

Regressions logged with full context for post-incident analysis

RIGOR Integration

ACMF mode determines how RIGOR executions proceed, particularly around the GENERATE → OPERATIONALIZE transition.

Human Approval Decision Tree

RequiresHumanApproval(agentID, isCritical) → bool

┌───────────────────────────────────────────────────────────┐
│ ACMF Mode │ Operation Type │ Requires Approval? │
├───────────────────────────────────────────────────────────┤
│ OBSERVE   │ Any            │ YES (always)       │
│ LEARNING  │ Any            │ YES (always)       │
│ ASSISTED  │ Critical       │ YES                │
│ ASSISTED  │ Normal         │ NO                 │
│ AUTONOMOUS│ Any            │ NO                 │
└───────────────────────────────────────────────────────────┘

Note: GateHumanApproval (v1.6) operates INDEPENDENTLY of ACMF mode
for high-risk operations. Even AUTONOMOUS agents need approval for
operations like production DB changes or security policy modifications.

Execution Status by Mode

  • OBSERVE: CanExecute() = false
  • LEARNING: Status: awaiting_approval
  • ASSISTED: Conditional approval
  • AUTONOMOUS: Full execution

State Management

  • • Redis key: acmf:agent_modes
  • • Auto-recovery on startup
  • • Per-agent isolation
  • • Metrics tracking: success/failure counts, confidence, override rate

Implementation

ACMF Manager (Go)

// RecordTaskOutcome records task outcome and checks for progression/regression
func (am *ACMFManager) RecordTaskOutcome(
    agentID string,
    success bool,
    confidence float64,
    humanOverride bool,
) {
    maturity := am.getOrCreateMaturity(agentID)

    // Update counters
    maturity.TotalTasks++
    if success {
        maturity.SuccessCount++
        maturity.Metrics.ConsecutiveSuccesses++
        maturity.Metrics.ConsecutiveFailures = 0
    } else {
        maturity.FailureCount++
        maturity.Metrics.ConsecutiveFailures++
        maturity.Metrics.ConsecutiveSuccesses = 0
    }

    // Update metrics
    maturity.Metrics.SuccessRate = float64(maturity.SuccessCount) / float64(maturity.TotalTasks)
    maturity.Metrics.AvgConfidence = updateRunningAverage(
        maturity.Metrics.AvgConfidence, confidence, maturity.TotalTasks)

    // Check for progression
    am.checkProgression(maturity)

    // Check for regression (5+ consecutive failures)
    am.checkRegression(maturity)
}

Continue Exploring

Learn more about related architectural components