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.

Note

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.

ModeCodeDescriptionDetection Signals
OmissionSTR-OMIRequired element missing"Missing X", "No Y found", "Expected Z"
ExcessSTR-EXCUnnecessary or redundant element present"Unused X", "Redundant Y", "Dead code"
MalformationSTR-MALElement present but incorrectly structured"Invalid format", "Malformed X", "Syntax error"
InconsistencySTR-INCElements contradict structurally"X doesn't match Y", "Inconsistent naming"
SyntaxSTR-SYNSyntax or specification violation"Schema violation", "Spec non-compliance", "Parse error"
FormatSTR-FMTFormatting 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.

ModeCodeDescriptionDetection Signals
IncorrectnessSEM-INCFactually or logically wrong"Incorrect X", "Wrong Y", "Bug in Z"
IncompletenessSEM-COMPartially correct, missing key aspects"Incomplete handling", "Missing edge case"
AmbiguitySEM-AMBMultiple valid interpretations possible"Unclear X", "Ambiguous Y", "Could mean Z"
IncoherenceSEM-COHInternal logical contradiction"X contradicts Y", "Inconsistent logic"
Type ErrorSEM-TYPType system violation"Type mismatch", "Unsafe assertion", "Generic constraint"
Logic ErrorSEM-LOGLogical 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.

ModeCodeDescriptionDetection Signals
MisalignmentPRA-ALIDoes not serve stated purpose"Doesn't achieve goal", "Wrong approach"
MismatchPRA-MATWrong for audience or context"Too complex for audience", "Wrong abstraction level"
InefficiencyPRA-EFFAchieves goal suboptimally"Could be simpler", "Unnecessary complexity"
FragilityPRA-FRAWorks now but breaks under change"Brittle", "Tightly coupled", "Hard to maintain"
DocumentationPRA-DOCMissing or inadequate documentation"Undocumented", "Stale docs", "No JSDoc"
TestingPRA-TSTInsufficient 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.

ModeCodeDescriptionDetection Signals
OverclaimingEPI-OVRConfidence exceeds evidence"Unsubstantiated claim", "No evidence for X"
UnderclaimingEPI-UNDEvidence exceeds expressed confidence"Buried important finding", "Underplayed risk"
UngroundedEPI-GRNClaims without traceable support"Source missing", "Unverified assumption"
UnfalsifiableEPI-FALNo way to verify or refute"Vague claim", "Unmeasurable assertion"
ValidationEPI-VALVerification method gap"No validation path", "Untested assumption"
UnverifiableEPI-VERCannot be independently verified"No reproduction path", "Unverifiable claim"

Severity Codes

Each failure code ends with a severity indicator:

CodeSeverityDescriptionTypical Validator Response
CCriticalBlocks progression regardless of other factorsAuto-fail trigger
HHighSignificantly impacts qualityHeavy point deduction
MMediumNotable quality impactModerate point deduction
LLowModest quality impactLight point deduction
IInfoInformational onlyNote only, no point impact
💡
Tip

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:

PairRule
SEM-INC vs SEM-COMINC: completely wrong; COM: partially right but missing parts
SEM-INC vs SEM-TYPINC: factually wrong regardless of types; TYP: specifically a type system violation
SEM-AMB vs SEM-COHAMB: meaning is unclear; COH: meaning is clear but contradictory
SEM-COH vs SEM-LOGCOH: organizational/narrative incoherence; LOG: logical reasoning flaw
STR-OMI vs PRA-DOCOMI: missing code structure; DOC: missing documentation
STR-MAL vs STR-SYNMAL: wrong structure; SYN: violates a formal syntax or specification
STR-INC vs STR-FMTINC: structural contradiction; FMT: visual style/formatting issue
PRA-ALI vs PRA-MATALI: wrong outcome for the goal; MAT: wrong fit for the context
PRA-EFF vs PRA-FRAEFF: suboptimal now; FRA: will break later
PRA-EFF vs PRA-TSTEFF: general inefficiency; TST: specifically about test coverage/quality
EPI-OVR vs EPI-FALOVR: claim exceeds evidence; FAL: claim cannot be tested
EPI-GRN vs EPI-FALGRN: evidence is missing; FAL: evidence is impossible
EPI-GRN vs EPI-VERGRN: 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:

TermContextMeaning
FindingConceptual / documentationA specific observation produced by a validator during analysis
RecommendationSDK / API payloadThe data structure submitted in runs.save() — the machine-readable form of a finding
IssueTracker / persistenceThe 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:

typescript
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}:

text
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 overclaim

The 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:

DomainIssuesShareTypical Sources
STR (Structural)1,62636.9%Missing error handling, unused exports, malformed configs
SEM (Semantic)1,41832.1%Incorrect logic, incomplete edge cases, ambiguous APIs
PRA (Pragmatic)93621.2%Performance issues, fragile coupling, misaligned abstractions
EPI (Epistemic)4329.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

What would prove this wrong?

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.