Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Error Code Index (quick lookup)

Purpose: Use this table to find the compiler phase and primary crate/files for any error code. Full catalog is in docs/SPECIFICATION.md §7.2 / Appendix D.

How to use

  1. Note the code prefix (A01 = parser, A02 = resolve, A03 = types, …).
  2. Open the primary crate/files below (or rg 'A0xxxx' crates --glob '*.rs').
  3. Do not fix a types error by changing the SMT backend unless the code is A04/A11/A05100 and the failure is genuinely solver-side.
  4. For unknown codes not listed here: rg 'A0xxxx' docs/SPECIFICATION.md then rg 'A0xxxx' crates.
  5. Do not invent Axxxxx numbers until emit + catalog + index land in the same PR (guards sections 14–15). Planned work uses prose, not reserved codes.

By series (agent phase map)

PrefixPhasePrimary crateStart here
A01xxxparserassura-parsergrammar/, lexer.rs, lower/
A02xxxresolveassura-resolvelib.rs, type_refs.rs, imports.rs
A03xxxtypesassura-typesinference.rs, clauses.rs, checks/
A04xxxsmt+typesassura-smt / assura-typesentry/, z3_backend/, refinement paths
A05xxxtypesassura-typeschecks/linear_typestate.rs, checkers/linear.rs
A06xxxtypesassura-typeschecks/linear_typestate.rs, checkers/typestate.rs
A07xxxtypesassura-typeschecks/effects.rs, checkers/effects.rs
A08xxxtypesassura-typeschecks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A09xxxtypesassura-typeschecks/meta.rs (match), checkers/totality.rs
A10xxxtypesassura-typeschecks/meta.rs, match exhaustiveness
A11xxxsmt+typesassura-smt / assura-typesentry/, invariant checks
A12xxxtypesassura-typeschecks/concurrency.rs, checkers/security/
A13xxxtypesassura-typeschecks/numeric.rs, domain/numeric.rs
A31xxxtypesassura-typeschecks/core.rs (liveness prove/fairness)
A05 (impl)smt+cliassura-smt / assura-cliA05100 CE, A05101 timeout, A05102 known limitation, A05103 inconclusive

Codes from SPEC §7.2 (plus a few high-traffic impl codes)

