docs.vin

Compatibility annex

How the inherited platform's contracts map into the catalog — covered, superseded, or decided. Nothing is silently dropped.

This estate inherits a legacy automotive platform. It shipped roughly 107 capabilities with real coverage — under one in ten of an industry-complete model, strong on retail reads and nearly silent on the vehicle's operating, default, and end-of-life phases. The catalog reconciles that inheritance to 143 rows (rising to ~151 with the declared annex) — and it does so on the record. Nothing is silently dropped.

The three dispositions

Every inherited endpoint and shape maps to exactly one of:

  • Cover — the same capability, at a superset contract. The catalog row answers everything the legacy shape did, and more.
  • Supersede — the capability is absorbed into a stronger row, with a written mapping from the old shape to the new. Legacy "coming soon" promises that never shipped a wire shape are superseded by the row that fulfills them, not preserved.
  • Decide — where the legacy surface was internally inconsistent (a field typed two ways, a value spelled two ways), the catalog rules once and publishes the mapping. The estate default: normalize in the superset, publish the legacy mapping, never reproduce the bug as behavior.

The acceptance suite asserts one of these for every inherited contract, so the superset is proven, not promised.

What the migration corrects

Two structural mistakes in the inherited platform are corrected by the model itself:

  • Buy was mistaken for a service when it is a composition. A purchase is pre-approval, valuation, out-the-door math, protection, signature, notarization, payment, and transport — each a standalone capability at its own address. The buy workflow proves this on the wire: delete the workflow and every leaf still transacts alone.
  • The product was split human-versus-machine when it is one model in many representations. Two faces meant two sources of truth and inevitable drift — and it was the split that let sub-processor names leak onto caller-visible surfaces. The twin invariant and the no-vendor-leak wall close both holes.

The anti-patterns not inherited

The inherited docs also taught, by counter-example, what not to become:

  • Two API generations on one host, with different envelopes, id types, and query grammars, neither marked authoritative — the single largest source of consumer confusion. The catalog is one contract, versioned honestly.
  • Dead links and orphaned pages. This site is generated from the catalog and link-checked continuously; a page exists because a descriptor does.
  • Schema/example drift. Examples here are generated from the descriptor, so a worked example cannot disagree with the contract it illustrates.

The declared annex

Foreign title and registration registers, and non-auto VIN classes (powersports, RV, trailer, commercial), are minted as status: declared rows — so their omission is a decision on the record, resolved by a written ruling, never an absence by silence. Find them on the honest shelves throughout the catalog and doors.

Next

  • The catalog — the reconciled rows, with honest status.
  • The record — the twin invariant that ends the human/machine split.
  • Dealers — the walled integration layer.