Stop building the standalone constructd binary#399
Merged
Conversation
The daemon has had no unique role since #396/#398: `construct daemon run` runs it and the TUI auto-starts one. `constructd` was just a thin alias, so drop it — the daemon crate (`agentd`) is now library-only and the daemon ships solely inside `construct`. - crates/daemon: remove the `[[bin]] constructd` target and delete the `main.rs` shim; the crate is lib-only now. - e2e harness: spawn `construct daemon run` (and copy `construct` as the relocatable daemon binary) instead of `constructd run`. - scripts/test_agentd.sh, scripts/smoke.sh: launch via `construct daemon run`. - release.yml + install.sh: drop `constructd` from BINS (and `-p agentd` from the release build). The release tarball KEEPS its historical `constructd-<target>` asset name — already-released install.sh / `construct upgrade` builds fetch that exact name, so renaming it would break the download URL. - Docs/spec/comments updated; spec 0026 records that there is no standalone daemon binary and notes the one-time upgrade caveat below. Upgrade caveat (one-time): an `install.sh` baked into an *older* binary lists `constructd` in its `BINS` and aborts when it's absent from the new tarball, so `construct upgrade` across this single version hop fails — re-run the install one-liner instead. New installs and subsequent upgrades are unaffected. Verified: `cargo build --workspace` produces no `constructd`; `cargo test -p agentd` (66) and the e2e restart suite (3, incl. `restart_reloads_updated_binary`) pass with the daemon spawned as `construct daemon run`.
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.
What
Drops the standalone
constructdbinary. Since #396 (construct daemon run) and #398 (TUI auto-start),constructdwas just a thin alias with no unique role. The daemon crate (agentd) is now library-only and the daemon ships solely insideconstruct.How
crates/daemon: removed the[[bin]] constructdtarget and deleted themain.rsshim — lib-only crate now.crates/e2e/src/lib.rs): spawnsconstruct daemon runand copiesconstructas the relocatable daemon binary (instead ofconstructd run).test_agentd.sh,smoke.sh): launch the daemon viaconstruct daemon run.constructdfromBINS(and-p agentdfrom the release build). The release tarball keeps its historicalconstructd-<target>asset name — already-releasedinstall.sh/construct upgradebuilds fetch that exact name, so renaming it would break the download URL.specs/0026now states there is no standalone daemon binary.construct upgraderuns theinstall.shbaked into the already-installed binary, which copies every name in itsBINS— includingconstructd— from the new tarball and aborts if one is missing (install.sh is all-or-nothing). So upgrading from a pre-this-change version into this version viaconstruct upgradewill fail with "binary 'constructd' missing from archive".Workaround for that single hop: re-run the install one-liner (which uses the new, constructd-less
install.sh). New installs and all subsequent upgrades are unaffected. I kept the tarball asset name asconstructd-<target>.tar.gzspecifically so the download still resolves; only the in-archive binary set changed.If you'd rather avoid even that one-hop break, the alternative is a transition release that ships
constructdas a copy for one version — happy to do that instead; flagging so it's a conscious choice.Verification
cargo build --workspace→ producesconstruct,construct-mcp, 5construct-adapter-*, and noconstructd✓cargo test -p agentd→ 66 passed ✓cargo test -p agentd-e2e --test restart→ 3 passed, incl.restart_reloads_updated_binary(swaps the relocatableconstructbinary and verifies the daemon re-execs it) ✓🤖 Generated with Claude Code