Failure Taxonomy
STR / SEM / PRA / EPI — the four failure domains, twenty-four failure modes, and five severity levels for classifying validation findings.
Overview
UluOps classifies validation findings into four failure domains with twenty-four failure modes for consistent categorization across validators. This taxonomy ensures that findings from different validators can be compared, aggregated, and tracked using a shared vocabulary.
Each finding receives a failure code in the format DOMAIN-MODE/SEVERITY — for example, STR-OMI/C means a critical structural omission.
The complete Failure Taxonomy Specification v1.0.0 defines normative classification guidelines, disambiguation rules, and multi-classification patterns. This page covers the practical reference.
The Four Domains
STR — Structural
Failures related to the form, format, or organization of an artifact. Structural failures concern whether required elements are present, whether elements are well-formed, and whether elements are consistently organized.
| Mode | Code | Description | Detection Signals |
|---|---|---|---|
| Omission | STR-OMI | Required element missing | "Missing X", "No Y found", "Expected Z" |
| Excess | STR-EXC | Unnecessary or redundant element present | "Unused X", "Redundant Y", "Dead code" |
| Malformation | STR-MAL | Element present but incorrectly structured | "Invalid format", "Malformed X", "Syntax error" |
| Inconsistency | STR-INC | Elements contradict structurally | "X doesn't match Y", "Inconsistent naming" |
| Syntax | STR-SYN | Syntax or specification violation | "Schema violation", "Spec non-compliance", "Parse error" |
| Format | STR-FMT | Formatting or layout issue | "Style violation", "Inconsistent indentation", "Layout" |
SEM — Semantic
Failures related to the meaning, correctness, or logical consistency of an artifact. Semantic failures concern whether content is factually correct, logically coherent, and free from ambiguity.
| Mode | Code | Description | Detection Signals |
|---|---|---|---|
| Incorrectness | SEM-INC | Factually or logically wrong | "Incorrect X", "Wrong Y", "Bug in Z" |
| Incompleteness | SEM-COM | Partially correct, missing key aspects | "Incomplete handling", "Missing edge case" |
| Ambiguity | SEM-AMB | Multiple valid interpretations possible | "Unclear X", "Ambiguous Y", "Could mean Z" |
| Incoherence | SEM-COH | Internal logical contradiction | "X contradicts Y", "Inconsistent logic" |
| Type Error | SEM-TYP | Type system violation | "Type mismatch", "Unsafe assertion", "Generic constraint" |
| Logic Error | SEM-LOG | Logical reasoning flaw | "Wrong condition", "Flawed algorithm", "Boolean error" |
PRA — Pragmatic
Failures related to the fitness of an artifact for its intended purpose and context. Pragmatic failures concern whether an artifact serves its stated goals, matches its audience, and remains maintainable over time.
| Mode | Code | Description | Detection Signals |
|---|---|---|---|
| Misalignment | PRA-ALI | Does not serve stated purpose | "Doesn't achieve goal", "Wrong approach" |
| Mismatch | PRA-MAT | Wrong for audience or context | "Too complex for audience", "Wrong abstraction level" |
| Inefficiency | PRA-EFF | Achieves goal suboptimally | "Could be simpler", "Unnecessary complexity" |
| Fragility | PRA-FRA | Works now but breaks under change | "Brittle", "Tightly coupled", "Hard to maintain" |
| Documentation | PRA-DOC | Missing or inadequate documentation | "Undocumented", "Stale docs", "No JSDoc" |
| Testing | PRA-TST | Insufficient test coverage or quality | "No tests", "Missing edge case test", "Flaky test" |
EPI — Epistemic
Failures related to claims, confidence levels, and evidentiary support. Epistemic failures concern whether assertions are appropriately calibrated to available evidence.
| Mode | Code | Description | Detection Signals |
|---|---|---|---|
| Overclaiming | EPI-OVR | Confidence exceeds evidence | "Unsubstantiated claim", "No evidence for X" |
| Underclaiming | EPI-UND | Evidence exceeds expressed confidence | "Buried important finding", "Underplayed risk" |
| Ungrounded | EPI-GRN | Claims without traceable support | "Source missing", "Unverified assumption" |
| Unfalsifiable | EPI-FAL | No way to verify or refute | "Vague claim", "Unmeasurable assertion" |
| Validation | EPI-VAL | Verification method gap | "No validation path", "Untested assumption" |
| Unverifiable | EPI-VER | Cannot be independently verified | "No reproduction path", "Unverifiable claim" |
Severity Codes
Each failure code ends with a severity indicator:
| Code | Severity | Description | Typical Validator Response |
|---|---|---|---|
C | Critical | Blocks progression regardless of other factors | Auto-fail trigger |
H | High | Significantly impacts quality | Heavy point deduction |
M | Medium | Notable quality impact | Moderate point deduction |
L | Low | Modest quality impact | Light point deduction |
I | Info | Informational only | Note only, no point impact |
Severity vs Priority — Severity measures impact if unaddressed. Priority measures scheduling urgency. A critical-severity issue may have low priority (e.g., security vulnerability with low exploitation likelihood), and a low-severity issue may have critical priority (e.g., minor bug blocking a release).
Mode Disambiguation
These pairs are commonly confused:
| Pair | Rule |
|---|---|
SEM-INC vs SEM-COM | INC: completely wrong; COM: partially right but missing parts |
SEM-INC vs SEM-TYP | INC: factually wrong regardless of types; TYP: specifically a type system violation |
SEM-AMB vs SEM-COH | AMB: meaning is unclear; COH: meaning is clear but contradictory |
SEM-COH vs SEM-LOG | COH: organizational/narrative incoherence; LOG: logical reasoning flaw |
STR-OMI vs PRA-DOC | OMI: missing code structure; DOC: missing documentation |
STR-MAL vs STR-SYN | MAL: wrong structure; SYN: violates a formal syntax or specification |
STR-INC vs STR-FMT | INC: structural contradiction; FMT: visual style/formatting issue |
PRA-ALI vs PRA-MAT | ALI: wrong outcome for the goal; MAT: wrong fit for the context |
PRA-EFF vs PRA-FRA | EFF: suboptimal now; FRA: will break later |
PRA-EFF vs PRA-TST | EFF: general inefficiency; TST: specifically about test coverage/quality |
EPI-OVR vs EPI-FAL | OVR: claim exceeds evidence; FAL: claim cannot be tested |
EPI-GRN vs EPI-FAL | GRN: evidence is missing; FAL: evidence is impossible |
EPI-GRN vs EPI-VER | GRN: no evidence trail exists; VER: claim exists but cannot be independently verified |
Terminology: Findings, Recommendations, and Issues
These three terms describe the same data at different lifecycle stages:
| Term | Context | Meaning |
|---|---|---|
| Finding | Conceptual / documentation | A specific observation produced by a validator during analysis |
| Recommendation | SDK / API payload | The data structure submitted in runs.save() — the machine-readable form of a finding |
| Issue | Tracker / persistence | The persistent object created from a recommendation, with lifecycle state (open, completed, deferred, wontfix) |
A validator produces findings, which are encoded as recommendations in the API payload, which become tracked issues in the database.
Using the Taxonomy
When saving validation runs, include failure codes in recommendations for cross-agent analytics:
recommendations: [{
agent: 'code-validator',
title: 'Missing null check on API response',
priority: 'suggested',
severity: 'high',
failureCode: 'SEM-INC/H',
failureDomain: 'SEM',
failureMode: 'INC',
filePath: 'src/api/client.ts',
lineNumber: 42,
}]Compound Code Format
The compound code pattern is {MODE}/{SEVERITY}:
STR-OMI/C → Critical structural omission
SEM-INC/H → High-severity semantic incorrectness
PRA-FRA/M → Medium-severity pragmatic fragility
EPI-OVR/I → Informational epistemic overclaimThe failure domain is always derivable from the mode prefix — STR-* → STR, SEM-* → SEM, etc.
Distribution in Practice
The taxonomy distribution across the UluOps ecosystem shows a consistent pattern:
| Domain | Issues | Share | Typical Sources |
|---|---|---|---|
| STR (Structural) | 1,626 | 36.9% | Missing error handling, unused exports, malformed configs |
| SEM (Semantic) | 1,418 | 32.1% | Incorrect logic, incomplete edge cases, ambiguous APIs |
| PRA (Pragmatic) | 936 | 21.2% | Performance issues, fragile coupling, misaligned abstractions |
| EPI (Epistemic) | 432 | 9.8% | Ungrounded claims, unfalsifiable assertions, overclaiming |
Source: UluOps Tracker get_analytics({ metric: "taxonomy_distribution" }), 90-day window as of March 2026.
The STR+SEM dominance (~69%) reflects that most validation agents focus on code quality — where structural and semantic issues are the primary failure modes. The EPI domain is smaller because fewer agents operate in epistemic evaluation (primarily the cognitive lens agents like hume-analyst and popper-analyst). As the agent ecosystem grows to include more analysts and forecasters, expect the EPI share to increase.
Domain Portability
The taxonomy was developed for software validation but is designed to be domain-portable. The four domains (STR/SEM/PRA/EPI) map to any artifact type — a legal contract has structural omissions, semantic ambiguities, pragmatic misalignment, and epistemic overclaims just as code does.
How Portability Works
UluOps uses domain profiles (Domain Profile Schema v1.0.0) to decouple domain vocabulary from the universal taxonomy:
- Each domain defines its own issue types (e.g., legal:
deficiency,ambiguity,compliance-gap) - A tracker mapping resolves domain types to universal types for persistence
- Domain-specific severity descriptions and edge cases replace software defaults
- Terminology adapts to the domain (e.g.,
artifact→ "contract",review_unit→ "clause")
The failure domains themselves (STR/SEM/PRA/EPI) remain constant across domains — they describe universal categories of how things go wrong, not domain-specific vocabularies.
Falsifiability
The domain-portability claim is falsifiable. If a non-software domain produces findings that consistently resist classification into STR/SEM/PRA/EPI — requiring a fifth domain or showing that domain boundaries collapse — the taxonomy's universality claim would be refuted. The domain profile schema was designed to enable exactly this test: deploy agents in legal, financial, or scientific domains and measure whether the four-domain structure holds or requires extension.
This test has not yet been executed. All current data (4,400+ classified issues) comes from software validation. The domain profile schema and type mapping infrastructure are implemented, but no non-software agents have been deployed in production. Until cross-domain data exists, the portability claim remains a design hypothesis, not an empirical finding.
Analytics
The taxonomy enables cross-cutting analytics:
- Domain breakdown — What percentage of issues are structural vs semantic?
- Agent matrix — Which agents catch which failure modes? Where are blind spots?
- Trend analysis — Are semantic issues decreasing over time?
Use get_full_taxonomy_analytics (MCP) or client.analytics.getTaxonomy() (SDK) to query taxonomy-level metrics.