Contract Model

Core Model

BREAD contracts are device-centric and capability-oriented:

  • one canonical contract header per device type (dcmt_ops.h, rlht_ops.h),
  • one shared capability query contract (bread_caps.h),
  • generation-free public include surface.

Public API Boundary

Canonical includes:

  • <bread/bread_ops.h>
  • <bread/dcmt_ops.h>
  • <bread/rlht_ops.h>
  • <bread/bread_caps.h>

Generation-scoped public headers are intentionally excluded.

Capability Principle

Behavior differences are represented as additive capabilities, not generation forks. Controllers must gate optional behavior by runtime capability flags.

Generation Labels

Hardware generation labels (Gen1/Gen2/Gen3) are inventory metadata only. They are not protocol identity and must not drive controller command branching.

When to Split a Contract Line

Create a new contract line (new type ID) only for true wire breaks, such as:

  • incompatible opcode semantics,
  • reinterpretation of existing payload bytes,
  • non-additive behavior that cannot be safely gated by capabilities.

Until then, evolve the same type line additively.