Skip to content

Capability Coverage (capabilities-coverage.yaml)

Every adapter carries a capabilities-coverage.yaml at its root. It is a machine-comparable declaration of how the adapter stands against the integration capability catalog (docs/adapter-development/reference/capability-catalog.md).

This is not the framework Thing function library. Rows here are adapter capabilities such as offline audit recovery, credential management, card formats, arm/disarm, bypass, and alarms/tampers/troubles/restores. Framework functions like HistoryPoll, StatusPoll, Reader, Door, Partition, and IntrusionDetector are backing primitives only.

Schema

catalog_source: docs/adapter-development/reference/capability-catalog.md
catalog_hash: sha256:ab12cd34ef56
generated: "2026-05-30"

capabilities:
  cross_cutting.connection_session:
    domain: cross_cutting
    catalog_label: "Connection & session"
    state: implemented
    reason: null
    backing_primitives: [ConnectionBase]
    evidence: "GxyLogin + Login(41) handshake and encrypted TCP channel"
  access.card_formats:
    domain: access
    catalog_label: "Card formats"
    state: intentionally_deferred_by_explicit_user_scope
    reason: not_yet_implemented
    backing_primitives: [AccessSynchronization, access-model.yaml]
    evidence: "Primary CSN/RawHex only; Wiegand/proprietary mapping deferred"

Fields

Field Required Values
domain always cross_cutting, access, intrusion, fire, safety, video, io, gateway_native_sdk, or adapter-specific extra domain
catalog_label always Exact capability label from capability-catalog.md
state always One Definition-of-Done final state, normalized to snake_case
reason required unless state: implemented null, protocol_limitation, device_limitation, not_yet_implemented, out_of_scope, no_framework_mapping, needs_vendor, needs_hardware
backing_primitives always Framework functions, commands, events, YAML models, or services that express the capability
evidence always Short protocol/code evidence, one line

Final States

Use the Definition-of-Done states, normalized for YAML:

  • implemented
  • not_supported_by_protocol
  • not_supported_by_framework
  • blocked_by_missing_or_ambiguous_documentation
  • blocked_by_hardware_only_verification
  • intentionally_deferred_by_explicit_user_scope

Use partial only when part of a catalog capability is implemented and the remaining part has a different final state that must be explained in evidence.

Key Names

Keys are stable slugs: <domain>.<capability_label_normalized>.

Normalize labels by lowercasing, replacing & with and, replacing / with _, removing parentheses, and converting other non-alphanumeric separators to single underscores.

Examples:

  • Connection & session -> cross_cutting.connection_and_session
  • Offline audit recovery -> cross_cutting.offline_audit_recovery
  • Reset & restore -> access.reset_and_restore
  • Alarms / tampers / troubles / restores -> intrusion.alarms_tampers_troubles_restores

Merge Rules

Review syncs this file as a merge, not a blind regeneration:

  1. Recompute catalog_hash from docs/adapter-development/reference/capability-catalog.md.
  2. Re-assess state from code, adapter-registration.yaml, access-model.yaml, and adapter docs.
  3. Preserve curated reason and evidence when the state is unchanged.
  4. If state changes, update it and flag the entry for human confirmation of reason/evidence.
  5. Add catalog-new capabilities for in-scope domains.
  6. Drop capabilities no longer present in the catalog unless they are adapter-specific extras.

Out Of Scope

Do not add framework Thing functions as rows. If a capability is backed by a function, list it under backing_primitives.