Adapter boundary

Each adapter emits the same normalized quote contract. The Compare Service never depends on exchange-native fields.