Repository navigation
docs: document per-spec release scope and versioning - #405
Conversation
All specs in this repo share a single version number, but a release usually changes only one of them. This left full nodes and wallets advertising different versions with nothing explaining why: 0.10.3 and 0.10.4 changed only the wallet API, yet appeared to supersede the 0.10.2 that up-to-date full nodes correctly report, and consumers read the lower version as out of date. Document in the README which specs the repo publishes, which call advertises each, and the version each is currently at. Add a release scope section to api/release.md stating that each release changes exactly one spec, that release notes say which one, and that an implementation bumps the version it advertises only when a release changes the spec it implements. These rules apply from v0.10.4 onward. Also clarify starknet_specVersion, wallet_supportedWalletApi and wallet_supportedSpecs, so the distinction is stated where implementers read it rather than only in the release process doc. Editorial only: no schema, type or wire format changes, so no version bump. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
| "name": "starknet_specVersion", | ||
| "summary": "Returns the version of the Starknet JSON-RPC specification being used", | ||
| "summary": "Returns the version of the Starknet JSON-RPC specification implemented by this node", | ||
| "description": "Returns the version of the full node JSON-RPC specification that this node implements. This is the version of the most recent specification release that changed the full node JSON-RPC API.", |
There was a problem hiding this comment.
@odednaor , also looking at your general comment:
starknet_specVersion wording. (...) so the wire format is unchanged and 0.10.2 remains correct. The README scopes the rules to v0.10.4 onward, which covers this, but say the word if you'd rather the method text spell out that editorial changes don't count.
IMO it should be explicitly stated that editorial changes don't count. Otherwise there still is ambiguity. I.e. spec changes transparent to the node should not require the spec version to be bumped, because the implementation does not change.
There was a problem hiding this comment.
@CHr15F0x Do you have a suggestion on how to phrase it?
There was a problem hiding this comment.
How about:
Returns the version of the full node JSON-RPC specification that this node implements. This is the version of the most recent specification release that changed the full node JSON-RPC API in a way that required changes to the node implementation. Changes that are transparent to the node implementation, such as editorial changes or specification refactoring that does not require any implementation change, do not affect the reported version.
If this is the de facto expectation placed on consumers, then I’d opt for an explicit statement. |
@CHr15F0x, I removed this question from the discussion. As agreed, Full Nodes should only return the latest release that changed the JSON RPC spec. |
Address review feedback: state that the reported version tracks the most recent release that required a change to the node implementation, and that changes transparent to the implementation do not move it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Changes
The problem. All specs here share one version number, but a release usually changes only one of them.
0.10.3and0.10.4changed only the wallet API, yet appeared to supersede the0.10.2that up-to-date full nodes correctly report — so a load-balanced RPC serving both Pathfinder and Juno returned different spec versions, and consumers read the lower one as out of date.What this documents:
README.md— which specs this repo publishes, which call advertises each, and the version each is currently at.api/release.md— a Release Scope section: each release changes exactly one spec, release notes state which one, and an implementation bumps the version it advertises only when a release changes the spec it implements. Applies fromv0.10.4onward.starknet_specVersion,wallet_supportedWalletApi,wallet_supportedSpecs— the same distinction stated where implementers actually read it, rather than only in the release-process doc.Editorial only — no schema, type, or wire format changes, so no version bump. Same category as the
PROOF/PROOF_FACTSextraction in0.10.3.Checklist:
npm run validate_allnpm run format🤖 Generated with Claude Code