Agent Types

The six agent types — validators, executors, analysts, generators, explorers, and forecasters — their output shapes, ADL constraints, and when to use each.

Overview

Every UluOps agent is defined by a type, and type determines output shape, ADL schema constraints, and composition rules. The platform supports six agent types split into two families:

  • Non-writing agents read and analyze without modifying artifacts: validators, analysts, explorers, forecasters
  • Writing agents produce or modify artifacts: executors, generators
Validatorv1.0.0
Analyze and score targets with actionable findings
Score + Findings + Decision
PASS / WARN / FAIL
  • Code quality validation
  • Security auditing
  • Documentation completeness
  • API contract compliance
interfacescoringdecisions
Executorv1.0.0
Perform tasks that modify state or produce artifacts
Artifacts + Changes + Status
COMPLETE / PARTIAL / FAILED
  • Issue auto-fixing
  • Code generation
  • Migration scripts
  • Refactoring operations
interfacetaskscompletion
Analystv1.6.0
Investigate topics and produce analytical reports
Analysis Report + Recommendations
Custom (per agent)
  • Ecosystem pattern analysis
  • Strategic assessment
  • Data science review
  • Risk assessment
interfaceprocess
Generatorv1.6.0
Produce artifacts from structured inputs
Generated Artifacts + Status
Custom (per agent)
  • Agent prompt scaffolding
  • Configuration generation
  • Code scaffolding
  • Schema generation
interfacetasks
Explorerv1.8.0
Discover, map, and report on codebases and systems
Exploration Report
None (narrative output)
  • Codebase mapping
  • Dependency tracing
  • Architecture discovery
  • Knowledge extraction
interfacemission
Forecasterv1.9.0
Model future states and causal consequences
Predictions + Causal Chains + Timelines
Custom (e.g., SOUND/PERVERSE)
  • Perverse outcome detection
  • Unintended consequence analysis
  • Temporal decay prediction
  • Cascade depth analysis
interfacemissionprocess

At a Glance

AspectValidatorExecutorAnalystGeneratorExplorerForecaster
Primary outputScore + Decision + FindingsArtifacts + ChangesStructured AuditGenerated ArtifactsDiscovery ArtifactProjections + Causal Chains
Produces scoresYes (0–100, required)NoOptionalNoNoOptional
Decision vocabularyPer preset (e.g., PASS/FAIL)COMPLETE / PARTIAL / FAILEDCustom per agentCustom per agentNone (narrative)Custom per agent
Required ADL blocksscoring, decisionstasks, completionprocesstasksmissionmission, process
Forbidden ADL blockstasks, completion, rollbackscoring, decisions, deductionstasks, completion, rollbackscoring, deductions, auto_failscoring, decisions, tasks, completion, rollbacktasks, completion, rollback
Tracker integrationFull (scores, issues, correlation)Status trackingPartial (recommendations)Status trackingObservations (auto-collected)Partial (predictions)

Epistemic Nature

Independent of agent type, each agent can declare its epistemic nature — a multi-axis classification describing what kind of claims it makes and how verifiable they are. This was added in ADL v1.13.0.

AxisValuesQuestion
Verifiabilitymechanically_checkable, expert_judgment, not_checkableCan a third party confirm the finding?
Determinismdeterministic, stochastic, environment_dependentSame input → same output?
Claim Typefactual, normative, observationalWhat kind of assertion?

Agents of the same type can have different epistemic natures. For example, code-validator (mechanically checkable, factual) and security-analyst (expert judgment, factual) are both validators, but their findings have different verifiability characteristics. This distinction matters for empirical analysis of agent effectiveness — see the RAH service for false-positive rate analysis across epistemic categories.

See the ADL Specification for classification guidelines and the full axis reference.

Validators

Validators are the most mature agent type and the foundation of UluOps quality gates. Each validator scores a target from 0 to 100 against weighted criteria, produces a pass/fail decision, and emits findings with file paths, line numbers, and failure taxonomy codes.

Output shape:

