The `InMemorySchemaRegistry` (#6) handles in-process schema management. For multi-service / multi-language deployments the industry standard is Confluent Schema Registry (or compatible — Karapace, Apicurio): a central HTTP service that stores schemas and assigns subject-versioned IDs.
Scope:
- New file `src/persistence/migration/ConfluentSchemaRegistry.ts` (peer-dep: none — uses fetch).
- Constructor takes `{ baseUrl, auth?, subjectStrategy? }`.
- Implements the same `SchemaRegistry` interface as `InMemorySchemaRegistry`.
- Wire format follows Confluent convention: 5-byte prefix on each payload (`magic-byte=0` + 4-byte big-endian schema ID).
- `register(manifest, version, registration)` POSTs to `/subjects//versions`.
- `get(manifest, version)` GETs `/subjects//versions/` with an LRU cache.
- Schemas registered server-side are stored alongside our local upcaster chain (the registry doesn't care about the codec format — Avro/Protobuf/JSON-Schema all work).
Compatibility:
- Confluent Registry has its own compat-check modes (`BACKWARD` / `FORWARD` / `FULL` / `NONE`). Map our `'backward'` / `'sample'` modes onto those.
Estimate: 3-4 days.
Out of scope: Avro / Protobuf wire codecs themselves — separate issue (A12).
The `InMemorySchemaRegistry` (#6) handles in-process schema management. For multi-service / multi-language deployments the industry standard is Confluent Schema Registry (or compatible — Karapace, Apicurio): a central HTTP service that stores schemas and assigns subject-versioned IDs.
Scope:
Compatibility:
Estimate: 3-4 days.
Out of scope: Avro / Protobuf wire codecs themselves — separate issue (A12).