You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Package metadata is declared inconsistently across the workspace's Cargo.toml files. There is no single source of truth for version, edition, authors, license, or publish, which makes routine maintenance (e.g. a version bump) error-prone and leaves publishing unguarded.
Current state
Six of the eight crates under crates/ inherit edition, version, authors, and license from [workspace.package] but notpublish, and they list the keys in an inconsistent order.
crates/edgezero-adapter/Cargo.toml and crates/edgezero-cli/Cargo.toml are outliers: they hardcode version = "0.1.0" and edition = "2021" and declare no authors at all. A version bump would have to be applied in multiple places.
publish is not defined anywhere in the root [workspace.package], so every crate defaults to publishable even though nothing in CI publishes them. An accidental cargo publish is not guarded against.
The separate examples/app-demo workspace only defines license in its [workspace.package]; its six crates each repeat version, edition, and publish = false.
The edgezero new scaffolding templates generate a root Cargo.toml with no [workspace.package] section at all, so every generated crate hardcodes version / edition / publish.
Desired outcome
Define publish = false once in [workspace.package] (both workspaces, and in the generated project template), and have every crate declare exactly:
All eight crates under crates/ inherit those five fields via { workspace = true }, in a consistent order, with no hardcoded version / edition / authors.
examples/app-demo's [workspace.package] defines the same fields and all six of its crates inherit them.
The edgezero new scaffolding templates emit a root [workspace.package] section and generated crates inherit from it.
cargo test --workspace --all-targets, cargo fmt --all -- --check, and cargo clippy --workspace --all-targets --all-features -- -D warnings all pass; edgezero new output still builds.
Heads-up that the scope of PR #322 has grown beyond this issue's original description, so the two stay in sync:
Workspace package inheritance (this issue) — all crates inherit authors / edition / license / publish / version, in both workspaces and in the edgezero new templates.
description on every crate — only 2 of 20 had one; the other 18 now do, with a canonical [package] key order.
Rust edition 2024 migration — edition = "2024" in both workspaces and the scaffolding template (Rust 1.95 is well past the 1.85 minimum).
The notable knock-on from (3): std::env::set_var / remove_var are unsafe in edition 2024. There were 34 test-only call sites across five crates, all inside near-identical copy-pasted RAII guards. Rather than scattering #[expect(unsafe_code)] across five crates, the PR adds edgezero_core::test_env (behind the existing test-utils feature) with shared EnvOverride / PathPrepend guards and deletes the five duplicates — leaving exactly one #[expect(unsafe_code)] in the workspace, in a file that never ships in a production build.
This issue's "Done when" criteria are all still met; PR #322 just does more. It will close this issue on merge.
Activity
aram356 commentedon Jul 13, 2026
Heads-up that the scope of PR #322 has grown beyond this issue's original description, so the two stay in sync:
authors/edition/license/publish/version, in both workspaces and in theedgezero newtemplates.descriptionon every crate — only 2 of 20 had one; the other 18 now do, with a canonical[package]key order.edition = "2024"in both workspaces and the scaffolding template (Rust 1.95 is well past the 1.85 minimum).The notable knock-on from (3):
std::env::set_var/remove_varareunsafein edition 2024. There were 34 test-only call sites across five crates, all inside near-identical copy-pasted RAII guards. Rather than scattering#[expect(unsafe_code)]across five crates, the PR addsedgezero_core::test_env(behind the existingtest-utilsfeature) with sharedEnvOverride/PathPrependguards and deletes the five duplicates — leaving exactly one#[expect(unsafe_code)]in the workspace, in a file that never ships in a production build.This issue's "Done when" criteria are all still met; PR #322 just does more. It will close this issue on merge.