03.1 Project manifest
Project.proj blocks—project identity, source root, targets, and path dependencies.
Project manifest
Project.proj is HCL-like blocks parsed by Beskid tooling—not full Terraform HCL, not JSON with extra steps. One file, explicit intent.
Minimal shape
Section titled “Minimal shape”MyProject/├── Project.proj├── Src/│ └── Main.bd├── obj/│ └── beskid/└── Project.lockproject { name = "MyApp" version = "0.1.0" root = "Src" root_namespace = "Company.Product"}
target "App" { kind = App entry = "Main.bd"}
dependency "Std" { source = path path = "../Std"}Block roles
Section titled “Block roles”project { ... }— identity, version, source root (root, defaultSrc), optionalroot_namespace(metadata for package namespace conventions; does not change file-to-module mapping).target "<name>" { ... }— buildable unit (kind,entry).dependency "<name>" { ... }— edge in the dependency graph (source, plus provider fields).
Provider reality (v1)
Section titled “Provider reality (v1)”Path dependencies are the enabled provider. git and registry may appear in schema for forward compatibility but are provider-disabled in active graphs—do not plan your startup on them until the spec says otherwise.
Validation expectations
Section titled “Validation expectations”Exactly one project block, at least one target, unique labels, entries resolvable under project.root. Details: manifest reference and project manifest contract.