docs: 0.x.y indefinitely; parity is behavioural, not a version number - #66
Merged
Conversation
Two policy decisions written down where they'll actually be read, because neither was recorded anywhere and both were about to be violated. 1. spawn-ts stays on 0.x.y indefinitely. There is no planned 1.0.0, so a MINOR bump is the breaking-change signal for the life of the project, not a pre-release convention. The CHANGELOG's "Pre-1.0, breaking changes bump the MINOR version" implied a 1.0 was coming and that the rule would expire with it; both halves were wrong. 2. spawn-ts's version line is its own, and deliberately NOT Go spawn's: 0.6.1 here against v0.97.0 there. Matching them would assert a feature correspondence that doesn't exist — and it would be the wrong thing to fix, because most of the gap isn't a gap. ~22,700 lines of Go pkg/ plus all 11,385 of lambda/ are the daemon/server/provisioning half of the architecture: the half spawn-ts writes spawn:* tags FOR rather than reimplements in a browser tab. So parity is a behavioural claim carrying documented divergences, audited per-command across five tiers in #57 — never a claim that two version strings agree. The README now points at the two live examples (the Elastic IP lookup in api.md, refusing an unhonourable plugin before launch in data-movement.md) and states the rule they follow: a divergence that isn't written down is a bug; one that is, is a design decision. The milestone was the concrete contradiction. `v1.0.0 — Feature parity` named a version that will never ship, so it's renamed to `v0.7.0 — Go parity (documented divergences)` (2 open / 7 closed, membership unchanged), and #57's body is updated to match — it opened by quoting the old name. CONTRIBUTING gains a Versioning section, since spawn-ts was the only one of the four -ts repos that said nothing about versioning at all, and it's the repo where the 1.0 expectation had taken root. Docs only; no source change. Verified: typecheck clean, 538 tests pass, every version number cited checks out against package.json and the actual Go releases, and both README doc anchors resolve to real headings.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two policy decisions, written down where they'll be read. Neither was recorded anywhere, and both were about to be violated.
1.
0.x.yindefinitelyThere is no planned 1.0.0, so a MINOR bump is the breaking-change signal for the life of the project — not a pre-release convention. The old CHANGELOG line ("Pre-1.0, breaking changes bump the MINOR version") implied a 1.0 was coming and that the rule would expire with it. Both halves were wrong.
2. The version line is spawn-ts's own, not Go
spawn's0.6.1 here against v0.97.0 there. Matching those numbers would assert a feature correspondence that doesn't exist — and it would be the wrong thing to fix, because most of the gap isn't a gap. Roughly 22,700 lines of Go
pkg/plus all 11,385 oflambda/are the daemon/server/provisioning half of the architecture: the half spawn-ts writesspawn:*tags for rather than reimplements in a browser tab.So parity is a behavioural claim carrying documented divergences, audited per-command across five tiers in #57 — never a claim that two version strings agree. The README now points at the two live examples and states the rule they follow:
Those examples are the Elastic IP lookup (api.md — Go's
GetInstanceElasticIPreturnsnil, nilon any API error, making a missing permission indistinguishable from a clean bill of health) and refusing an unhonourable plugin before launch (data-movement.md — Go parks it atStatusWaitingForPushon the box instead).The concrete contradiction
The milestone.
v1.0.0 — Feature paritynamed a version that will never ship, so it's renamedv0.7.0 — Go parity (documented divergences)— 2 open / 7 closed, membership unchanged. #57's body opened by quoting the old name, so it's updated to match.CONTRIBUTING.mdgains a Versioning section: spawn-ts was the only one of the four-tsrepos that said nothing about versioning at all, and it's the repo where the 1.0 expectation had taken root.Companion PRs
Same policy, per-repo wording: truffle-ts#45, lagotto-ts#9, advisor-ts#5. advisor-ts's differs on purpose — it has no Go original, so it makes no parity claim, and saying so keeps a reader from inferring a missing audit where there's nothing to audit against.
Verification
Docs only; no source change.
npm run typecheckclean, 538 tests pass. Every version number cited checks out againstpackage.jsonand the actual Go releases (gh release list), and both README doc anchors resolve to real headings — a broken anchor would undercut the "checkable" claim the paragraph makes.Two
pre-1.0mentions survive in truffle-ts/lagotto-ts, both inside already-shipped release entries. Those are the historical record of what was published and aren't rewritten.