Repository navigation
feat(aube): make the crate embeddable without the publish/DNS stack - #1069
Conversation
- gate the sigstore provenance/signing stack behind a new `publish` feature (default on) so library embedders can omit it - drop hickory-dns from aube-registry's default features; the aube binary re-enables it, embedders opt in — prevents it leaking into an embedder's build via feature unification through aube-resolver/aube-store - add `rustls`/`hickory-dns` feature forwards on the aube crate so it can be depended on with default-features = false, features = ["rustls"] Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 18 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Central YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR makes the
Confidence Score: 5/5Safe to merge — default standalone builds are behavior-equivalent, and the embed path is verified clean under RUSTFLAGS=-D warnings. All feature gates are applied consistently across module declarations, the enum variant, and both dispatch arms. The hickory-dns forwarding asymmetry noted in a prior review is resolved by directly listing reqwest/hickory-dns in the hickory-dns feature alongside aube-registry/hickory-dns. publish_provenance is only called from within publish.rs, so both modules gating together is complete with no missing sites. No files require special attention. Important Files Changed
Reviews (2): Last reviewed commit: "chore(aube): list reqwest/hickory-dns di..." | Re-trigger Greptile |
…ture Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Replaces the `aube add --global` subprocess with in-process `aube::embed::add`, so installing `npm:` tools needs no aube or npm binary — only node, to run the installed tools. The tool's install dir doubles as a throwaway project (seed package.json + .npmrc); aube installs into node_modules and its bin shims (which resolve relative to their own location) are exposed on PATH via list_bin_paths pointing at node_modules/.bin. - `auto` now always resolves to the embedded aube (it is compiled in), so get_dependencies drops the aube/npm edges — default `npm:` installs depend only on node. - `minimum_release_age`, `trust_policy_excludes`, and `allow_builds` flow through the seed package.json / .npmrc that aube's resolver reads. - The unreleased `npm.use_npm_view` setting is replaced by `npm.shell_out` (MISE_NPM_SHELL_OUT), which routes both metadata and installs through the npm CLI for setups needing npm-only config (cafile, client certs, token helpers). Requires aube 1.31 (aubepkg/aube#1069) for the embeddable, rustls-only, publish-gated crate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Summary
Follow-up to #1068, unblocking mise embedding aube's install path (
aube::embed::add) instead of shelling out to theaubebinary. Depending on theaubecrate as a library currently drags in two things an install-only embedder never needs; this makes both opt-out.publishfeature (default on) — gates the sigstore stackThe sigstore provenance/signing supply chain (
sigstore-sign/oidc/types+ambient-id, transitivelyx509-cert,sigstore-{bundle,crypto,merkle,rekor,tsa,tuf,trust-root}, etc.) is only used byaube publish— 2 files. It's now behind apublishfeature (indefault), so an embedder builds without it. TheCommands::PublishCLI variant, its dispatch arms, and the two command modules are#[cfg(feature = "publish")].hickory-dns out of aube-registry's default
reqwest's
hickory-dnscargo feature flips the default DNS resolver for every reqwest client in the final binary via feature unification. With it in aube-registry's defaults, an embedder pulling aube-registry transitively (throughaube-resolver/aube-store) silently gets hickory forced on — even if it carefully disabled it on its own direct dep. Fixed by droppinghickory-dnsfrom aube-registry's default (nowdefault = ["rustls"]); the aube binary re-enables it via the aube crate's default features, so standalone behavior is unchanged, and embedders opt in explicitly.aube crate TLS/DNS feature forwards
Adds
rustlsandhickory-dnsfeatures on theaubecrate that forward to reqwest / aube-registry / aube-util, so it can be depended on withdefault-features = false, features = ["rustls"].Verification
cargo build -p aube): unchanged — tree still contains sigstore, hickory-dns, ratatui, mimalloc (37 sigstore/hickory nodes). 665 lib tests pass.--no-default-features --features rustls): builds clean underRUSTFLAGS=-D warnings; tree contains 0 sigstore / hickory / ratatui / mimalloc nodes. clippy clean.BuiltArchive.unpacked_size, read only by publish) is#[cfg_attr(not(feature = "publish"), allow(dead_code))].Suggested CI addition (token lacks
workflowscope)Alongside the existing embed-shape check, add:
This PR was generated by an AI coding assistant (Claude Code).
Note
Low Risk
Cargo feature and cfg gating only; standalone
aubedefaults preserve prior behavior, with embed builds as the main behavioral surface change.Overview
Makes the
aubelibrary embeddable without dragging in publish/signing or forced Hickory DNS, so install-only hosts (e.g. mise) can depend onaubewithdefault-features = false, features = ["rustls"].A new
publishfeature (still on by default) gates the sigstore/ambient-iddependencies and wrapspublish/publish_provenanceplus allPublishCLI wiring in#[cfg(feature = "publish")].BuiltArchive.unpacked_sizeis allowed as dead code whenpublishis off.aube-registrydefaults drophickory-dns(nowdefault = ["rustls"]only) so transitive pulls do not flip reqwest’s DNS resolver for the whole binary via feature unification. Theaubecrate re-enables Hickory in its own defaults and adds explicitrustls/hickory-dnsfeatures that forward to reqwest,aube-registry, andaube-util.Reviewed by Cursor Bugbot for commit 812ad6b. Bugbot is set up for automated code reviews on this repo. Configure here.