# Portable Contract **Domain:** Software Architecture / Interoperability **Doc Type:** Canonical Concept Node **Maturity:** Core Design Principle **Related:** [[wiki/Canonical Capability Name|Canonical Capability Name]], [[wiki/Input Rules|Input Rules]], [[wiki/Normalized Output|Normalized Output]], [[wiki/Error Behavior|Error Behavior]], [[wiki/Shared Fixtures|Shared Fixtures]] --- ## Definition **A portable contract is a runtime-independent specification of a capability's observable behavior.** It defines what the capability is called, which inputs it accepts, how results are normalized, how failures appear, and which shared examples prove conformance. ```text canonical capability name + input rules + normalized output + error behavior + shared fixtures = portable contract ``` ## Project Context Portable contracts are the modern answer to divergence across the X language ports. They allow an Obsidian plugin, PHP site, Node generator, Python recovery tool, and Perl migration utility to implement the same behavior without silently creating incompatible truths. ## Key Insight **Shared names create the appearance of compatibility; shared contracts and fixtures make compatibility testable.** ## See Also [[wiki/Conformance Testing|Conformance Testing]], [[wiki/Cross-Runtime Capability Parity|Cross-Runtime Capability Parity]], [[wiki/Deterministic Transformation|Deterministic Transformation]], [[wiki/Technical Terms|Technical Terms]]