SpecFact CLI Interface Contracts

Command Registry contract

src/specfact_cli/registry/registry.py exposes a lazy command registry with:

  • register(name, loader, metadata)
  • get_typer(name)
  • list_commands()
  • list_commands_for_help()
  • get_metadata(name)

BridgeAdapter contract

src/specfact_cli/adapters/base.py defines required abstract methods:

  • detect(...)
  • get_capabilities(...)
  • import_artifact(...)
  • export_artifact(...)
  • generate_bridge_config(...)
  • load_change_tracking(...)
  • save_change_tracking(...)
  • load_change_proposal(...)
  • save_change_proposal(...)

All public methods are contract-checked (@icontract) and runtime type-checked (@beartype).

ToolCapabilities contract

ToolCapabilities in src/specfact_cli/models/capabilities.py communicates adapter runtime support:

  • tool identity and layout
  • detected specs path
  • available sync modes
  • external config/custom hook support flags

Consumers use this metadata to select sync behavior and capability-safe operations.