# Protocol ABI fixtures

`v1/client` and `v1/host` contain one paired vector for every known `ClientMsg` and
`HostMsg` wire discriminator. The `.json` file is the exact UTF-8 document exposed by
`NucleicProtocolC.dll`; the matching `.cbor.hex` file is the exact CBOR wire payload.

`ProtocolABIFixtureTests` verifies both encodings byte-for-byte and decodes them back to the
same representative value. `HostMsg.unknown` is intentionally absent: it is the
forward-compatibility fallback for future tags, not a protocol message kind.

After an intentional wire change, regenerate the corpus from the package root with:

```sh
NUCLEIC_UPDATE_PROTOCOL_ABI=1 swift test --filter ProtocolABIFixtureTests.checkedInVectorsMatchTheCodecs
```

Review the fixture diff as an ABI change. Do not update it merely to make a failing test pass.
