Lockfile Schema
joy.lock is a TOML lockfile used for reproducibility and source provenance.
Source of truth: src/lockfile.rs and lockfile assembly logic in src/commands/build.rs.
Top-Level Fields
version = 1
manifest_hash = "<sha256>"
generated_by = "joy <version>"
[[packages]]
...
version: lockfile schema version (currently1)manifest_hash: hash used for stale-lock detectiongenerated_by: generator version stringpackages: resolved package entries
Package Entry Fields
Each [[packages]] entry includes:
- identity and resolution:
idsourcerequested_revrequested_requirement(optional)resolved_version(optional)resolved_commitresolved_ref(optional)
- source provenance:
registry(optional)source_package(optional)source_git(optional)source_path(optional)source_url(optional)source_checksum_sha256(optional, required for archive source)
- dependency/build metadata:
header_onlyheader_roots[]deps[]recipe(optional)metadata_source(optional)package_manifest_digest(optional)declared_deps_source(optional)abi_hashlibs[]linkage(optional)
Source Provenance Expectations
github: no extra provenance field requiredregistry: should includeregistrygit: should includesource_gitpath: should includesource_patharchive: should includesource_urlandsource_checksum_sha256
joy verify enforces source-specific provenance checks and checksum policy.
Lockfile Lifecycle
sync/build/runmay write or refresh lockfile based on lock mode flags.--lockedrejects drift.--update-lockforces refresh.--frozenimplies locked/offline behavior.
Workspace-routed commands use workspace lockfile semantics when invoked from workspace root with selected member routing.