Change the contract¶
Update the authority first¶
Edit contract/asyncapi.yaml. Register new component messages in the channel map, resolve every local $ref, state required fields once, and preserve symmetric meaning. For additive changes, describe the behavior of an older receiver.
Implement both receiving sides¶
Update the host decoder/model and each guest that serves the operation. If a guest deliberately lacks the capability, record that posture in docs/contract-coverage.md; do not leave the other direction implicit.
Regenerate the readable projection¶
scripts/docs-contract
The generated Markdown contains operations, messages, and x-commands. The documentation gate compares it byte-for-byte with a fresh projection.
Test the seam¶
Add fixtures that originate independently of the decoder under test. Run scripts/test-native, the host conformance suites, scripts/test-docs, and finally scripts/test-all. If the message is assembled across several C writes, add the explicit conformance fixture requested by the failing test.