Versioning Policy
Status: alpha policy. This file describes how breaking changes should be labeled before a stable release exists.
Spec Versions
The current spec family is v1 in filenames and binding identifiers. Until the first stable tag, v1 means the first proposal family, not a production-stable contract.
Breaking wire changes before stability should update vectors, schemas, package minor/pre-release versions, and the affected docs in the same change.
Package Versions
Alpha packages use semver prereleases:
0.1.0-alpha.N
Rules:
- increment
Nfor each alpha publish; - keep internal package dependency versions exact;
- publish alpha packages with the
alphadist-tag; - do not intentionally promote or advertise tagless/
latestinstalls until the public spec and API are stable enough for normal semver expectations.
Template IDs
Template IDs identify covenant families. The current escrow template id is:
kaspa-x402-escrow-v1
Change the template id when the script source, argument layout, successor-output rules, hash commitments, or claim/refund semantics change in a way that makes old and new channel states incompatible.
Domain Tags
Domain tags version signed preimages and hash scopes. Changing a preimage layout or signed meaning requires a new domain tag.
Current examples include:
kaspa:x402:escrow-voucher:v1
kaspa:x402:channel:v1
Vector Sets
Vectors are part of the compatibility surface. Any change to canonical JSON, header bytes, digest preimages, transaction ids, sighashes, transaction hashes, compute-budget assumptions, or stable error identifiers must update the related vectors in the same change.
Network Strings
The supported network strings are:
kaspa:testnet-10
kaspa:mainnet
kaspa:mainnet is a reserved profile name in the draft spec. It is not a readiness claim.
Source: /docs/versioning-policy.md