DocsReference
#ADR 0005: factory0-* public on crates.io, fz-* private via git dependencies
Status: accepted, 2026-09-05
#Context
crates.io has no scopes and no private crates. Public crates must install with plain cargo add. Private crates must not require running a registry.
#Decision
- Open-source crates: prefix
factory0-, published to crates.io fromCratefield/harnesswith trusted publishing (GitHub OIDC). - Private crates: prefix
fz-, never published; consumed asfz-module-admin = { git = "ssh://[email protected]/Factory-Zero/harness-private", tag = "fz-module-admin-v0.3.0" }. - Version tags in the private repo follow
<crate>-v<semver>so one repo can carry many crates.
#Consequences
- The prefix tells you the visibility and where it comes from.
- The crates.io names
factory0-*must be reserved once (manual, by the owner); thefzbinary isfactory0-cli. - Venture CI needs an SSH deploy key or a fine-grained token with read access to
harness-privateonly when it uses a private module.
Mirrored from docs/adr/0005-crate-naming-and-distribution.md at b6f50cd. The harness is the source of truth: a correction goes there first.