Platform-spec domains multiplied without a single place for “what valid Beskid code means,” inviting duplicate type and evaluation tables in compiler and tooling chapters.
Specification authority and embedded decisions
Platform spec feature
Specification authority and embedded decisions
Spec standingStandard
-
User-visible semantics are normative only under language-meta unless a documented cross-domain exception applies.
Context
Decision
Language law — syntax, types, evaluation, contracts, memory, and cross-cutting language rules — must be defined only under Language meta, except where another domain page declares an explicit cross-domain exception and links to the owning language-meta chapter.
Consequences
New language semantics start in language-meta; implementation domains link back instead of redefining tables.
Verification anchors
packages/trudoc/src/verify/platform-spec-content.ts;cd site/website && bun run verify:trudoc -- --preset ci. -
Compiler, execution, core-library, and tooling realize language law without duplicating normative semantics.
Context
Pipeline and host details were written as if they owned user-visible meaning, overlapping language-meta chapters.
Decision
Compiler, Execution, Core library, and Tooling specify how the reference platform realizes language-meta. They must not redefine semantics already owned there; they must defer with
relatedTopics(for exampledefers-to,implements) instead of duplicating normative key tables.Consequences
Classification happens before authoring: “what does valid code mean?” → language-meta first; crates and phases link back.
Verification anchors
relatedTopicsfrontmatter validation inverify:trudoc --preset ci. -
Observable behavior changes ship with normative spec updates; tests verify drift but do not replace missing contract text.
Context
README intent and crate behavior diverged when implementation shipped without a matching platform-spec change set.
Decision
Implementation that alters observable language or platform behavior must be preceded or accompanied by normative spec updates. The spec is the authority; tests and crates are verification anchors, not substitutes for missing contract text. Cross-cutting inception record: D-INC-0001.
Consequences
Contributors pair spec and code in one change set; CI content gates block Standard stubs.
Verification anchors
Project inception ADR 0001;
verify:platform-spec-content. -
Standard features publish adr/ with specLevel adr, stable adrId, and Context/Decision/Consequences sections.
Context
Monolithic
decisions-recordarticles and hub prose duplicated the same choices without a stable identifier or reader ADRs tab.Decision
Each Standard feature must publish closed choices under
adr/as one file per decision (specLevel: adr, stableadrId,adrStatus,adrDate). Body must include## Context,## Decision,## Consequences; add## Verification anchorswhen testable. Legacydecisions-record.mdxand hub## Decisionssummaries remain valid during migration; new work must useadr/. Inception cross-cutting ADRs stay under Project inception.Consequences
Superseded ADRs set
supersedesAdror link replacements in Consequences with a Git revision note. Hub## Decisionssummarizes byadrIdonly—no full ADR prose duplication.Verification anchors
checkAdrSectionsandcheckStandardFeatureDecisionsinpackages/trudoc/src/verify/platform-spec-content.ts. -
Standard pages are enforceable contracts; Proposed pages must not be cited as language law.
Context
Standard pages shipped with circular stubs or without decisions, while readers treated every platform-spec URL as enforceable law.
Decision
statusMeaning Requirements Proposed Incomplete or unstable May omit full verification anchors; must not be cited as enforceable language law in conformance arguments Standard Enforceable platform contract Must include normative MUST/SHOULD/MAY prose, verification anchors, and hub ## Decisions(or linkeddecisions-record)Any Standard page failing content gates (circular canon stubs, placeholder-only bundles, missing decisions) must downgrade to Proposed until restored.
Consequences
Maturity is explicit in frontmatter; CI strict mode can fail scaffold Standard pages.
Verification anchors
verify:platform-spec-contentwith--strict;LANGUAGE_META_CIRCULAR_CANON_ALLOWLISTfor tracked exceptions.
- 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 | no | no |
implementation-anchors | no | no |
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
Normative platform contract
Section titled “Normative platform contract”- Language law — User-visible semantics (syntax, types, evaluation, contracts, memory, and cross-cutting language rules) must be defined only under the Language meta domain, except where another domain page explicitly declares a cross-domain exception and links to the owning language-meta chapter.
- Implementation law — The Compiler, Execution, Core library, and Tooling domains specify how the reference platform realizes language-meta. They must not redefine semantics already owned by language-meta; they must defer with
relatedTopics(for exampledefers-to,implements) instead of duplicating normative key tables. - Spec leads code — Implementation changes that alter observable language or platform behavior must be preceded or accompanied by normative spec updates. The spec is the authority; tests and crates are verification anchors, not a substitute for missing contract text.
- Architecture decision records (ADRs) — Each Standard feature must publish closed choices under
adr/as one file per decision (specLevel: adr, stableadrId). The feature reader exposes an ADRs tab with expandable Context / Decision / Consequences detail. Legacydecisions-record.mdxarticles and hub## Decisionssummaries remain valid during migration but new work must useadr/. Cross-cutting inception decisions live under Project inception.
Language law vs implementation domains
Section titled “Language law vs implementation domains”| Concern | Owning surface | Realization surfaces |
|---|---|---|
| What programs mean (types, control flow, contracts) | language-meta | compiler phases, execution runtime |
| Author-facing manifests and CLI | tooling (authoring) | compiler resolution (graph, cycles) |
| Standard library API shape | core-library | execution syscalls, compiler lowering |
| Diagnostics users see | language-meta + compiler registry | tooling/LSP presentation |
When adding a feature, classify the topic before writing: if a reader asking “what does valid Beskid code mean?” would need the answer, it belongs in language-meta first; pipeline, crate, or host details belong in implementation domains with links back.
Maturity — Proposed vs Standard
Section titled “Maturity — Proposed vs Standard”status | Meaning | Requirements |
|---|---|---|
| Proposed | Incomplete, unstable, or under active design | May omit full verification anchors; must not be cited as enforceable language law in conformance arguments |
| Standard | Enforceable platform contract | Must include normative MUST/SHOULD/MAY prose, verification anchors (tests, crates, or explicit registry links), and ## Decisions on the feature hub (or a linked decisions-record article) |
Any Standard page that fails content gates (circular “canonical chapter” stubs, placeholder-only article bundles, missing decisions) must be downgraded to Proposed until restored.
ADR file contract
Section titled “ADR file contract”Each ADR file at platform-spec/<domain>/<area>/<feature>/adr/<slug>.mdx must use:
| Field | Rule |
|---|---|
specLevel | adr |
adrId | Stable identifier (for example D-INC-0001, D-CORE-CONC-0003) |
adrStatus | Accepted, Superseded, or Proposed |
adrDate | ISO date when the decision closed (inception ADRs should reflect historical dates) |
| Body | ## Context, ## Decision, ## Consequences; ## Verification anchors when testable |
Superseded ADRs must set supersedesAdr or link the replacement adrId in Consequences and note the Git revision (not a URL version segment).
Hub decisions summary
Section titled “Hub decisions summary”A Standard feature hub must include ## Decisions that either lists open items or states no open decisions and links the adr/ set (reader ADRs tab). Hub bullets must not duplicate full ADR prose—summarize and link by adrId.
Related maintenance policies
Section titled “Related maintenance policies”- Feature Hub + Article Bundle template — Required hub sections, anti-stub rules, and article minimums.
- Release and versioning policy — Git as version axis; v0.x delivery bands.
- Non-normative bridge docs policy — Legacy doc trees and mapping pages.
Decisions
Section titled “Decisions”No open decisions. Closed maintenance ADRs under adr/ — D-COMM-AUTH-0001 through D-COMM-AUTH-0005 (reader ADRs tab).