Conversation
Contributor
|
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 00:49
7163b01 to
a28c85e
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 00:50
5158ec7 to
93a22e8
Compare
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 01:20
a28c85e to
d47013e
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 01:22
93a22e8 to
ea8b853
Compare
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 17:33
d47013e to
471fcd7
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 17:34
ea8b853 to
b68490d
Compare
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 17:45
471fcd7 to
5de84fb
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 17:46
b68490d to
06e1404
Compare
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 17:55
5de84fb to
a6eeb59
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 17:55
06e1404 to
f11bdac
Compare
gnidan
force-pushed
the
architect-identification
branch
from
September 30, 2026 18:06
a6eeb59 to
c61187c
Compare
gnidan
force-pushed
the
release-tooling-split
branch
from
September 30, 2026 18:06
f11bdac to
750261b
Compare
This branch has not been deployed
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.
Stacked on #305: the base is
architect-identification, so this diff shows only the refactor. After #305 merges, this rebases ontomainwith nothing to resolve, since the two touch disjoint commits.bin/version.tshad grown to eight concerns in one file: the release vocabulary, workspace reading, git and Lerna plumbing, changelog parsing, the version plan and its guards, the pre-flight checks, the writes, and the report. At the same timebin/already had a shared model, in the wrong place. Six of the eight scripts imported one frompublish-tagged.ts:readWorkspacesalone had five import sites,check-changelog.tsdepended on the publisher, andpacklist.tswas a library nothing executed.version.tscarried its own copy of the same model.The nouns are now modules in
bin/release/, shared by every script that needs them:policy.ts: the vocabulary (keywords, identifiers, dist-tags, and the release-tag convention:releaseTag,parseReleaseTag,isReleaseTag)git.ts:run,status,tryRun, with no release knowledgeworkspaces.ts: oneWorkspacemodel that keeps dependency kinds apart and derivesdependenciesexactly as before, plusrewriteManifestandtopoSortlerna.ts,changelog.ts,packlist.ts(moved whole), andschema-versions.ts(from format: identify info, resources and program objects with their schema and specification version #305)plan.ts: the moves and the judgements about themapply.ts: the writes, thePublishcommit, the tags and the undo adviceNo module imports a script, and no script imports another script.
The phases are types.
bin/version.tsnow reads assurveyRelease(the only read) →decide(pure, returns aPlanthat holds the exact bytes to write) →check(pure, returns the errors and findings) →report→applyRelease(the only write). Because the world enters through one reader, the pre-flight findings, the nearest-tag check and the release-tags-at-HEADexception now have tests from hand-built surveys. They had none before, because they shelled out.applyReleasehas its first test too, against a scratch repository, including a failure part-way through tagging.bin/is now type-checked:yarn typecheck:bin, with a CI step besideyarn typecheck. The one error it found in the existing code (a narrowing inparseArgs) is fixed in the first commit.Behavior is unchanged. A dry run of
bin/version.tsgives byte-identical output and exit codes against the pre-refactor script forprerelease,patch,minor --all,major --alland a dirty tree. Every commit passes thebintests and the type-check on its own.Two things are left as they were, on purpose:
@ethdebug/<name>@…tag exists, as before.publish-tagged.tsstill counts only semver-valid tags when it picks a dist-tag, as before. No tag in the repository makes the two differ.package.jsonhas notypescriptdevDependency, sotypecheck:binuses the hoistedtsc. Pinning it would change hoisting, which is out of scope here.