Build and run workflow
Current project resolution, lock, materialization, and command stages.
Build and run workflow
This reference describes the shared project workflow used by run, clif, analyze, build, and test. Use Dependencies and locks for an executable procedure.
- Single project root (
App.bproj) plus transitive dependencies. - Path and registry dependencies.
- Git dependencies are parsed but are not materialized in the current workflow.
Required lifecycle
Section titled “Required lifecycle”- Discover project manifest.
- Resolve dependency DAG.
- Validate provider scope.
- Sync
Project.lock. - Materialize dependency sources under
obj/beskid. - Project compile-unit projection in deterministic dependency-first order.
- Command execution (
run,clif,analyze).
Commands must not skip stages.
Directory layout
Section titled “Directory layout”obj/beskid/deps/src/- materialized dependency source trees.obj/beskid/build/- build outputs by profile and target.obj/beskid/state/- resolver/materialization metadata.
Materialization policy
Section titled “Materialization policy”- Copy dependency files from source roots into
obj/beskid/deps/src/<PackageId>/. - Copy local source when it is newer than the materialized file.
- Download an active registry artifact and extract it under the dependency materialization root.
- Compilation consumes materialized roots, not raw dependency paths.
Determinism rules
Section titled “Determinism rules”- Dependency order is deterministic and dependency-first.
- Tie-break on same rank: canonical manifest path lexical order.
- Package identity is canonicalized by manifest path and dependency source identity.
Failure policy
Section titled “Failure policy”- Build and run fail fast on unresolved dependencies.
- Git sources fail at resolution stage.
- A missing or invalid registry result prevents a usable dependency from entering the prepared workspace.
- Lock or materialization errors fail before compile.
Diagnostics contract
Section titled “Diagnostics contract”Project workflow diagnostics use shared analysis diagnostics infrastructure and stable error codes.
Error codes
Section titled “Error codes”E3001: missingApp.bprojat ‘{path}’E3006: dependency ‘{dependency}’ manifest not found at {path}E3007: dependency cycle detected: {chain}E3008: unresolved external dependencies: {details}E3011: unsupported dependency source ‘{source}’E3022: lockfile is out of date for project ‘{project}’E3023: lockfile update forbidden in frozen modeE3031: failed to copy dependency source ‘{from}’ -> ‘{to}’: {source}E3033: build cannot start because dependencies were not materialized
CLI lock behavior
Section titled “CLI lock behavior”- Default mode creates or updates
Project.lockwhen the resolved entries change. --frozenforbids lockfile updates.--lockedrequires an existing lockfile and forbids changes.
Interop alignment
Section titled “Interop alignment”Interop migration must use the same lifecycle. Std is resolved as a regular dependency and loaded from materialized source roots.