Task Taxonomy Reference
Purpose
Adaptive-harness classifies every incoming task on 6 independent axes before routing to a harness. This taxonomy drives the routing decision and ensemble trigger logic. The router agent (LLM-based) reasons over the task description and codebase context to assign values — it does not use keyword heuristics.
The 6 Axes
Axis 1: task_type
What category of work does this task represent?
| Value | Description | Example tasks | |-------|-------------|---------------| | bugfix | Fix a defect in existing behavior | "Login fails when email has uppercase letters" | | feature | Add new functionality | "Add dark mode support" | | refactor | Restructure code without changing behavior | "Extract the auth logic into a separate module" | | research | Investigate, experiment, or benchmark | "Compare three approaches to rate limiting" | | migration | Upgrade dependencies or migrate between systems | "Migrate from Express 4 to Fastify" | | benchmark | Measure and analyze performance | "Profile the query execution and find bottlenecks" | | incident | Urgent production issue requiring fast response | "API returning 500s in production right now" | | greenfield | Build a multi-component system from scratch | "Build a FastAPI backend with webhooks, InfluxDB, and Grafana dashboard" | | review | Review code, designs, plans, or PRs | "Review this PR before merging", "Does this design look correct?" | | ops | QA testing, quality validation, or retrospective | "Run acceptance tests on the new feature", "Conduct a sprint retrospective" | | release | Release and ship a versioned artifact | "Cut the 2.0.0 release", "Run the ship workflow for this tag" |
Axis 2: uncertainty
How well-defined is the solution before implementation begins?
| Value | Description | Signs | |-------|-------------|-------| | low | Clear solution path; solution is known before starting | Spec exists, existing pattern to follow, fix is obvious | | medium | Solution approach is known but details require exploration | Roughly know what to do, some unknowns in implementation | | high | Solution path is unclear; multiple approaches plausible | Novel problem, no precedent, multiple competing designs |
Axis 3: blast_radius
How much of the codebase could be affected by this change?
| Value | Description | Signs | |-------|-------------|-------| | local | Change confined to 1-3 files; no cross-cutting concerns | Single function fix, isolated module addition | | cross-module | Change touches multiple modules or shared interfaces | Modifying a shared utility, changing an API contract | | repo-wide | Change affects the entire codebase or public interfaces | Renaming a core abstraction, changing the data model, upgrading a pervasive dependency |
Axis 4: verifiability
How easily can success be confirmed after implementation?
| Value | Description | Signs | |-------|-------------|-------| | easy | Automated tests clearly pass/fail; behavior is deterministic | Unit tests exist, CI passes, output is binary correct/incorrect | | moderate | Tests exist but don't fully capture correctness; human review needed | Integration tests cover most but not all cases; requires spot-checking | | hard | No automated verification; correctness requires deep reasoning or human judgment | Research results, UX quality, architectural soundness, ML model accuracy |
Axis 5: latency_sensitivity
How time-sensitive is task completion?
| Value | Description | Signs | |-------|-------------|-------| | low | Quality over speed; thoroughness preferred | Refactoring, migration planning, research, standard development | | high | Fast response critical; speed over comprehensiveness | Production incidents, demo blockers, urgent hotfixes |
Axis 6: domain
What technical domain does this task primarily involve?
| Value | Description | Separated from | |-------|-------------|----------------| | backend | Server-side code, APIs, databases, services | — | | frontend | UI, browser code, CSS, accessibility | — | | mobile | Native mobile apps (iOS, Android, React Native, Flutter) | frontend | | ml-research | Machine learning, model training, data pipelines, research | — | | data-engineering | ETL pipelines, data warehousing, Spark, Airflow, dbt | ml-research | | devops | CI/CD pipelines, deployment automation, observability | infra | | security | Vulnerability audits, auth hardening, compliance | backend + infra | | infra | Infrastructure provisioning, cloud configuration, networking | — | | docs | Documentation, README, API docs, comments | — |
An optional domain_hint free-text field may accompany domain to give extra context for mixed-domain or niche tasks (e.g., "also touches devops", "Spark ETL pipeline", "Kubernetes operator"). This field is for logging and analytics only — it does not affect routing.
How Taxonomy Feeds Routing
The router agent uses these 6 axes to match against harness trigger conditions defined in each contract.yaml. Example trigger conditions:
# tdd-driven/contract.yaml
trigger:
task_types: [bugfix, feature]
uncertainty: [low, medium]
verifiability: [easy, moderate]
# research-iteration/contract.yaml
trigger:
task_types: [research, benchmark]
uncertainty: [high]
# migration-safe/contract.yaml
trigger:
task_types: [migration]
blast_radius: [repo-wide]
When multiple harnesses match, the router uses historical weights from .adaptive-harness/harness-pool.json to break ties, preferring higher-weight harnesses.
Ensemble Trigger Condition
Canonical rule is defined in agents/router.md (<ensemble_rule>): ensemble_required = (uncertainty == "high") AND (verifiability == "hard" OR blast_radius == "repo-wide")
Fast-Path Condition
The router outputs skip_routing: true for zero-work acknowledgments that require no code changes, no analysis, and no file modifications:
- Acknowledgments or meta-conversation ("ok", "sounds good", "thanks", "got it")
- Pure clarification questions ("what does X mean?")
The following are NOT fast-path (they require actual work):
- "fix that typo" -- requires a code change
- "add a newline" -- requires a file edit
- "refactor this" -- requires analysis + code changes
Classification Examples
| Task description | task_type | uncertainty | blast_radius | verifiability | latency_sensitivity | domain | |-----------------|-----------|-------------|--------------|---------------|--------------------|----| | "Login fails when email has uppercase" | bugfix | low | local | easy | low | backend | | "Add dark mode to the settings page" | feature | medium | local | moderate | low | frontend | | "Migrate from Webpack 4 to Vite" | migration | high | repo-wide | moderate | low | frontend | | "Compare Redis vs Memcached for our cache layer" | research | high | local | hard | low | infra | | "API is throwing 500s in production" | incident | low | local | easy | high | backend | | "Extract shared auth logic used in 12 modules" | refactor | medium | cross-module | moderate | low | backend | | "Add deep link handling to React Native app" | feature | medium | local | moderate | low | mobile | | "Build Spark ETL pipeline for order aggregation" | feature | medium | local | moderate | low | data-engineering | | "Add canary deployment stage to CI/CD pipeline" | feature | medium | cross-module | moderate | low | devops | | "Audit and harden JWT authentication" | refactor | medium | cross-module | moderate | low | security | | "Build a FastAPI backend with GitHub webhooks, InfluxDB storage, and Grafana dashboards" | greenfield | high | repo-wide | moderate | low | backend | | "Create a microservice that processes images, stores in S3, and serves via CDN" | greenfield | high | repo-wide | moderate | low | infra |
Usage Notes
- The router agent assigns taxonomy values using LLM reasoning — i