Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Flow and algorithm

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki
sequenceDiagram
  participant CLI as CLI or LSP
  participant Ctx as CompilationContext
  participant Res as resolve_dependencies
  participant Core as beskid_corelib
  CLI->>Ctx: resolve Project.proj
  Ctx->>Res: walk consumer dependencies
  alt host without explicit Std
    Res->>Core: attach_path_dependency (implicit)
  end
  Res-->>Ctx: DAG + has_std flag
  Ctx->>Ctx: CompilePlan for host target
  1. Load consumer ProjectManifest.
  2. For each declared dependency, attach path or registry materialization per Workspace and lock contracts.
  3. If consumer is a host project, not a corelib shard, and lacks Std, call default_corelib_dependency_path() and attach as path dependency.
  4. Recurse into corelib aggregate and its workspace package shards (foundation, runtime, console, compiler-sdk).
  5. Build CompilePlan; semantic pipeline resolves symbols across all assemblies.

BESKID_CORELIB_ROOT may be the aggregate package directory or the parent workspace root (nested beskid_corelib/Project.proj detection in corelib_aggregate_project_dir).

FailureStage
Corelib root not foundGraph validation — manifest band diagnostics
Cycle via shard back-linkPrevented by is_corelib_workspace_shard_manifest guard
Opt-out manifest keysStructural parse error before graph

compiler/crates/beskid_tests/src/projects/corelib/compile.rs and mod.rs assert compile success with implicit injection; layout tests ensure workspace shards do not create cycles.