Skip to content

Fact/Capability Registry

Every model field converted to Fact[T] (ADR-063 D2) is declared exactly once in abicheck/model/fact_registry.py's FACT_REGISTRY — its value type, producing backends, persistence, and whether it participates in identity/comparison/suppression/reporting. See ADR-063 D7 and the implementation plan's Phase 5 section for the design this page's data comes from.

Converted facts

Fact Value type Producing backends Lifecycle Persisted Identity Comparable Suppressible Reportable
AbiSnapshot.ast_resolved_standard str \| None castxml, clang persisted
ElfMetadata.dynamic_flags frozenset[str] \| None elf persisted
ElfMetadata.has_fini bool \| None elf persisted
ElfMetadata.has_init bool \| None elf persisted
EnumType.deprecated str \| None castxml, clang persisted
EnumType.is_scoped bool \| None castxml, clang persisted
EnumType.qualified_name str \| None castxml, clang persisted
EnumType.source_header str \| None castxml, clang, dwarf, pdb persisted
Function.binary_exported bool castxml, clang, dwarf persisted
Function.contract_attributes list[str] \| None castxml, clang persisted
Function.declared_in_headers bool castxml, clang persisted
Function.deprecated str \| None castxml, clang persisted
Function.elf_binding SymbolBinding \| None castxml, clang, elf persisted
Function.exception_spec str \| None castxml, clang persisted
Function.hidden_friend_owner str \| None castxml, clang persisted
Function.in_public_contract bool castxml, clang persisted
Function.is_compiler_generated bool \| None castxml persisted
Function.is_explicit bool \| None castxml, clang, dwarf persisted
Function.is_hidden_friend bool \| None castxml, clang persisted
Function.is_override bool \| None castxml, clang persisted
Function.is_variadic bool \| None castxml, clang persisted
Function.source_header str \| None castxml, clang persisted
MachoMetadata.rpaths list[str] \| None macho persisted
Param.is_restrict bool castxml, clang persisted
Param.is_va_list bool clang persisted
Param.kind ParamKind castxml, clang, dwarf persisted
PeMetadata.delay_imports dict[str, list[str]] \| None pe persisted
RecordType.bases list[str] castxml, clang, dwarf persisted
RecordType.data_size_bits int \| None clang persisted
RecordType.deprecated str \| None castxml, clang persisted
RecordType.is_abstract bool \| None castxml, clang persisted
RecordType.is_final bool \| None castxml, clang persisted
RecordType.is_standard_layout bool \| None clang persisted
RecordType.is_trivially_copyable bool \| None clang persisted
RecordType.qualified_name str \| None castxml, clang persisted
RecordType.source_header str \| None castxml, clang, dwarf, pdb persisted
RecordType.virtual_bases list[str] castxml, clang, dwarf persisted
RecordType.vptr_offset_bits int \| None castxml, clang, dwarf persisted
RecordType.vtable list[str] castxml, clang, dwarf persisted
TypeField.default str \| None castxml, clang persisted
TypeField.deprecated str \| None castxml, clang persisted
TypeField.is_const bool castxml, clang, dwarf persisted
TypeField.is_mutable bool castxml, clang persisted
TypeField.is_volatile bool castxml, clang, dwarf persisted
Variable.access AccessLevel castxml persisted
Variable.alignment_bits int \| None castxml, clang persisted
Variable.binary_exported bool castxml, clang, dwarf persisted
Variable.declared_in_headers bool castxml, clang persisted
Variable.deprecated str \| None castxml, clang persisted
Variable.elf_binding SymbolBinding \| None castxml, clang, elf persisted
Variable.in_public_contract bool castxml, clang persisted
Variable.source_header str \| None castxml, clang persisted

Reliability-flag coverage (case (a))

Fields whose availability is governed by a snapshot-level *_facts_reliable flag on AbiSnapshot rather than the field's own resting value — the flag's own docstring in abicheck/model/snapshot.py is the authoritative source for each row.

Reliability flag (AbiSnapshot) Fields it gates
castxml_var_access_facts_reliable Variable.access
clang_deprecation_facts_reliable Function.deprecated, Variable.deprecated, TypeField.deprecated, RecordType.deprecated, EnumType.deprecated, EnumType.is_scoped
clang_field_initializer_facts_reliable TypeField.default
clang_restrict_facts_reliable Param.is_restrict
clang_va_list_facts_reliable Param.is_va_list
clang_vtable_facts_reliable RecordType.vtable, RecordType.vptr_offset_bits
header_cv_facts_reliable TypeField.is_const, TypeField.is_volatile, TypeField.is_mutable
param_kind_facts_reliable Param.kind

Eligible but not yet converted

An allowlist-and-shrink baseline (fact_registry. KNOWN_UNCONVERTED_ELIGIBLE_FACTS) of fields the fact-registry- completeness AI-readiness check (scripts/fact_registry_completeness.py) has confirmed are availability-ambiguous — either flag-backed (case (a)) or a documented tri-state annotation (case (b)) — but have no Fact[T] sibling yet. Each is a real, tracked gap, not a silently-accepted one; the check fails if a new eligible field appears that isn't named here.

Field Converted?