# 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]]