Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Contracts and edge cases

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki
  • Single analysis entry — Project-scoped commands must not fork ad-hoc parsers that skip CompilationContext when a Project.proj is in scope.
  • Corelib always on — Host projects must resolve implicit Std / corelib; manifests must not opt out (noCorelib, useCorelib: false are parse errors in beskid_analysis projects/parser.rs).
  • Exit codes — Semantic errors on analyze must yield non-zero process exit; build/run must propagate linker/JIT failures without masking as warnings.
  • Pipeline truthfulness — Reported phase IDs must correspond to real beskid_pipeline stages; silent no-ops are forbidden for declared progress events.
  • Mod parity — Capability denial and generator round exhaustion must match LSP diagnostics (same codes, same severity).
SituationExpected behavior
Input is a .bd file outside any project rootFile-scoped commands work; project commands error with manifest discovery diagnostics
Missing Project.lock under strict policybuild/run fail with lock policy message before lowering
Mod artifact cache missbuild triggers AOT compile or reports cache policy failure; no partial host compile
Multiple workspace members--project / focused member selection must match LSP BESKID_WORKSPACE_MEMBER_FOR_META_DEFAULT semantics when set
--entrypoint on non-app targetRejected with stable CLI error (no silent default to main)
Corelib root only via envBESKID_CORELIB_ROOT and install layout fallbacks in resolver.rs apply before graph build

FFI link lines come from project.link on host manifests (see Project link libraries). build must pass resolved native libraries to the AOT linker when present; missing symbols fail at link time, not at runtime silently.