03.5 Tree and resolution
Dependency DAG, build order, and debugging resolution without guessing."
Tree and resolution
Resolution is not magic—it is a DAG walk with a lockfile receipt.
Build lifecycle (deterministic sketch)
Section titled “Build lifecycle (deterministic sketch)”- Discover manifest (
App.bprojor workspace member). - Resolve dependency DAG.
- Sync
Project.lock. - Materialize dependencies under
obj/beskid. - Build dependencies before dependents.
accTitle: Dependency build order accDescr: Dependency A is required by dependency B, and dependency B is required by the application target. flowchart TD D1[Dep A Lib] --> D2[Dep B Lib] D2 --> APP[App target]
Text equivalent: Build dependency A before dependency B. Build dependency B before the application target.
Inspecting structure
Section titled “Inspecting structure”beskid treeon a.bdfile shows AST shape (parser-level).- Project graphs: use reference resolution and CLI project introspection flags documented on tree command where applicable to manifests.
When resolution fails, read the diagnostic first—path dependencies love typos (../Wrong).
Workspace members
Section titled “Workspace members”Multi-project repos resolve members via Workspace.bws (chapter 06). Single-project repos stay ignorant and happy.
Failure modes
Section titled “Failure modes”| Symptom | Likely cause |
|---|---|
| Unsupported provider in graph | Active git dependency; current materialization supports path and registry sources |
| Missing entry | target.entry not under project.root |
| Cycle | Circular path dependencies between projects |
| Stale lock | Changed manifest without lock/fetch |