json
{
  "score": 85,
  "decision": "PASS",
  "findings": [
    {
      "title": "Missing error handling",
      "filePath": "src/api/client.ts",
      "lineNumber": 42,
      "severity": "H",
      "failureDomain": "PRA"
    }
  ]
}

Examples: code-validator, type-safety-validator, test-architect, frontend-validator, security-analyst, docs-validator, mcp-validator, sql-validator

Note

Agent names don't always match their type. security-analyst and test-architect are validators (they produce scores and pass/fail decisions), despite their names suggesting other types. The agentType field in the ADL definition determines the type, not the name.

Known characteristics:

  • Lowest rejection rate of any type — empirical validators average ~17% rejection
  • Strongest tracker integration — scores, issues, and correlation all tracked automatically
  • Quality ceiling gradient — diminishing returns above score 90 on repeated runs
  • Threshold sensitivity — validators near the 85/70 boundaries create the most actionable findings
💡
Tip

For detailed coverage of scoring, gates, and runs, see Validation.

Executors

Executors perform tasks that modify state or produce artifacts. They are the action-oriented counterpart to validators — where a validator identifies what's wrong, an executor fixes it. Executors use a tasks block to define their inputs, steps, and completion criteria, and a completion block to define success/failure conditions.

Output shape:

json
{
  "status": "COMPLETE",
  "artifacts": [
    {
      "type": "file",
      "path": "src/auth.ts",
      "action": "modified",
      "description": "Added null check on line 42"
    }
  ],
  "summary": "Fixed 3 of 3 identified issues"
}

ADL schema constraints:

  • Required: interface, tasks, completion
  • Forbidden: scoring, decisions, deductions — executors produce changes, not judgments
  • Optional: rollback — defines how to undo changes if execution fails

The tasks block defines structured inputs and steps:

FieldPurpose
tasks.inputsWhat the executor needs (file paths, issue IDs, configuration)
tasks.stepsOrdered operations to perform
tasks.validationHow to verify steps completed correctly

The completion block defines what success looks like:

DecisionMeaning
COMPLETEAll tasks finished successfully
PARTIALSome tasks completed, others need user input
FAILEDExecution blocked by an unresolvable issue

Current status: No executor agents are registered in the ecosystem yet. The type is fully specified in ADL v1.0.0 and schema-validated, but the existing remediation pattern uses fix commands (/fix:test-gaps, /fix:security, /fix:type-safety) which are iterative validator-fix loops rather than standalone executor agents.

Note

The executor type is designed for autonomous task completion — agents that can take an issue ID and fix it without human-in-the-loop iteration. This is a more advanced pattern than the current fix commands, which delegate back to the human for each review cycle.

Planned use cases:

  • Issue auto-fixing from tracker findings
  • Code migration and refactoring operations
  • Configuration generation from templates
  • Dependency upgrade workflows

When to use: When you need an agent that does something rather than evaluates something. When the agent's output is changed files, created artifacts, or modified state rather than a score or report.

Analysts

Analysts produce structured audits, decompositions, and coherence assessments. Unlike validators, analysts investigate why something is the way it is rather than scoring how good it is. Their output is investigation-oriented rather than gate-oriented.

Output shape:

json
{
  "analysis": {
    "sections": [
      { "title": "Material Cause", "content": "..." },
      { "title": "Formal Cause", "content": "..." }
    ]
  },
  "decision": "TELEOLOGICAL",
  "recommendations": [...]
}

The cognitive lens pattern: Many analysts use a cognitive_lens block to encode a philosophical framework that shapes their analysis:

AgentFrameworkWhat it examines
aristotle-analystFour-cause decompositionMaterial, formal, efficient, and final causes
hume-analystEmpirical auditWhat's observed vs. what's assumed
confucius-analystRelational coherenceRole obligations, naming correspondence
standard-analystStructural analysisComponents, dependencies, purpose alignment

Specialized analysts target specific failure patterns rather than general analysis:

AgentFocus
assumption-excavatorImplicit assumptions buried in artifacts
contradiction-detectorInternal inconsistencies between sections
perverse-outcome-detectorFailure modes from optimization against criteria
bias-prejudice-detectorSystematic perspective shaping
confidence-calibratorClaims asserted beyond evidence

