Roadmap search

Versions, deliverables, workstreams, tasks, and pages

Beskid

Jump to a Beskid service

Program assembly - Contracts and edge cases

articleStandard

src/content/docs/platform-spec/compiler/build-pipeline/program-assembly/contracts-and-edge-cases.mdx

import SpecArticleChrome from '@beskid/beskid-ui/platform-spec/SpecArticleChrome.astro';

<SpecArticleChrome />
  • Materialized-first — When PreparedProjectWorkspace exists, assembly roots must use materialized_source_root and dependency materialized_source_root entries, not pre-copy project trees.
  • Lockfile fallback (LSP) — When materialization did not run, Project.lock materialized_root paths may be used when directories exist.
  • max_units — Workspace scan must stop at the cap and report deterministically sorted paths.
  • No diagnostic filtering — Cross-module symbols must be visible to resolution; hosts must not drop E1105/E1201/E1301 solely because a path exists on disk.
  • use alias resolution — Import aliases must expand to prefetched module paths before value/type lookup; binding a use item as a callable namespace is forbidden (contract-as-namespace remains the only in-scope dotted-path fallback).
  • Mod rounds — After generator output changes imports, the host may re-run assembly within maxGeneratorRounds.