Skip to content

fix(dev): single-pass install build — capture artifact JSON from the real build - #609

Merged
githubrobbi merged 1 commit into
mainfrom
fix/installer-single-pass-build
Aug 22, 2026
Merged

fix(dev): single-pass install build — capture artifact JSON from the real build#609
githubrobbi merged 1 commit into
mainfrom
fix/installer-single-pass-build

Conversation

@githubrobbi

Copy link
Copy Markdown
Collaborator

The installer's binary-discovery re-ran the whole build with --message-format=json, assuming a free cache walk. On winbox, AV/sync tools touching fresh artifacts between the two passes invalidated cargo's fingerprints and turned discovery into a full second compile (~6 min doubled).

The premise was wrong anyway: cargo prints human status/diagnostics on stderr; JSON mode only changes stdout. One --message-format=json-render-diagnostics invocation now gives the operator identical live progress while the artifact stream is drained concurrently (no pipe-buffer deadlock) and parsed for the authoritative executable list. Second invocation — and the invalidation window — gone.

Tooling-only change (scripts/dev/install-bins.rs): no version bump, no release — main just gets the new trick. Validated end-to-end via just use-local: single build, 24 binaries discovered and installed.

…the real build

install-bins.rs used to build twice: the real build for the operator's
progress output, then an identical re-run with --message-format=json to
'walk the cache for free' and discover the binary list. That second pass
is only free on a quiescent filesystem: on winbox (2026-08-23) AV/sync
tools touched the fresh artifacts between the passes, invalidated the
fingerprints, and turned the discovery pass into a full second compile.

The premise was wrong anyway — cargo always prints its human status and
diagnostics on stderr, and --message-format=json-render-diagnostics
only changes stdout. One invocation now streams the same live progress
to the operator while the artifact JSON is drained concurrently from
stdout (actively, so a filled pipe buffer can never deadlock the build)
and parsed for the authoritative executable list. Discovery semantics
unchanged (executable:null libraries skipped, sort/dedup); the second
cargo invocation — and the invalidation window with it — is gone.

Validated end-to-end via just use-local: 24 binaries discovered and
installed from the single pass.
@githubrobbi
githubrobbi enabled auto-merge August 22, 2026 20:40
@githubrobbi
githubrobbi added this pull request to the merge queue Aug 22, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 22, 2026
@githubrobbi
githubrobbi added this pull request to the merge queue Aug 22, 2026
Merged via the queue into main with commit f20ebcc Aug 22, 2026
21 checks passed
@githubrobbi
githubrobbi deleted the fix/installer-single-pass-build branch August 22, 2026 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant