Building a release in parallel
0.2.7 was built as five feature bundles, a stack of four workflow features and two early fixes, with a merge coordinator. What made it fast, where the pull requests collided, and what we'd do the same way again.
0.2.7 was built in parallel. The work was split into five feature bundles, a stack of four workflow features and two early fixes, with a merge coordinator who reviewed each pull request, ran the full suite on main after merges, and decided the order. From the first pull request opened to the last one merged took a little under four hours.
The pull requests, opened to merged
Each lane is one pull request's life on GitHub, from opened to merged (UTC, 20 to 21 October). Most work started before its pull request was opened. Click a lane for what it did.
Early fix: a reply resumed after a restart stays in one bubble and keeps its result.
Passing tests on main
The coordinator ran the full suite on main after each wave of merges. Some runs had one flaky test that passed on a rerun; this chart counts passes only. #61 replaced a few tests with one check that other devices are refused.
What worked, and what hurt
The three media pull requests touched the agent loop in separate places and merged in any order.
#37 and #58 both changed the agent loop, so one waited for the other and rebased.
Kept small by: Split work by file ownership, not by feature size.Each workflow feature showed only its own diff.
After each squash merge, the next one retargeted to main and had conflicts to settle.
Kept small by: Stack only when a feature really needs the one below it.A crash on high ports (#59) and copies of QuorX signing each other out (#57).
Process-count tests sometimes failed with several test runs on one computer, then passed alone.
Kept small by: Kept strict, documented, and rerun on a quiet machine.Risky platform work waited
The macOS and Linux installers (#55) were ready to review, but their publish and promote steps had never run end to end. A release-pipeline change is the kind that breaks everyone at once, so they moved to 0.2.8.
The longer version is in docs/research/parallel-release.md.