From Beta.1 this table is the registry of record under the governance
constitution (docs/governance/GOVERNANCE_CONSTITUTION.md §3); its
duplicate-justification rule is constitution §4.3.
This table is the Alpha.9 semantic-ownership record: current truth for the v0.44 internal Alpha.9 checkpoint. One concept has one semantic owner. Other implementations are executors, adapters, conforming polyfills, or derived indexes; they may optimize the canonical meaning but may not redefine it. "Closed" means no known divergence remains after the cited tests; Alpha.9 remains internal and unpublished.
Alpha.10 — the current internal checkpoint, governed by umbrella issue #1155 — evolves specific rows of this table through its issue tree (#1209-#1220). The table remains the Alpha.9 baseline until it is re-baselined at Alpha.10 closure.
| Concept | Canonical owner and representation | Executors, alternatives, and accepted decision | Parity evidence and known divergence | Forbidden duplicate ownership; issue |
|---|---|---|---|---|
| Component identity | Bundler-neutral compiler semantic core; decorator-derived tag/class records in Part Program metadata | Vite discovers modules and registers the compiled class; Element consumes identity | Compiler boundary, deterministic fixture, CEM records; closed | No Vite regex identity grammar or runtime tag inference; #1208 |
| OpenElement language semantics | Compiler semantic core; admitted decorator, property, computed, TSX, Part and Region grammar | Vite hook is integration only; unsupported syntax fails closed | compiler-semantic-core-boundary.test.ts, compiler-fail-closed-matrix.test.ts, compiled-element-v1.test.ts; closed |
No bundler-owned parser or runtime JSX fallback; #1208, #1204 |
| Part Program v1 | Compiler semantic-core/program.ts; exact versioned serialized wire artifact |
Element has an independent wire validator and all executors consume the validated artifact | Bidirectional validator corpus and deterministic fixture; competing runtime-only grammar removed | No Element-only v1 instruction or compatibility grammar; #1208 |
| RuntimeProgramIR | Element runtime-program.ts; normalized, recursively frozen representation created only after exact wire validation |
Fresh DOM, claim, reactive runtime and server serializers | part-program-validation-adversarial.test.ts, compiled runtime/server suites; closed |
No direct cast or widening before validation; #1208 |
| Part, Region, anchor, dependency and location identity | Part Program v1 ownership/location tables | Element indexes those records but does not rediscover them | Adversarial duplicate, missing, misplaced and malformed-record matrix; closed | No executor-generated identity or alternate condition representation; #1208 |
| Signals and reactive invalidation | Element signal engine; dependency records map signals to owning Parts/Regions | Fresh and claimed DOM executors subscribe through the same runtime context | Part/Region update, keyed collection and disposal suites; closed | No VNode walk or adapter-level reactive graph; #1208 |
| Context discovery and transport | Community Context Protocol context-request composed/bubbling event |
Element Signal bridge provides/consumes values; Lit provider/consumer is the conforming alternative | signal-context.test.ts including Lit interop, reconnect and disposal; private ancestry walk removed |
No parentNode/root-host discovery or global context registry; #1205 |
| DOM context propagation and lifecycle | Platform event propagation plus Element connection-scoped subscriptions | Shadow/light DOM and reconnect are ordinary protocol cases | Compiled context lifecycle matrix; closed | No transport tied to one renderer or permanent disconnected subscription; #1205 |
| SSR initial DOM, fresh DOM, claim and activation | Element compiled server/runtime/claim semantics over one program | Server string serializer, fresh builder and existing-DOM claimant are alternative executors | Part Program conformance, compiled server/fresh/claim/update suites; closed | No second renderer, generic hydration or binding discovery; #1203 |
| Nested component composition, slots and DSD | Element compiled serializer; structured nested records and admitted tags | Vite supplies registry modules and immutable admission list only | compiled-composition.test.ts, nested-static-ssr.test.ts; duplicate Vite renderer removed; accepted divergence: components embedded in opaque Trusted HTML content stay SSR-inert and upgrade client-side (#1203) |
No adapter reparsing or independent slot/DSD semantics; #1203 |
| Trusted HTML | Caller/compiler creates TrustedHtml identity capability; Element sink validates identity |
SSR, fresh DOM, claim and public light-child projection consume the same capability | Trusted sink matrix and forged-projection rejection; raw-string projection leak fixed | No string branding, Vite sanitizer, or HTML-based component discovery; #1203 |
| Document, head and body serialization | Element wrapInDocument; structured options to deterministic document HTML |
Generated Hono and SSG entries call it | html-escape.test.ts, entry generation and request-time suites; duplicate entry wrapper removed |
No generated document renderer; #1203 |
| Compiled serializer text-node escaping | Element internal/compiled/escape-text.ts; reduced contract (&, <, > only — quotes pass through in text content) |
Runtime seed serializer and server serializer both call the shared helper; the two private copies converged | compiled-escape-parity.test.ts byte-level text corpus (static text nodes and text Parts across both serializers); closed. The entity-preserving escapeText in sanitize.ts is a deliberately different contract, not this surface |
No per-serializer private copy or quote-escaping text contract; #1272 |
| CSS and visual theme | CSS cascade, Custom Properties, authored styles and scoped compiled light CSS | Shadow/light style installation is an Element projection; Context may carry theme identity only | StyleSheet, compiled style and website browser suites; closed | No Context recreation of color, spacing, typography, radii or visual-token inheritance; #1201 |
| Route pathname grammar | Native URLPattern, or admitted urlpattern-polyfill with the same corpus |
App RouteTable compiles route declarations once |
Native/polyfill adversarial client-router.test.ts; legacy regex/trie matcher removed |
No SPA-only pathname parser; #1204 |
| Route matching, order, params, query, base and trailing policy | App RouteTable; ordered route records and URLPattern results |
SPA, generated Hono/request-time, SSG and Nitro project the same route records | Route parity corpus plus request-time browser matrix; closed | No transport-specific precedence or unsafe-param map; #1204, #1206 |
| Route file-convention grammar and declaration ordering | Adapter route-scanner.ts; parseRouteFilePath ([id]→:id, [...path]→:path{.+}, index stripping, api/ classification) and the static-first sort (special files last, then static-before-dynamic, then lexicographic) |
App RouteTable honors the declaration order through index-based precedence; SSG, request-time codegen and the SPA route manifest consume the same scanned records |
route-scanner-*.test.ts, route-manifest.test.ts, request-time-parity.test.ts (dev-vs-build semantic parity); closed |
No second file-convention grammar or transport-specific declaration ordering; #1270 |
| Renderer scope matching | Adapter entry-route-helpers.ts rendererScopeMatches; case-sensitive exact-or-scope/ boundary-prefix predicate |
Generated __matchingRenderers re-expresses the predicate inside self-contained generated entries, which cannot import adapter internals (derived projection) |
renderer-scope-parity.test.ts binding corpus evaluates the generated matcher verbatim against the predicate (exact, prefix, nested, non-match, boundary separators, case); closed |
No second runtime scope grammar or per-transport scope policy; #1271 |
| Request and Response semantics | Web platform Request, Response, Headers, FormData, URL |
Hono executes requests; Nitro adapts deployment transports | HTTP bridge, malformed-body, headers, abort/cancel and Nitro proof suites; closed | No framework-private HTTP value model; #1206 |
| Loader | App authoring contract and outcome classification | SPA and generated Hono handlers project the result | App authoring/SPA/request-time parity; closed | No adapter-specific loader result grammar; #1206 |
| Action | App classifyActionResult; ActionOutcome discriminated representation |
SPA and generated Hono action runtime consume the classifier | App authoring/SPA/entry-renderer/request-time suites; prior fail() shape divergence fixed |
No Hono-only .data interpretation or raw Response action result; #1206 |
| Redirect, NotFound, expected failure and Problem Details | App authoring control/outcome semantics | SPA navigation and Hono response projection are alternative executors | App outcome matrix, action protocol and request-time parity; closed | No transport-owned outcome classification; #1206 |
| Hono execution | Hono request/middleware execution model | Generated entry binds App-owned route/outcome semantics to Hono | Request-time fixture and browser suites; closed | Hono does not own App classification; #1206 |
| Nitro deployment | Nitro adapters and generated deployment artifacts | Node server and Cloudflare module are environment alternatives | nitro:proof:node, nitro:proof:workers; closed |
Nitro does not redefine routes, outcomes or documents; #1206 |
| Compiler-known interaction facts | Compiler semantic analysis and emitted event records | Client admission aggregation reads facts directly | Module-analysis, scanner and compiler determinism suites; closed | No Vite AST rediscovery of compiler-owned behavior; #1202, #1207 |
| Explicit Island and imperative behavior policy | Author declaration validated by adapter protocol | Client admission aggregation and delivery strategy projection | Island scanner/delivery and exact client-output tests; closed | No assumption that imperative browser behavior is compiler-knowable; #1202 |
| Third-party delivery capability | Package manifest and CEM classification | Adapter aggregates package islands and foreign-tag admission | CEM compatibility, foreign-tag and package-island tests; closed | No guessing third-party behavior from OpenElement compiler data; #1202 |
| Client reachability, activation and zero-JS | Adapter client-admission.ts; deterministic union of route reachability, compiler facts, explicit policy and third-party declarations |
Vite chunking/client entry generation implements the plan | Admission, generator, exact-output, static-only zero-runtime and three-browser suites; false zero-JS for interactive static components fixed | No hidden 0.43 island fallback or independent compiler-event scan; #1202 |
| Vite build, HMR, resolution and source-map composition | Vite integration layer; module graph, cache and generated source maps | Bundler-neutral compiler returns code, diagnostics and source records | HMR/delivery, direct-core, source-map and build suites; closed | Compiler core must not import Vite or invent a generic bundler abstraction; #1207 |
| Source maps and diagnostics | Compiler semantic core owns source spans/records; Vite composes standard module maps | Browser/tooling consumes generated maps | Frozen source-map fixture, located fail-closed diagnostics and HMR tests; closed | No adapter recreation of semantic locations; #1207 |
| Public metadata and package interface | Package root exports, package manifests and checked interface snapshot | Docs, packed packages, Starter and third-party consumers | Interface snapshot, packed dry run and packed-consumer qualification; pending only the final exact-head rerun | No unpublished deep-import contract or stale provisional name; #1201 |
- Compiler and Element packages do not import each other's private TypeScript.
- ADR-0148 remains authoritative: Vite owns module graph, resolution, caching, HMR, chunking, manifest aggregation and final source-map composition; it does not rediscover compiler-known meaning.
- A static route index is an optimization over URLPattern semantics, never a second pathname grammar.
- Hono and Nitro remain executors/adapters. Transport representations may differ only while classification, status, redirect target and security policy remain observationally identical.
- Trusted HTML is opaque content. It is never reparsed as a discovery channel,
and public projection requires an identity capability rather than a structural
{ html }lookalike. - Alpha.9 is internal and unpublished. This record authorizes no tag, release,
package publication, dist-tag change or
mainpromotion.