CodePhasePrimary crateMessageCause (spec)SPEC subsectionStart in tree
A01001parserassura-parserUnexpected tokenParser errorSyntax (A01xxx)grammar/, lexer.rs, lower/
A01002parserassura-parserUnterminated string literalMissing closing quoteSyntax (A01xxx)grammar/, lexer.rs, lower/
A02001resolveassura-resolveUndefined identifier XName not in scopeName Resolution (A02xxx)lib.rs, type_refs.rs, imports.rs
A02003resolveassura-resolveDuplicate definition of XName collisionName Resolution (A02xxx)lib.rs, type_refs.rs, imports.rs
A02005resolveassura-resolveCircular importModule A imports B imports AName Resolution (A02xxx)lib.rs, type_refs.rs, imports.rs
A03001typesassura-typesExpected T1, found T2 / empty tuple / pattern arityIncompatible types; invalid (,); constructor/tuple pattern field countType Mismatch (A03xxx)inference.rs, clauses.rs, checks/
A03002typesassura-typesType parameter count mismatchWrong number of genericsType Mismatch (A03xxx)inference.rs, clauses.rs, checks/
A03005typesassura-typesUnknown field F in type TField does not existType Mismatch (A03xxx)inference.rs, clauses.rs, checks/
A03006typesassura-typesClause not Bool / dependent index mismatchNon-Bool clause body; or Vec<T,3> vs Vec<T,5>Type Mismatch (A03xxx)clauses.rs, checkers/info_flow.rs
A05001typesassura-typesLinear variable X used twiceGrade 1, used 2+ timesLinearity (A05xxx)checks/linear_typestate.rs, checkers/linear.rs
A05002typesassura-typesLinear variable X not usedGrade 1, never consumedLinearity (A05xxx)checks/linear_typestate.rs, checkers/linear.rs
A05003typesassura-typesGrade mismatch: expected N, used MExact count violatedLinearity (A05xxx)checks/linear_typestate.rs, checkers/linear.rs
A05004typesassura-typesCannot copy linear valueTried to duplicateLinearity (A05xxx)checks/linear_typestate.rs, checkers/linear.rs
A06001typesassura-typesInvalid transition: S1 -> S2Not in state machineTypestate (A06xxx)checks/linear_typestate.rs, checkers/typestate.rs
A06002typesassura-typesOperation requires state S, found S'Wrong current stateTypestate (A06xxx)checks/linear_typestate.rs, checkers/typestate.rs
A06003typesassura-typesObject not in final state at end of scopeProtocol incompleteTypestate (A06xxx)checks/linear_typestate.rs, checkers/typestate.rs
A06004typesassura-typesAmbiguous state after branchDifferent states in if/elseTypestate (A06xxx)checks/linear_typestate.rs, checkers/typestate.rs
A07001typesassura-typesUndeclared effect EEffect not in function signatureEffect Violation (A07xxx)checks/effects.rs, checkers/effects.rs
A07002typesassura-typesPure function performs effect ESide effect in pure contextEffect Violation (A07xxx)checks/effects.rs, checkers/effects.rs
A07003typesassura-typesEffect E in must-not listExplicitly forbidden effectEffect Violation (A07xxx)checks/effects.rs, checkers/effects.rs
A08001typesassura-typesData flow violation: L1 to L2High to low flowInformation Flow (A08xxx)checks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A08002typesassura-typesPII leaked to logsRestricted data in Public sinkInformation Flow (A08xxx)checks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A08003typesassura-typesImplicit flow via branchSecret in branch conditionInformation Flow (A08xxx)checks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A08004typesassura-typesPurpose violationData used for undeclared purposeInformation Flow (A08xxx)checks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A08005typesassura-typesMissing declassificationLabel downgrade without declassifyInformation Flow (A08xxx)checks/info_flow.rs, checkers/taint.rs, checkers/info_flow.rs
A09001typesassura-typesNon-exhaustive pattern matchMissing casesTotality (A09xxx)checks/meta.rs (match), checkers/totality.rs
A09002typesassura-typesRecursion may not terminateNo decreasing measureTotality (A09xxx)checks/meta.rs (match), checkers/totality.rs
A09003typesassura-typesDecreasing measure not well-foundedMeasure does not decreaseTotality (A09xxx)checks/meta.rs (match), checkers/totality.rs
A09004typesassura-typesPartial function called from total contextMissing trustTotality (A09xxx)checks/meta.rs (match), checkers/totality.rs
A11001smt+typesassura-smt / assura-typesInvariant violatedSMT found counterexampleBusiness Invariant (A11xxx)entry/, invariant checks
A11002smt+typesassura-smt / assura-typesInvariant not preserved by operationMutation breaks invariantBusiness Invariant (A11xxx)entry/, invariant checks
A11003smt+typesassura-smt / assura-typesInvariant verification timeoutSMT solver timed outBusiness Invariant (A11xxx)entry/, invariant checks
A11004smt+typesassura-smt / assura-typesRule clause violatedBusiness rule not satisfiedBusiness Invariant (A11xxx)entry/, invariant checks
A12001typesassura-typesExclusive resource accessed concurrentlyData race possibleConcurrency (A12xxx)checks/concurrency.rs, checkers/security/
A12002typesassura-typesActor isolation violatedCross-actor mutable accessConcurrency (A12xxx)checks/concurrency.rs, checkers/security/
A12003typesassura-typesShared-read resource modifiedWrite in shared-read contextConcurrency (A12xxx)checks/concurrency.rs, checkers/security/
A13001typesassura-typesUnit mismatch: U1 vs U2e.g., USD + EURNumerical Precision (A13xxx)checks/numeric.rs, domain/numeric.rs
A13002typesassura-typesDimensionally invalid operatione.g., Money * MoneyNumerical Precision (A13xxx)checks/numeric.rs, domain/numeric.rs
A13003typesassura-typesFloat used where fixed-point requiredPrecision lossNumerical Precision (A13xxx)checks/numeric.rs, domain/numeric.rs
A16001??Purpose violationData used outside declared purposesPrivacy (A16xxx)rg code in crates
A16002??Retention policy missingNo retention declared for PIIPrivacy (A16xxx)rg code in crates
A16003??Anonymization requiredRetention period expiredPrivacy (A16xxx)rg code in crates
A17001??Breaking field removalRequired field removedSchema Evolution (A17xxx)rg code in crates
A17002??Missing default for new fieldNon-optional field addedSchema Evolution (A17xxx)rg code in crates
A17003??Type change without migrationIncompatible field type changeSchema Evolution (A17xxx)rg code in crates
A21001??Breaking response field removalClient may depend on fieldAPI Evolution (A21xxx)rg code in crates
A21002??New required request fieldExisting clients will failAPI Evolution (A21xxx)rg code in crates
A21003??Error variant removedClient handlers breakAPI Evolution (A21xxx)rg code in crates
A22001??Exceeds declared complexityO(n^2) found, O(n) declaredComplexity Bounds (A22xxx)rg code in crates
A22002??Complexity analysis timeoutAARA solver timed outComplexity Bounds (A22xxx)rg code in crates
A22003??Unbounded allocation detectedNo allocation bound provedComplexity Bounds (A22xxx)rg code in crates
A05100smt+cliassura-smt / assura-cliSMT counterexample found (verification failed)Fix the contract (real violation)(impl)check/report.rs
A05101cliassura-cliSMT solver timed outIncrease --timeout(impl)check/report.rs
A05102cliassura-cliKnown compiler limitation (warning, exit 0; error under --strict)Simplify ensures, add IR, or ignore until encoding lands(impl)check/report.rs
A05103cliassura-cliSolver inconclusive (error, exit 1)Simplify the contract or raise --timeout(impl)check/report.rs
A10002typesassura-typesMatch on unknown scrutinee without wildcard(implementation; see CLI/SMT Unknown policy)(impl)checks/meta.rs (match exhaustiveness)