When to use: When you need deep investigation rather than a pass/fail gate. When you want structured reasoning about why something is the way it is.

Known characteristics:

  • Higher rejection rates than validators (~31%) due to subjective evaluation
  • assumption-excavator achieves 70% completion despite being subjective — challenges the "analyst = lifecycle mismatch" assumption
  • Custom decision vocabularies per agent (e.g., TELEOLOGICAL/ATELEOLOGICAL, EXAMINED/UNEXAMINED, CONSISTENT/CONTRADICTED)

Generators

Generators produce artifacts from structured inputs. Where executors modify existing state, generators create new things from scratch. They use a tasks block (like executors) but without completion — generators define what to produce rather than what to change.

Output shape:

json
{
  "status": "COMPLETE",
  "artifacts": [
    {
      "type": "file",
      "path": "agents/new-agent.agent.yaml",
      "action": "created",
      "description": "Generated ADL schema with 5 scoring categories"
    }
  ],
  "decisions_requiring_input": []
}

ADL schema constraints:

  • Required: interface, tasks
  • Forbidden: scoring, deductions, auto_fail — generators produce artifacts, not judgments
  • Optional: completion (not required like executors)

Key difference from executors: Generators create new artifacts; executors modify existing ones. Generators don't need completion criteria because the artifact either exists or it doesn't — there's no partial modification state to track.

Examples:

AgentWhat it generates
adl-generatorADL YAML schema files from agent prompts or requirements
prompt-creatorAgent prompt markdown files from natural language requirements

Both generators use a COMPLETE/PARTIAL/BLOCKED vocabulary:

  • COMPLETE — artifact was generated and written to disk
  • PARTIAL — artifact was generated but sections need user clarification
  • BLOCKED — generation cannot proceed (duplicate agent, contradictory requirements)

When to use: When you need to scaffold new artifacts from requirements or specifications. When the output is a new file rather than a modified one.

Known characteristics:

  • Generators naturally pair with validators — generate an artifact, then validate it (e.g., adl-generatoradl-meta-validator)
  • Both current generators include duplicate detection to avoid generating overlapping agents
  • Generators are the newest agent family (introduced in ADL v1.6.0)

Explorers

Explorers produce discovery artifacts — categorical maps, inventories, commitment extractions. They are the most purely read-only type: no scoring, no decisions, just discovery. Explorers answer "what's here?" rather than "is it good?"

Output shape:

json
{
  "report": "Structured exploration narrative...",
  "discoveries": [
    {
      "category": "Commitment",
      "content": "The artifact claims X but never defines X"
    }
  ]
}

The cognitive lens pattern: Like analysts, most explorers operate through a philosophical framework:

AgentFrameworkWhat it discovers
socrates-explorerElenctic examinationCommitments, contradictions, untested definitions
aristotle-explorerCategorical mappingNatural kinds, genus/differentia, essential properties
hume-explorerEvidence discoveryWhat's been measured vs. assumed or inherited
confucius-explorerRelational mappingNaming chains, ritual protocols, role-obligation pairs
deep-exploreSemantic search + call graphsCode structure, call chains, symbol relationships

Explorers have the most restricted ADL schema — they forbid scoring, decisions, deductions, auto_fail, tasks, completion, and rollback. This enforces their read-only, discovery-oriented nature.

When to use: When entering an unfamiliar codebase or domain. When you need a map before you can validate. When the question is "what exists and how does it relate?" rather than "does it meet criteria?"

Known characteristics:

  • Observations are tracked and auto-collected — explorer output is parsed into structured discoveries stored in the tracker via the SDK
  • Most valuable as a first step before running validators or analysts
  • deep-explore is the only non-philosophical explorer — it uses semantic search and call graph tracing rather than a cognitive lens

Forecasters

Forecasters model future states rather than evaluating present states. They produce trajectory projections, decay predictions, and causal chain analyses. Where validators ask "is this good now?" and analysts ask "why is this the way it is?", forecasters ask "what happens next?"

