Substantive changes to the Concordia Protocol (new message types, offer shapes, state-machine transitions, attestation semantics, bridge contracts, or any change to the wire format) go through a lightweight RFC (Request For Comments) process so the design and its tradeoffs are recorded before code lands.
Small bug fixes, documentation edits, and internal refactors do not need an RFC. Open a normal pull request for those. When in doubt, open an issue first and a maintainer will tell you whether an RFC is warranted.
NNNN-short-title.md, where NNNN is the next unused four-digit number
(zero-padded, e.g. 0001-conditional-offer-revocation.md).An RFC moves through these states. Record the current state in the Status
field of the RFC’s front matter.
Superseded RFCs stay in this directory for the historical record; mark them
Superseded by NNNN in the Status field.
# RFC NNNN: <short title>
- **Status:** Draft
- **Author(s):** <name or handle>
- **Created:** YYYY-MM-DD
- **SPEC sections touched:** <e.g. SPEC 4.2, 9.6>
## Summary
One paragraph: what does this change, in plain terms?
## Motivation
What problem does this solve? Who hits it, and how often? What does the
protocol get wrong or fail to express today? Why is the status quo not good
enough?
## Design
The proposed change in detail. Cover the wire format, message/offer/state
semantics, validation rules, and any backward-compatibility or migration
concerns. Include concrete examples. Note the security and privacy
implications: Concordia attestations must never carry raw deal terms, and any
new signed surface must specify its canonical-serialization and verification
rules.
## Alternatives
Other approaches considered and why they were not chosen. "Do nothing" is a
valid alternative to weigh.
## Open Questions
Anything unresolved that reviewers should weigh in on.