Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Design model

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

Tooling-facing contract for Workspace.proj, per-member Project.proj graphs, and Project.lock v1 files that pin materialized dependency roots. The compiler realizes graph resolution and lock sync in beskid_analysis::projects; this article defines what operators and CLI commands may assume without restating full manifest key tables.

flowchart TB
  WS[Workspace.proj]
  PM[Member Project.proj]
  Lock[Project.lock v1]
  Mat[Materialized package roots]
  WS --> PM
  PM --> Lock
  Lock --> Mat
  Mat --> Graph[Project DAG + CompilePlan]
ArtifactRole
Workspace.projDeclares member projects, registry URL aliases, optional dependency overrides
Project.projDeclares dependencies, targets, project kind (Host, Mod, Template) — see Project manifest contract
Project.lockRecords root_manifest, resolved dependency names, manifest paths, source_root, materialized_root
workspace.package.jsonOptional npm-style metadata for editor hints; not a compiler graph input

WorkspaceResolutionRules (in resolver.rs) carries:

  • workspace_root and workspace_members
  • overrides_by_dependency (version pins)
  • registry_aliases and registry_urls for beskid fetch / registry client

Registry dependencies resolve through beskid_pckg HTTP flows; path dependencies normalize under the consumer project root.

  • Header must be # Project.lock v1.
  • Each dependency line must include name, manifest, project, source_root, materialized_root.
  • beskid lock synchronizes lock content from the current CompilePlan (sync_project_lockfile in workflow.rs).
  • LSP may replay effective_roots_from_lockfile when a prepared workspace cache is absent.

The workspace block may include readme = "relative/path.md" with the same publishing behavior as project readmes (pack → root README.md in .bpk). Details live under Project manifest contract — design model.

  • Lock format + sync: compiler/crates/beskid_analysis/src/projects/workflow.rs
  • Graph resolver: compiler/crates/beskid_analysis/src/projects/graph/resolver.rs
  • CLI: compiler/crates/beskid_cli/src/commands/lock.rs, fetch.rs, update.rs
  • Lock replay: compiler/crates/beskid_analysis/src/projects/assembly/roots.rs