High-traffic implementation codes (not always in SPEC §7.2 table above)

Agents often hit these in tests/checkers before finding them in Appendix D. Prefer this table over guessing the phase.

CodePhasePrimary crateTypical meaningStart in tree
A01000cli/pipelineassura-cli / assura-pipelineSource file read/IO failurecheck/run.rs, pipeline
A02006resolveassura-resolveDuplicate importimports.rs
A02007resolveassura-resolveUnused importunused.rs
A02008resolveassura-resolveInvalid import path segmentimports.rs
A02010resolveassura-resolveCannot resolve import (module not found)imports.rs, lib.rs
A03006typesassura-typesClause body not Bool where requiredclauses.rs
A03007typesassura-typesNumeric / refinement constraint failurechecks/numeric.rs, domain/numeric.rs
A03010typesassura-typesType / annotation mismatch (impl)inference.rs, clauses.rs, checks/
A07003typesassura-typesUnknown / denied effectchecks/effects.rs (known effect names only)
A08102typesassura-typesInfo-flow / taint violation (impl)checks/info_flow.rs, checkers/taint.rs
A10001typesassura-typesNon-exhaustive matchchecks/meta.rs
A10101typesassura-typesNumeric / match interaction (impl)checks/numeric.rs, checks/meta.rs
A11005typesassura-typesInvariant / FFI-related type issuechecks/ffi_error.rs, entry/invariant paths
A14001typesassura-typesFrame / modifies violationchecks/frame_totality.rs
A14002typesassura-typesSecret-dependent array index (timing)checkers/error_propagation.rs, checks/frame_totality.rs
A04008types+cliassura-types / assura-cliEnsures references unconstrained output (result)checks/clause_quality.rs; suppressed when IR present (#703)
A05025smt+typesassura-smt / assura-typesUnresolved prophecy variableadvanced/prophecy.rs; structural checker in types
A05026smtassura-smtProphecy double-resolved / unconstrainedadvanced/prophecy.rs
A08101typesassura-typesBuffer access without bounds checkcheckers/memory.rs
A09101typesassura-typesTainted data as array indexcheckers/taint.rs
A23003typesassura-typesCircular buffer empty on readdomain/memory.rs
A26001typesassura-typesBinary format field offset exceeds bufferdomain/format/binary_format.rs
A43005typesassura-typesPrecomputed table size not a standard domaindomain/numeric.rs
A17004typesassura-typesDecrypt without tag_verified (AEAD)checks crypto conformance
A23016typesassura-typesDomain / feature checker (impl)domain/, checks/
A24001typesassura-typesDomain / feature checker (impl)domain/, checks/
A27003typesassura-typesDomain / feature checker (impl)domain/, checks/
A28001typesassura-typesDomain / feature checker (impl)domain/, checks/
A33001typesassura-typesStorage / resource checkerchecks/storage.rs
A37003typesassura-typesStorage / resource checkerchecks/storage.rs
A38001typesassura-typesStorage / resource checkerchecks/storage.rs
A42003typesassura-typesNumeric precision / boundschecks/numeric.rs
A43001typesassura-typesNumeric precision / boundschecks/numeric.rs
A43002typesassura-typesNumeric precision / boundschecks/numeric.rs
A44001typesassura-typesPlatform / target checkerchecks/platform.rs
A45001typesassura-typesPlatform / target checkerchecks/platform.rs
A47001typesassura-typesSafety / CVE pattern checkerchecks/safety.rs
A48002typesassura-typesMeta / match / totality (impl)checks/meta.rs
A49001typesassura-typesMeta / match / totality (impl)checks/meta.rs
A49002typesassura-typesMeta / match / totality (impl)checks/meta.rs
A50001typesassura-typesMeta / feature checker (impl)checks/meta.rs, domain/
A52001typesassura-typesMeta / feature checker (impl)checks/meta.rs
A54001typesassura-typesMeta / feature checker (impl)checks/meta.rs
A55001typesassura-typesMeta / feature checker (impl)checks/meta.rs, domain/
A64001typesassura-typesFFI / error propagation (impl)checks/ffi_error.rs
A31006typesassura-typesLiveness block missing provechecks/core.rs (run_liveness_checks)
A31007typesassura-typesleads_to without assume fairchecks/core.rs (run_liveness_checks); colon form splits prove/leads_to clauses
A32002typesassura-typesOpaque body access without revealdomain/core/opaque_function.rs
A36003typesassura-typesDuplicate savepoint namedomain/storage/rollback.rs
A52002typesassura-typesSuspend undeclared invariant (also empty decoder name in codec registry)domain/meta/scoped_invariant.rs, domain/format/codec_registry.rs
A46002typesassura-typesUnbounded resource usagedomain/platform.rs
A29001typesassura-typesData used before checksum verificationdomain/format/checksum.rs
A25003typesassura-typesUnbounded operation in deadlinedomain/concurrency.rs
A09103typesassura-typesTainted data flows to trusted sinkcheckers/taint.rs
A53006typesassura-typesQuantifier missing trigger annotationdomain/core/quantifier_trigger.rs
A49003typesassura-typesEquivalence missing contract referencedomain/meta/behavioral_equivalence.rs
A35003typesassura-typesPhantom readdomain/storage/mvcc.rs
A34003typesassura-typesPage cache capacity exceededdomain/storage/page_cache.rs
A30002typesassura-typesProtocol wrong state for messagedomain/format/protocol_grammar.rs
A23001typesassura-typesCircular buffer index exceeds capacitydomain/memory.rs
A10104typesassura-typesFixed-width division by zerocheckers/fixed_width.rs
A09102typesassura-typesTainted data used as allocation sizecheckers/taint.rs
A08103typesassura-typesGhost region references missing buffercheckers/memory.rs
A51003typesassura-typesContract version gapdomain/meta/incremental_contract.rs
A46003typesassura-typesResource near limitdomain/platform.rs
A36001typesassura-typesRollback to unknown savepointdomain/storage/rollback.rs
A35001typesassura-typesWrite-write conflictdomain/storage/mvcc.rs
A10102typesassura-typesUnsafe narrowing castcheckers/fixed_width.rs
A10103typesassura-typesSigned/unsigned comparison mismatchcheckers/fixed_width.rs
A42001typesassura-typesNumerical precision lossdomain/numeric.rs
A20001typesassura-typesDeterministic function uses non-deterministic sourcecheckers/security/determinism.rs
A20002typesassura-typesDeterministic function iterates hash collectioncheckers/security/determinism.rs
A18001typesassura-typesShared memory read without access modecheckers/security/shared_mem.rs
A18003typesassura-typesShared memory data racecheckers/security/shared_mem.rs
A24003typesassura-typesCallback depth exceededdomain/concurrency.rs
A25001typesassura-typesDeadline exceededdomain/concurrency.rs
A22004typesassura-typesArena use after dropdomain/memory.rs
A44003typesassura-typesUnknown platform in abstractiondomain/platform.rs
A46001typesassura-typesResource limit exceededdomain/platform.rs
A55003typesassura-typesDuplicate library namedomain/meta/contract_library.rs
A32001typesassura-typesOpaque function called without contractdomain/core/opaque_function.rs
A48001typesassura-typesComplexity bound exceededdomain/meta/complexity_bound.rs
A34001typesassura-typesEvict pinned pagedomain/storage/page_cache.rs
A37001typesassura-typesMonotonicity violationdomain/storage/monotonic_state.rs
A30003typesassura-typesProtocol missing required fielddomain/format/protocol_grammar.rs

| A15004 | types | assura-types | Operation may violate invariant | checkers/security/structural_invariant.rs | | A15001 | types | assura-types | Structural invariant on non-recursive type | checkers/security/structural_invariant.rs | | A18002 | types | assura-types | Shared memory write without exclusive | checkers/security/shared_mem.rs | | A33003 | types | assura-types | Fsync before data write | domain/storage/crash_recovery.rs | | A03012 | types | assura-types | Index variable used at runtime | checkers/info_flow.rs | | A23002 | types | assura-types | Circular buffer zero capacity | domain/memory.rs | | A45003 | types | assura-types | Undeclared feature flag | domain/platform.rs | | A42002 | types | assura-types | ULP bound violation | domain/numeric.rs | | A31001 | types | assura-types | Undefined axiom reference | domain/core/axiomatic_def.rs | | A31003 | types | assura-types | Unused axiom | domain/core/axiomatic_def.rs | | A32003 | types | assura-types | Reveal outside proof context | domain/core/opaque_function.rs | | A51001 | types | assura-types | Precondition strengthened | domain/meta/incremental_contract.rs | | A48003 | types | assura-types | Exponential complexity warning | domain/meta/complexity_bound.rs | | A54003 | types | assura-types | Diamond inheritance in contracts | domain/meta/contract_composition.rs | | A30001 | types | assura-types | Protocol invalid transition | domain/format/protocol_grammar.rs | | A29003 | types | assura-types | Checksum range mismatch | domain/format/checksum.rs | | A28003 | types | assura-types | String truncation splits code unit | domain/format/string_encoding.rs | | A27001 | types | assura-types | Bit field out of bounds | domain/format/bit_level.rs | | A26004 | types | assura-types | Binary fields overlap | domain/format/binary_format.rs | | A26003 | types | assura-types | Binary field missing endianness | domain/format/binary_format.rs | | A15002 | types | assura-types | Tree invariant insufficient fields | checkers/security/structural_invariant.rs | | A15003 | types | assura-types | Sort invariant wrong field count | checkers/security/structural_invariant.rs | | A33002 | types | assura-types | Commit without fsync | domain/storage/crash_recovery.rs | | A03011 | types | assura-types | Dependent type index kind mismatch | checkers/info_flow.rs | | A03008 | types | assura-types | Invalid Bool index expression | checkers/info_flow.rs | | A25002 | types | assura-types | Nested deadline exceeds outer | domain/concurrency.rs | | A24002 | types | assura-types | Callback registered in non-reentrant context | domain/concurrency.rs | | A23019 | types | assura-types | Fence ordering mismatch | domain/memory.rs | | A47002 | types | assura-types | Undischarged safety obligation | domain/safety.rs | | A47003 | types | assura-types | Empty proof obligations | domain/safety.rs | | A45002 | types | assura-types | Conflicting feature flags | domain/platform.rs | | A38002 | types | assura-types | Handler for undeclared failure mode | domain/storage/storage_failure.rs | | A44002 | types | assura-types | Direct platform reference | domain/platform.rs | | A55002 | types | assura-types | Library self-dependency | domain/meta/contract_library.rs | | A54002 | types | assura-types | Circular contract extends chain | domain/meta/contract_composition.rs | | A43003 | types | assura-types | Zero-size table | domain/numeric.rs | | A43004 | types | assura-types | Invalid encoding: byte sequence not valid | domain/numeric.rs | | A31002 | types | assura-types | Circular axiom dependency | domain/core/axiomatic_def.rs | | A53003 | types | assura-types | After-all predicate not satisfied | domain/core/crud_auth.rs | | A53001 | types | assura-types | CRUD operation missing auth policy | domain/core/crud_auth.rs | | A53002 | types | assura-types | Delete without authentication | domain/core/crud_auth.rs | | A52003 | types | assura-types | Restore non-suspended invariant | domain/meta/scoped_invariant.rs | | A50002 | types | assura-types | Refinement chain gap | domain/meta/multi_pass_refinement.rs | | A50003 | types | assura-types | Trivial refinement pass | domain/meta/multi_pass_refinement.rs | | A36002 | types | assura-types | Resource leak after rollback | domain/storage/rollback.rs | | A38003 | types | assura-types | Critical failure mode unhandled | domain/storage/storage_failure.rs | | A35002 | types | assura-types | Snapshot isolation violation | domain/storage/mvcc.rs | | A34002 | types | assura-types | Evict dirty page without flush | domain/storage/page_cache.rs | | A29002 | types | assura-types | Checksum algorithm mismatch | domain/format/checksum.rs | | A28002 | types | assura-types | String encoding mismatch | domain/format/string_encoding.rs | | A27002 | types | assura-types | Bit field crosses byte boundary | domain/format/bit_level.rs | | A05200 | types | assura-types | Unbounded quantifier warning | assura-cli/src/check/report.rs | | A51002 | types | assura-types | Postcondition weakened | domain/meta/incremental_contract.rs | | A37002 | types | assura-types | Illegal monotonic variable reset | domain/storage/monotonic_state.rs | | A03009 | types | assura-types | Invalid Enum index expression | checkers/info_flow.rs |

If a code is still missing: rg 'A0xxxx' crates --glob '*.rs' then add a row here in the same PR when agents are likely to hit it again.

Agent decision shortcuts

SymptomFirst action
A01xxxParser/grammar/lower; minimal reproduction in tests/fixtures/
A02xxxassura-resolve; symbol table / imports / type_refs
A03xxxassura-types inference/clauses; check Type::is_indeterminate() footgun
A04xxx / counterexampleassura-smt; unconstrained result/outputs; verify_typed
A05xxx linearitychecks/linear_typestate.rs / checkers/linear.rs
A06xxx typestatecheckers/typestate.rs
A07xxx effectschecks/effects.rs; known effect names only (see AGENTS pipeline trap)
A08xxx taint/flowchecks/info_flow.rs / checkers/taint.rs
A09xxx / A10xxx match/totalitychecks/meta.rs / checkers/totality.rs; parser arm trivia footgun
A14xxx frame/modifieschecks/frame_totality.rs
A31xxx livenesschecks/core.rs; parser may split prove: leads_to(...) into two clauses
A05100 counterexample / A05101 timeout / A05102 limitation / A05103 inconclusivecheck/report.rs; limitation (A05102) = warning, else error
A52xxx / A54xxx / high A-seriesdomain/meta features: checks/meta.rs, domain/, then rg 'Axxxxx' crates
Wrong phase suspicionbash scripts/guards.sh then re-read AGENTS decision tree

Maintenance

  • Source of truth for meanings: docs/SPECIFICATION.md §7.2.
  • When adding a new Axxxxx in code, add a row here (or in “High-traffic implementation codes”) in the same PR if agents are likely to hit it.
  • Do not try to generate all of Appendix D unless agents repeatedly miss phase; curated + high-traffic is enough.
  • Full phase/wiring rules: AGENTS.md, crates/assura-types/src/CHECKER-LAYERS.md.

Catalog placeholders (not emitted)

Pure-listing hollow error codes (catalog + SPEC, no production emit and no partial checker wiring) were removed. New codes must be implemented, emitted, cataloged, and indexed in the same PR. See AGENTS.md and guards sections 14–15.

If a code is only planned, describe it in prose without an Axxxxx number until emit lands. Do not re-add rows here without a production emitter.