Lock alignment.
Flow and algorithm
Platform spec article
Flow and algorithm
Spec standingStandard
-
Hub authority
Context
Decision
Hub owns workspace and lock rules.
Consequences
CLI/IDE defer.
Verification anchors
resolution tests.
-
CLI lock mutations
Context
Resolver bypass risk.
Decision
fetch/lock must use CLI resolver.
Consequences
Matches VSC-0002.
Verification anchors
CLI integration.
- Contracts and edge cases Workspace and lockfile guarantees for tooling operators.
- Design model Conceptual model for workspace manifests, lockfiles, and materialized dependency roots.
- Examples Workspace and lockfile examples for tooling workflows.
- FAQ and troubleshooting Workspace and lockfile troubleshooting for tooling users.
- Flow and algorithm Lock synchronization, fetch, and update flows for workspace tooling.
- Verification and traceability Tests and traceability for workspace and lock tooling contracts.
0 revisions (git unavailable at build; counts may be empty)
No commits recorded for this path.
| Section id | Required | Found |
|---|---|---|
what-this-feature-specifies | yes | yes |
implementation-anchors | yes | yes |
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
beskid lock flow
Section titled “beskid lock flow”sequenceDiagram participant User participant CLI as beskid lock participant Analysis as beskid_analysis participant Disk as Project.lock User->>CLI: --project / member CLI->>Analysis: resolve graph (Warn on unresolved) Analysis->>Analysis: build CompilePlan + lock entries Analysis->>Disk: sync_project_lockfile CLI-->>User: synchronized message
- Resolve workspace member or standalone
Project.proj. - Walk dependencies (path + registry), applying workspace overrides.
- Materialize or verify package roots per policy.
- Serialize
ProjectLockfileV1beside the root manifest. - Skip write when on-disk lock already matches expected content.
beskid fetch / beskid update
Section titled “beskid fetch / beskid update”fetchresolves registry aliases to URLs (registry_urls), downloads packages viabeskid_pckg, and lays out materialized roots referenced by future lock lines.updatereapplies resolution with a stricter unresolved policy (typically failing on drift) and refreshes materialized trees.
Both commands must share graph construction with lock so CI and local machines produce comparable materialized_root paths.
LSP lock replay
Section titled “LSP lock replay”When the language server lacks an in-memory prepared workspace:
- Read
Project.lockfrom the project root. effective_roots_from_lockfileseeds dependency manifest paths.- Subsequent analysis uses the same roots until invalidation.
Corelib path injection during resolve
Section titled “Corelib path injection during resolve”While walking the DAG, host projects without explicit Std receive implicit corelib path attachment (default_corelib_dependency_path in resolver.rs). Workspace shards under compiler/corelib/packages/* must not create cyclic back-links to the aggregate beskid_corelib package.
compiler/crates/beskid_tests/src/analysis/pipeline/core.rs and projects/corelib/layout.rs exercise workspace + lock layouts.