Skip to content

Single-executable release binaries, installer, and self-update - #38

Open
nonam3e wants to merge 7 commits into
mainfrom
feat/binaries
Open

nonam3e wants to merge 7 commits into
mainfrom
feat/binaries

Conversation

@nonam3e

@nonam3e nonam3e commented Nov 13, 2026

Copy link
Copy Markdown

Ships zro as self-contained binaries alongside the npm package: a release pipeline,
a curl | bash installer, and in-binary self-update. The npm distribution is unchanged.

  • Build — scripts/build-sea.mjs bundles the CLI into the official (pinned,
    sha256-verified) Node 22 tarballs via postject for five platforms, inlining the version and platform at build time.
  • Release — on tag push, a matrix job builds and smoke-tests each binary; a final job zstd-compresses, writes checksum manifests, and attaches everything. One failed
    leg attaches a partial set instead of an empty release.
  • Install — install.sh reads the manifest, prefers the zstd asset, verifies
    sha256, installs to ~/.local/bin, and test-runs the binary before declaring success.
  • Self-update — zro update fetches the latest manifest, verifies the download,
    and atomically replaces the running executable; failures never touch the old binary.
    Up-to-date/newer-than-latest are no-ops; ZRO_UPDATE_BASE overrides the source.

Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>
Signed-off-by: nonam3e <timur@moonmath.ai>

@zro-inference zro-inference left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adds single-executable release binaries: a binaries matrix job in publish.yml (linux x64/musl/arm64, darwin arm64/x64 with --version smoke tests), scripts/build-sea.mjs plus release-manifest and shared helpers, a bundling/install.sh path, and a new src/selfupdate.ts for in-place self-update, with corresponding tests (args, install, release-manifest, selfupdate). Review coverage caveat: all four analysis specialists (correctness, security, test-coverage, adversarial) failed on this run — three with upstream 524 timeouts and one with a hard 1200s timeout — so no substantive findings were produced and this approval reflects lack of reported issues, not a verified clean pass. Notably unexamined by any specialist: checksum/signature verification and download-source trust in install.sh and src/selfupdate.ts, atomicity and rollback when replacing a running binary, and shell-quoting/uname-mapping edge cases in the installer. A re-review is recommended before relying on self-update in production.

JenClaude command reference

Reply with @MoonMathJen on this PR to trigger commands:

Command Example What it does
Re-review @MoonMathJen rereview Re-review after changes (full or scoped — see below)
Stop @MoonMathJen stop Cancel in-progress review
Stop + summarize @MoonMathJen stop and summarize Post partial findings so far
Focus specialty @MoonMathJen only security Review only the named specialty
Skip specialty @MoonMathJen skip test-coverage Review everything except the named specialty
Change model @MoonMathJen pr-review-model: kimi-k2.7-coder Run this review with a specific model
Add context @MoonMathJen focus on auth edge cases Free-text guidance passed to reviewers

Specialties: correctness, security, test-coverage, adversarial

Any text in the comment beyond a recognized command is passed to the reviewers as context. Use it to point them at areas that matter, explain what changed since the last review, or call out constraints (e.g. "skip generated files", "the auth flow is the riskiest part here"). Hard review rules still win over reviewer guidance.


JenClaude metrics: cost $0.000, time 39m 20s, tokens 43,691.

This branch has not been deployed

No deployments
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.

2 participants