Skip to main content

Agent Failure Registry

A neutral namespace for AI agent failure modes, and a crosswalk between the taxonomies that already exist.

Not another classifier. There are at least seven of those, each with its own private vocabulary: Agent-Xray's tool_selection_bug, AgentRx's Invalid Invocation, and five more describing overlapping reality under names that share nothing. This is the mapping layer between them.

>>> import afr
>>> afr.map("agentrx", "Invalid Invocation")
[AF-0023 (exact)]
>>> afr.map("agent-xray", "spin")
[AF-0058 (exact)]
>>> afr.mode("AF-0058").layer
'harness'

The analogy is CVE, not CWE. Plenty of people have proposed taxonomies; nobody has done the boring institutional work of assigning stable ids, accepting mappings, and letting tools reference them. CVE's value was never intellectual — it was giving the whole industry a shared noun.

Why this and not a classifier

  • It gets stronger as rivals ship. Every new classifier with a private taxonomy increases the need for the crosswalk. A classifier is threatened by the next classifier; a namespace is fed by it.
  • Incumbents structurally cannot build it. A registry operated by one vendor is one every competitor is right to ignore. Microsoft declined the standards position for AgentRx explicitly.
  • Distribution runs through other repos. You do not need an audience — you open a PR adding a mapping file to each classifier.

Install

pip install agent-failure-registry     # zero runtime dependencies; imports as `afr`

Use

import afr

# One tool's report, tagged with shared ids
labels = afr.normalize({"stuck_loop": 31, "context_overflow": 18}, "agent-xray")
print(afr.profile(labels).render())
failure profile  (source: agent-xray, n=49)
--------------------------------------------------------------------
AF-0058    63.3%  ######################              Unproductive repetition
AF-0064    36.7%  ############                        Context overflow truncation
--------------------------------------------------------------------
by layer: harness=49

That is the pitch in one output. 67% pass tells you nothing you can act on.

afr modes                              # every mode
afr show AF-0142                       # full record, plus who maps to it
afr map agentrx "System Failure"       # source category -> AF ids
afr unmap AF-0064 agent-xray           # and back, with relations inverted
afr coverage                           # how much of each taxonomy is mapped
afr gaps                               # what nobody has named yet

Two levels of identifier

AF-0142 mode Permanent, versionless, like CWE. What classifiers map onto and humans cite.
AFI-2026-08-0417 instance One observation, pinned to model + harness version, like CVE.

Conflating them breaks the query that justifies the whole project: did Opus 5.2 regress on AF-0142 relative to 5.1? That needs modes stable across time and instances pinned to versions — so they cannot be the same identifier.

Instances are deliberately not implemented yet. Open collection only once three independent tools emit AF ids.

Relation direction

relation describes the AF mode relative to the source category: exact, broader, narrower, overlaps. afr.unmap() inverts it for you — swapping broader and narrower — because hand-authoring the reverse is how crosswalks silently corrupt.

At most one exact per source category. One wrong exact discredits the table.

Status

Pre-v0. 18 modes, all provisional; 3 source taxonomies; 90% of AgentRx and 86% of Agent-Xray mapped — Agent-Xray from a full read of its classifier, not its README (see registry/crosswalk/notes/). The remaining modes are week-one reading, not coding — see registry/crosswalk/academic.yaml for the queue.

Findings are already falling out of the structure, which is the point. afr gaps surfaces four:

  • agent-xray:tool_bug — a tool-layer defect has no AF mode; the registry has no tool-layer entry yet. (As detected, the category mostly catches fabricated tools and schema errors, which do map.)
  • agent-xray:routing_bugtool never exposed by the harness. No AF mode.
  • agent-xray:tool_selection_bugwrong tool selected. No AF mode.
  • AF-0142 (stale context re-read) has no source mapping — a failure everyone has seen that no published taxonomy names.

Repo layout

registry/modes/AF-####.yaml     canonical mode records (CC0)
registry/crosswalk/*.yaml       one file per third-party taxonomy (CC0)
registry/SCHEMA.md              field semantics and relation direction
afr/                            the library (Apache-2.0), no dependencies
afr/_index.json                 compiled from YAML, committed, CI-enforced
scripts/compile.py              YAML -> index (the only place PyYAML is needed)
scripts/validate.py             integrity checks; a lying crosswalk is worse than none

Development

make check      # build + validate + test
make demo       # coverage, gaps, and a sample profile

Licensing

Registry data is CC0; the library is Apache-2.0. A namespace with an attribution clause invites legal review, and legal review is the friction that stops tools embedding it.

Governance, including the commitment to move to a neutral foundation once three independent tools map to this namespace, is in GOVERNANCE.md.

Outreach

Distribution runs through other projects' repos, not through this one. Drafted mapping-file PRs for AgentRx and Agent-Xray, and an issue for AgentDebugX, are in outreach/ — including the order to send them in, which matters more than the speed.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agent_failure_registry-0.1.0.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agent_failure_registry-0.1.0-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file agent_failure_registry-0.1.0.tar.gz.

File metadata

  • Download URL: agent_failure_registry-0.1.0.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for agent_failure_registry-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3428a54c2c1e7435c774be345fa3e8dbaeabd5c9c71805a05536356b88344542
MD5 64c8e383442c5a2420d65f23767a0ad2
BLAKE2b-256 c60d9f080bb0505fc417e8fa62b0ad700ea421b670fa9833806d4bd856d2c954

See more details on using hashes here.

File details

Details for the file agent_failure_registry-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agent_failure_registry-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3c3b09fc23d761811afb856de47058a15771bbf826435e5f3bc7f4528b867cc8
MD5 678005cd5bf9c83c428b27761a1b895c
BLAKE2b-256 2647f2e49f5f7bb8713bed43be800a125583d6d89f2365c479d93117b36f8e44

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

This release

0.1.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page