Default Challenge Map
| Risk Level | Score Range | Challenge | Min Review Time |
|---|---|---|---|
| LOW | 0.0–0.3 | Auto-approve (no challenge) | — |
| MEDIUM | 0.3–0.6 | ConfirmChallenge | 3.0s |
| HIGH | 0.6–0.8 | QuizChallenge | 10.0s |
| CRITICAL | 0.8–1.0 | MultiPartyChallenge | 30.0s |
The minimum review time prevents “rubber-stamping” — approvals that happen too fast to indicate genuine review. If an operator responds before the minimum time elapses, the challenge is flagged in the audit trail.
The Four Challenge Types
Confirm
Simple Y/N prompt with a mandatory pause. Suitable for state-changing but well-understood actions.
Quiz
Auto-generated comprehension questions from the action context. Forces the operator to read before approving.
Teach-Back
Free-text explanation of what the action will do. Validates understanding through keyword matching and pluggable validators.
Multi-Party
Requires 2+ independent approvers, each completing a different sub-challenge. The strongest verification for irreversible operations.
How Challenge Selection Works
The challenge pipeline follows this sequence:Challenge Flow Diagram
Risk scoring (5 factors)
The risk scorer evaluates function name, arguments, hints, domain patterns, and amplifiers to produce a score from 0.0 to 1.0.
Trust adjustment (if enabled)
The trust engine may lower the effective risk for agents with a proven track record.
Challenge selection by risk level
| Risk Level | Score Range | Challenge |
|---|---|---|
| LOW | below 0.3 | Auto-approve |
| MEDIUM | 0.3 — 0.6 | Confirm (Y/N) |
| HIGH | 0.6 — 0.8 | Quiz (1—3 questions) |
| CRITICAL | 0.8 — 1.0 | Multi-party (2+ approvers) |
Minimum Review Times
Every challenge type enforces a minimum review time. If the operator responds faster than this threshold, the approval is still accepted, but it is flagged as a potential “rubber stamp” in the audit trail.| Challenge | Default Min Review | Rationale |
|---|---|---|
| Confirm | 3.0 seconds | Enough time to read the action summary |
| Quiz | 10.0 seconds | Enough time to read and answer questions |
| Teach-Back | 30.0 seconds | Enough time to compose a meaningful explanation |
| Multi-Party | Inherited from sub-challenges | Each approver has their own minimum |
Customizing Review Times
Challenge Outcomes
Every challenge produces one of three outcomes:| Outcome | Effect | Audit Field |
|---|---|---|
| Passed | Action is executed | challenge_passed: true |
| Failed | AttestaDenied raised, action blocked | challenge_passed: false |
| Timed out | Treated as failure, action blocked | challenge_passed: false |
Configuration via YAML
The challenge map and review times can be configured declaratively:attesta.yaml
ConfirmChallenge
Simple approval with mandatory pause
QuizChallenge
Auto-generated comprehension questions