Early Beskid work mixed README intent, compiler experiments, and informal design chat without a single enforceable contract surface.
Project inception decisions
Platform spec feature
Project inception decisions
Spec standingStandard
-
Normative spec text is the authority axis for observable language and platform behavior.
Context
Decision
The platform specification on Git
mainmust precede or accompany implementation that changes user-visible semantics. Tests and crates verify drift; they do not replace missing spec text.Consequences
Contributors file spec updates in the same change set as behavioral changes. CI content gates block Standard stubs.
Verification anchors
site/website/src/content/docs/platform-spec/;verify:trudoc --preset ci. -
Dependency composition is explicit, verifiable, and compiled—not a runtime DI container.
Context
C#-style framework IoC stacks hide wiring behind reflection and service locator patterns the project rejects (see compiler README).
Decision
IoC may exist only inside the Rust compiler host as compile-time composition. Beskid programs must not depend on a runtime DI framework or service locator for language features.
Consequences
Compiler mods and SDK surface read-only host composition; language-level
metaDI blocks are removed.Verification anchors
compiler/README.md; Dependency injection. -
Prefer compile-time generation and macros over opaque runtime reflection.
Context
Reflection-heavy stacks defer errors to runtime and obscure performance and ABI truth.
Decision
Language and compiler features should expose compile-time metaprogramming (mods, analyzers, codegen hooks) instead of encouraging runtime reflection as a default extension model.
Consequences
Compiler SDK and mods are AOT-oriented; diagnostic parity targets compile-time failure.
Verification anchors
Metaprogramming; compiler mod features under
compiler/compiler-mods/. -
Assembly-oriented output without CIL as the central execution contract.
Context
CIL-centric VMs lag language features and impose workaround layers the project avoids.
Decision
The reference platform must lower through Beskid-owned IR and native/JIT/AOT backends—not treat a portable IL stack as the primary execution contract.
Consequences
ABI, builtins, and runtime syscalls are versioned in execution specs; JIT and AOT share
beskid_abirevision.Verification anchors
-
Standard library implementation stays Beskid packages in the corelib submodule—not a parallel Rust std port.
Context
Splitting corelib into ad-hoc Rust crates would fork API truth from author-facing packages and pckg docs.
Decision
Canonical corelib sources must live under the
beskid_standard/corelibworkspace with pckg identity corelib. Tooling treats.beskid/docs/andapi.jsonas first-class.Consequences
Registry publish authority stays in corelib CI; compiler consumes and validates.
Verification anchors
-
The compiler is implemented in Rust; Beskid does not self-host the compiler implementation.
Context
Self-hosting before semantic stability would couple bootstrap pain to language churn.
Decision
The reference compiler must remain a Rust workspace. The canonical syntax model is generated into
Beskid.Compiler.*SDK sources from Rust AST reflection—not hand-maintained parallel syntax trees.Consequences
Mods extend analysis/codegen via SDK contracts; the host pipeline stays Rust-only.
Verification anchors
beskid_ast_reflect_gen; Syntax domain model generation. -
No URL version segments; normative truth tracks Git `main` and `lastReviewed`.
Context
URL-versioned spec sites drift from the implementation contributors actually ship.
Decision
Published platform-spec URLs must not embed version path segments. Maturity uses frontmatter
statusandlastReviewed; delivery bands (v0.x) describe scope, not alternate spec trees.Consequences
Release policy and site deploy track
main.Verification anchors
-
v1 concurrency uses `spawn`, fibers, and channels—not `async`/`await` keywords.
Context
Async/await state machines would delay shipping a inspectable fiber runtime and channel semantics.
Decision
spawnmust be the fiber introduction keyword.asyncandawaitmust be parse errors (reserved) until a future spec adds them. Cross-fiber communication must useChannel(and coordination primitives), not shared stacks.Consequences
Corelib concurrency package and execution scheduler specs realize this ADR.
Verification anchors
- No directly attached article pages for this node.
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).
What this feature specifies
Cross-cutting architecture decision records from Beskid project inception—platform authority, compiler host shape, corelib packaging, and language direction that span multiple domains.
Implementation anchors
- Governance: Specification authority and embedded decisions
- Historical intent:
compiler/README.md, informative Why Beskid Exists (non-normative; ADRs here are normative) - ADR files:
platform-spec/community/project-inception/adr/*.mdx
Contract statement
This feature records cross-cutting decisions made at or before public Beskid inception. Domain-specific features must defer here for platform-wide direction instead of restating the same rationale.
Verification and traceability
- Each row in
adr/is normative atstatus: Standardunless markedProposedorSuperseded. - Implementation domains must link inception
adrIdvalues from feature hubs when realizing these choices.
Decisions
Section titled “Decisions”No open decisions. Closed inception ADRs are listed under adr/ (reader ADRs tab)—D-INC-0001 through D-INC-0008.