Current Canonical Runtime Pipeline
This document describes the currently supported Wist runtime composition flow in this repository. It is intentionally limited to behavior that exists today.
Canonical pipeline
- Dialect DSL compilation —
DialectDslCompilerparses.wistdialecttext into a typed dialect slice. - Language-definition translation —
WistFacadeLanguageDefinitionFactorytranslates requested module aliases, backend choice, security/intrinsic policy, ordering constraints and exclusions intoLanguageDefinition. - Canonical planning —
LanguageCompileris the only owner that closes feature dependencies, resolves contribution/capability providers, applies exclusions and order constraints, selects the runtime provider, and builds backend artifact routes. - Immutable plan — the result is one
LanguagePlancontaining the exact resolved features, contributions, provider identity and backend routes. - Runtime materialization —
LanguageRuntimebinds only the exact runtime graph selected by that plan to exact package/component sources. Materialization does not make new semantic selection decisions. - Execution or build — source follows the planned route
Source -> Syntax/AST -> Bytecode -> AIR -> optimizers/optional SSA -> backend artifact -> execution.
For the public Wist facade, WistEngine.Create performs steps 1–5 once and keeps the resulting LanguagePlan and LanguageRuntime for subsequent Evaluate, Validate and Compile calls.
Canonical runtime constraints
- There is no second Wist build-plan or selected-runtime-plan owner after
LanguageCompiler. - Feature dependency closure belongs to
LanguageCompiler; a dialect may request a high-level feature without manually repeating all of its required features. excludedirectives becomeLanguageDefinition.ExcludedContributions. If dependency closure requires an excluded contribution, planning fails closed instead of silently reactivating it.- Runtime component sources are provenance-checked against the exact package instances and manifests captured by
LanguagePlan. - Runtime materialization requires sources only for components that are actually part of the executable runtime graph; unrelated tooling-only planned contributions do not become runtime dependencies.
- Backend availability and route order come from
LanguagePlan, not from service-registration or reflection enumeration order. - Restricted host interop is enforced by the typed runtime policy and explicit allowed-assembly boundary.
Ownership boundary
UniversalToolchain.Language.Abstractionsowns typed language, feature, contribution, backend and artifact contracts.UniversalToolchain.FeatureSdkowns package descriptors and exact package registration identity.UniversalToolchain.LanguageSdkowns deterministic planning andLanguagePlanconstruction.UniversalToolchain.Runtimeowns exact plan verification, runtime materialization, lifecycle and route execution.UniversalToolchain.Wist.LanguagePacktranslates Wist configuration into generic language contracts and supplies Wist implementations for already-planned contributions.UniversalToolchain.Wistis the public facade over the canonical plan/runtime path.
S13 removes the former UniversalToolchain.Dialects.Integration runtime/profile host and UniversalToolchain.Dialects.Wist compatibility project entirely. S14 retires runtime-manifest emission, packaging and activation as runtime architecture. Surviving .toolchain.feature.json feature metadata is tooling/package metadata only; it is not an activation or composition authority.
What is intentionally retired
The final architecture does not use DialectBuildPlan, SelectedRuntimePlan, SelectedRuntimePlanResolver, ToolchainCompositionWorkflow, WistDialectExecutionWorkflow, WistDialectExecutionHost or WistDialectPlanFactory as production owners. Permanent architecture tests reject reintroduction of these retired paths/symbols.