Output shape:

json
{
  "predictions": [
    {
      "title": "Knowledge decay in auth module",
      "timeHorizon": "6 months",
      "confidence": "HIGH",
      "mechanism": "Dependency drift"
    }
  ],
  "causalChains": [
    { "trigger": "...", "consequence": "...", "depth": 2 }
  ]
}

The forecast block: Unique to forecasters — configures the prediction lens:

FieldOptionsPurpose
actor_typerational, naive, adversarial, systemic, cultural, creativeWho is acting on the artifact
time_horizonnear-term, medium-term, long-termHow far out to project
prediction_formatprobability-weighted, spectrum, timeline, depth-mapHow predictions are structured

Examples:

AgentWhat it predicts
temporal-decay-forecasterWhen an artifact becomes dangerous or obsolete
staleness-predictorWhich parts decay first and on what timeline
normalization-forecasterWhat becomes unquestioned assumption after adoption
capability-emergence-forecasterNew capabilities that emerge from artifact existence
adoption-drift-detectorGap between designed usage and actual adoption
cascade-depth-analyzerSecond and third-order causal chains

When to use: When current quality is good but you need to know how it will degrade. When you want to detect second-order effects of changes. When planning maintenance schedules.

Known characteristics:

  • Predictions are inherently less verifiable than present-state analysis
  • Most valuable for platform-level artifacts, infrastructure, and policy
  • Custom decision vocabularies per agent (e.g., DURABLE/FRAGILE, BOUNDED/GENERATIVE, SHALLOW/DEEP)
  • Weirdness increases with cascade depth — third-order predictions are speculative by nature

Choosing the Right Type

NeedTypeExample
Pass/fail quality gateValidatorcode-validator, type-safety-validator
Fix identified issuesExecutor(planned — currently use /fix:* commands)
Deep investigation of a concernAnalystaristotle-analyst, assumption-excavator
Scaffold new artifactsGeneratoradl-generator, prompt-creator
Map unknown territoryExplorerdeep-explore, socrates-explorer
Predict future statesForecastertemporal-decay-forecaster, staleness-predictor
💡
Tip

Types compose naturally in workflows. A typical workflow might use an Explorer to map a codebase, then Validators to score quality, then a Generator to scaffold fixes, then an Executor to apply them. See Definitions for WDL workflow composition.

The boundary between types is enforced at the schema level — ADL validation will reject a validator that includes tasks, or a generator that includes scoring. This prevents type confusion and ensures each agent's output shape matches what the tracker and SDK expect.

Tracker Integration

Each type integrates differently with the validation tracker:

TypeScoresIssuesCorrelationRuns
ValidatorStored per-agentCreated from findingsFingerprint matchingFull lifecycle
ExecutorNot applicableStatus updates on existingLinks to source issuesRecorded
AnalystOptional (if scored)Created from recommendationsPartialRecorded
GeneratorNot applicableCreated if generation failsLinks to produced artifactsRecorded
ExplorerNot applicableCreated from observationsAuto-collectedRecorded
ForecasterOptional (if scored)Created from predictionsPartialRecorded

All six types produce output that can be recorded as a run. The difference is how much of that output maps to the tracker's structured data model versus remaining as narrative text.

Type Maturity

The six types were introduced across different ADL versions, reflecting their maturity:

TypeIntroducedRegistry CountTracker RunsMaturity
Validatorv1.0.030+1,000+Production — the core of UluOps
Executorv1.0.000Specified — schema complete, no agents yet
Analystv1.6.020+40+Production — philosophical + specialized
Generatorv1.6.02Early — adl-generator and prompt-creator
Explorerv1.8.08+Production — philosophical + deep-explore
Forecasterv1.9.012+10+Production — temporal + causal + adoption

Registry counts from list_definitions, tracker runs from get_analytics({ metric: "agent_performance" }). Generators and explorers don't produce scored runs tracked in the standard pipeline. As of March 2026, 217+ total definitions are published across all types (agents, commands, workflows, pipelines).