Interchangeability is layered
Two models can be interchangeable at one level and incompatible at another. Treating interchangeability as a single Boolean property causes fragile integrations and unsafe merges.
Contract interchangeability
Models accept and return the same versioned schemas, errors, confidence fields, provenance, and latency classes. This is the most important level because it enables black-box substitution and independent testing.
A contract should define semantics, not only JSON shape. Two fields named confidence are not interchangeable if one is a calibrated probability and the other is an arbitrary score.
Runtime interchangeability
Different artifacts can run in the same serving environment or behind the same adapter. Runtime compatibility includes operator support, memory behavior, tokenizer handling, batching, streaming, cancellation, and deterministic settings.
Parameter interchangeability
Weights, layers, task vectors, or adapters can be directly combined only when architectural assumptions align. Compatibility may require the same base model, layer count, hidden dimensions, tokenizer vocabulary, parameter naming, and normalization conventions. A successful file load does not prove a meaningful merge.
Semantic interchangeability
Internal representations can be consumed across models only when latent spaces are aligned or translated. This is difficult and often requires trained projections, shared encoders, distillation, or explicit adapters. It should be treated as an experimental capability, not a default integration path.
Behavioral interchangeability
The preferred abstraction is behavioral: a model satisfies a capability contract and passes the same acceptance suite. Behavioral interchangeability allows heterogeneous internals while preserving operational substitution.
FUNCTION is_behaviorally_interchangeable(candidate, contract, suite)
REQUIRE VALIDATE_SCHEMA(candidate, contract.schema)
REQUIRE VALIDATE_ERROR_SEMANTICS(candidate, contract.errors)
REQUIRE VALIDATE_RESOURCE_CLASS(candidate, contract.budget)
evidence <- RUN_ACCEPTANCE_SUITE(candidate, suite)
RETURN evidence.required_tasks_pass
AND evidence.calibration_within_range
AND evidence.safety_invariants_pass
END FUNCTIONCompatibility matrix
Maintain a machine-readable matrix for every package:
- accepted input and output contract versions;
- runtime and hardware backends;
- base-family and tokenizer identifiers;
- merge and adapter compatibility groups;
- quantization and precision support;
- data-jurisdiction restrictions;
- deterministic and streaming capabilities;
- maximum context, memory, and latency classes.
The router should select only from candidates whose compatibility predicates are already satisfied. It should not discover compatibility by failing at runtime.
Source reports used for this guide
These reports are preserved verbatim in the site archive. The guide above is an editorial synthesis and may narrow, qualify, or reorganize claims from the source material.