Registry↗Dashboard↗

Failure Taxonomy

STR / SEM / PRA / EPI — the four failure domains, twenty-eight failure modes, and five severity levels for classifying validation findings.

Overview

UluOps classifies validation findings into four failure domains with twenty-eight failure modes (seven per domain) 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"
OrganizationSTR-ORGContent present but ungrouped or poorly ordered"Ungrouped", "Listed flat", "No structure"

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"
MisclassificationSEM-CATAssigned to the wrong category, or distinct kinds conflated"Wrong category", "Conflated with", "Not distinguished from"

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"
InactionablePRA-ACTStates a problem with no actionable consequence"So what?", "No next step", "No operational consequence"

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"
ScopeEPI-SCPExamined scope or evidence gaps left undeclared"Scope not stated", "Limits not noted", "Gaps not flagged"

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
SEM (Semantic)4,97034.3%Incorrect logic, incomplete edge cases, ambiguous APIs
STR (Structural)4,23429.3%Missing error handling, unused exports, malformed configs
PRA (Pragmatic)3,28622.7%Performance issues, fragile coupling, misaligned abstractions
EPI (Epistemic)1,98113.7%Ungrounded claims, unfalsifiable assertions, overclaiming

Source: UluOps Tracker get_analytics({ metric: "taxonomy_distribution" }), 90-day window as of July 2026 (14,471 classified issues in-window).

STR+SEM still dominate (~64%), reflecting that most validation agents focus on code quality — where structural and semantic issues are the primary failure modes. Two shifts are worth noting against the March 2026 snapshot (when STR led at 36.9% and EPI sat at 9.8%): SEM has overtaken STR as the largest domain, and the EPI share has grown to 13.7% — the predicted consequence of the cognitive-lens analyst and forecaster agents becoming a substantial share of ecosystem runs. That prediction, made in an earlier revision of this page, is so far holding.

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.

A necessary refinement to the test. "Resists classification" is ambiguous between two very different failures, and only one of them refutes universality. The 28 modes were carved at software's joints (their detection signals are things like "No JSDoc" and "Type mismatch"), so a legal or financial finding failing to land in a mode may just mean the mode vocabulary hasn't been ported — a provisioning gap, not a refutation. The universality claim attaches to the four domains, and the test must discriminate at that level:

  • Mode gap (does not refute): annotators agree on the finding's domain (this is structural / this is epistemic) but no existing mode fits. Remedy: extend the domain's mode set through the domain profile — the same way software's modes were originally derived.
  • Domain failure (refutes): domain-expert annotators, given the domain definitions but not the software mode examples, cannot agree on which of the four domains a class of findings belongs to at rates meaningfully above chance — or systematically need a category outside the four. That is the four-domain structure failing, not a vocabulary shortfall.

Operationally: run the cross-domain deployment with domain-level annotation agreement as the primary metric and mode-fit as a secondary one. Mode extension is expected and planned; persistent domain-level disagreement is the falsification signal.

This test has not yet been executed. All current data comes from software validation (14,000+ classified issues in the trailing 90 days as of July 2026). 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.