Skip to content

Commit 0d82695

Browse files
author
DevBot
committed
docs(plan): focus Element and Router cores with UI dogfood (ADR-0152)
1 parent 8e4132a commit 0d82695

9 files changed

Lines changed: 86 additions & 24 deletions

File tree

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ current proven scope = static-first applications with fullstack output paths
2222
Source package line: `0.44.0-beta.2` (`v0.44.0-beta.2`).
2323
npm registry line: `v0.44.0-beta.2` (prerelease, dist-tag `beta`); npm `latest` remains the stable `0.43.3` line.
2424

25-
The accepted product direction is **Element / UI / Router**, with Route Mode
26-
and Framework Mode sharing one core. [Product boundaries](docs/architecture/product-model.md)
25+
The accepted core products are **Element / Router**, with Route Mode
26+
and Framework Mode sharing one Router core. UI is dogfood and a reference
27+
implementation, not a third core product. [Product boundaries](docs/architecture/product-model.md)
2728
and [the active plan](docs/current/VERSION_PLAN.md) distinguish planned convergence
2829
from the currently shipped package surface.
2930

README.zh.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ DOM 是默认服务端表示;交互区域按需升级。
1212
npm registry 行为 `v0.44.0-beta.2`——预发布版本(dist-tag `beta`);npm `latest` 仍为
1313
已发布的稳定 0.43 线。
1414

15-
已确认的产品方向是 **Element / UI / Router**。Route Mode 接受显式路由记录,
15+
已确认的核心产品是 **Element / Router**,UI 用作 dogfood 和参考实现,不是第三条核心产品线。Route Mode 接受显式路由记录,
1616
Framework Mode 默认由文件路由生成记录,两者共用内核。自维护 URLPatternList
1717
是核心技术资产;每次替换同步清理旧实现。下一步为 Beta.2.1–Beta.2.3,验收后
1818
进入公开 `1.0.0-alpha.1`。详见[产品边界](docs/architecture/product-model.md)

docs/adr/ADR-0152-product-router-and-alpha-convergence.md

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# ADR-0152: Three products, owned routing core and public 1.0 Alpha
1+
# ADR-0152: Element / Router cores, reference UI and public 1.0 Alpha
22

33
- Status: ACCEPTED (2026-09-07, explicit maintainer direction)
44
- Supersedes: ADR-0151's future release topology; upstream-only URLPatternList
@@ -20,9 +20,10 @@ This is a timebox target, not proof that implementation or publication is comple
2020

2121
### Products and dependencies
2222

23-
The products are Element, UI and Router. Element owns compiled Web Components
24-
execution, serialization and DOM claim/update. UI is a selected component library
25-
built on Element, independent of Router. Router has two modes:
23+
The core products are Element and Router. UI is dogfood and a reference implementation. Element owns compiled Web Components
24+
execution, serialization and DOM claim/update. UI is a selected component reference
25+
built on Element, independent of Router. It validates authoring, interoperability
26+
and real application use; it does not promise a comprehensive design system. Router has two modes:
2627

2728
- Route Mode consumes explicit records; its matching core is independent of
2829
Element, Hono, Vite and filesystem access.
@@ -41,6 +42,29 @@ Products are not package counts. Existing `app`, `adapter-vite` and `create` rem
4142
implementation/distribution/tooling surfaces until a justified migration changes
4243
exports. No mandatory package renaming or new broad UI design system is implied.
4344

45+
### Maintainer refinement: two core products and independent Element delivery
46+
47+
The 2026-09-07 follow-up refines the earlier three-product wording: Element and
48+
Router are the core products; Framework Mode belongs to Router. UI is dogfood and
49+
reference implementation, alongside the website/representative consumer application.
50+
Its current package may remain available without an independent design-system
51+
roadmap. Do not force two physical npm packages or replace all UI in this sprint.
52+
53+
The private compiler has an explicit distribution path through Element tooling;
54+
published artifacts cannot depend on unpublished workspaces. Compiler and runtime
55+
meet at versioned generated artifacts. Router tooling reuses Element's build path,
56+
never defines component semantics or ships a duplicate compiler. Separate build,
57+
browser, server and declaration entry graphs; preserve source maps and compiler
58+
source diagnostics. Public tooling subpaths are permitted without publishing a
59+
stable compiler API or hiding Vite behind a second configuration system.
60+
61+
Standalone qualification means author -> compile -> pack -> ordinary HTML consumer,
62+
without Router or a workspace alias. A lightweight Element runtime dependency is
63+
allowed; compiler/Node/Vite code must not leak into browser output or browser types.
64+
Foreign CE property/attribute/event/upgrade boundaries need real browser evidence.
65+
Internal foreign SSR/hydration remains component-specific, not a universal DSD
66+
promise. Broader React/Vue/etc. integration matrices are Alpha follow-up work.
67+
4468
### URLPatternList is an owned core asset
4569

4670
Start from Justin Fagnani's `url-pattern-list` v0.5.0, source commit

docs/architecture/product-model.md

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
# Product model
22

3-
OpenElement has three products: **Element**, **UI** and **Router**. This is the
3+
OpenElement has two core products: **Element** and **Router**. UI is dogfood
4+
and a reference implementation, not a third core product. This is the
45
accepted target under [ADR-0152](../adr/ADR-0152-product-router-and-alpha-convergence.md);
56
Beta.2.x issues track implementation. It does not claim all target APIs already ship.
67

78
| Product | Responsibility | Dependency boundary |
89
| ---------------------- | --------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
910
| Element | Compiled Web Components, reactivity, lifecycle, server serialization, fresh DOM and existing-DOM claim/update, styles | Independent component execution foundation |
10-
| UI | Selected reusable components, interaction, accessibility, themes and composition | Element; Router optional |
11+
| UI (reference) | Dogfood components demonstrating interaction, accessibility, themes and composition | Element; Router optional |
1112
| Router: Route Mode | Explicit records, matching/resolution, HTTP and browser integration entry points | Matching core independent of Element, Hono, Vite and filesystem |
1213
| Router: Framework Mode | File routing by default, page data/forms/errors, layouts, Document, SSR/SSG, navigation and Vite integration | Same Router core plus Element; UI optional |
1314

@@ -28,6 +29,26 @@ not extra product lines. Current packages remain `element`, `app`, `adapter-vite
2829
Product count is not npm package count.
2930

3031
The initial application target is HTML-first content and dynamic business pages,
31-
forms and local interactive components. UI stays selected; a full design system,
32+
forms and local interactive components. UI stays a selected dogfood/reference surface; a full design system,
3233
generic RPC/ORM/cache/queue framework and comprehensive offline application data
3334
layer are outside this convergence sprint.
35+
36+
## Standalone delivery and reference applications
37+
38+
Element must be independently authored, built, packed and consumed from plain HTML
39+
without Router or private workspace dependencies. Its compiler remains private,
40+
with a versioned artifact contract; build integration delivers the compiler through
41+
an explicit tooling entry. Runtime/browser/type entry graphs must exclude Vite,
42+
TypeScript compiler and Node-only implementation. Framework tooling reuses the same
43+
Element compilation path; it does not own Element language semantics.
44+
45+
UI supplies selected dogfood components. The website and a representative consumer
46+
supply reference application evidence. Their defects can reveal core blockers, but
47+
component count, UI redesign, replacement with Web Awesome, and reference-site
48+
expansion are not independent Beta.2.x release objectives. The existing ui package
49+
may remain published; product demotion is not a package removal or migration claim.
50+
51+
Foreign Custom Elements are opaque browser-standard boundaries. OE binds host
52+
properties/attributes/events/slots without compiling their internals. Foreign SSR
53+
and hydration require an explicit supported integration; DSD alone is not a shared
54+
hydration protocol. No mandatory Web Awesome dependency or wrapper library.

docs/current/VERSION_PLAN.md

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ and immutable release records; this plan describes intended work, not release pr
2323

2424
## Objective and scope
2525

26-
Converge Element / selected UI / Router, with Route Mode explicit records and
26+
Converge Element and Router, with UI as dogfood/reference, with Route Mode explicit records and
2727
Framework Mode file-generated records sharing one routing core. Own URLPatternList
2828
as a strategic asset; reuse existing Element/app/Vite implementation. Continuously
2929
remove displaced semantic owners and operational machinery. Enter real application
@@ -34,11 +34,11 @@ work through an evidence-gated public `1.0.0-alpha.1`.
3434
Three working days from implementation start, not three elapsed days from this
3535
planning PR. An elapsed deadline does not complete an issue or authorize release.
3636

37-
| Checkpoint | Target | Work and evidence |
38-
| ---------------- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
39-
| Beta.2.1 / Day 1 | Router/core + cleanup | #1320: records/products #1338, owned fork #1324, resolution #1325, release semantics #1323; early Cloudflare/Vite page/form spike |
40-
| Beta.2.2 / Day 2 | Framework/Document + cleanup | #1321: real flow #1339, resolved Document #1326, public metadata projections #1327 |
41-
| Beta.2.3 / Day 3 | Remaining cleanup and admission | #1322: #1328-#1334, #1156, #1188/#1189 residual scope; Alpha admission #1340 |
37+
| Checkpoint | Target | Work and evidence |
38+
| ---------------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
39+
| Beta.2.1 / Day 1 | Router/core + cleanup | #1320: core products/records/Element delivery contract #1338, owned fork #1324, resolution #1325, release semantics #1323; early Cloudflare/Vite page/form spike |
40+
| Beta.2.2 / Day 2 | Framework/Document + cleanup | #1321: standalone Element + reference application flow #1339, resolved Document #1326, public metadata projections #1327 |
41+
| Beta.2.3 / Day 3 | Remaining cleanup and admission | #1322: #1328-#1334, #1156, #1188/#1189 residual scope; Alpha admission #1340 |
4242

4343
Every replacement removes its obsolete path and dependent wrappers/checkers/docs
4444
with regression evidence. Day 3 does not postpone cleanup from earlier changes.
@@ -47,13 +47,22 @@ Examples remain frozen in this sprint; #1311 is carried to public Alpha.
4747

4848
## Non-goals
4949

50-
UI expansion, a complete design system, full URLPattern reimplementation,
50+
UI expansion or wholesale replacement, a complete design system, public compiler API,
51+
mandatory two-package consolidation, full URLPattern reimplementation,
5152
speculative matcher acceleration, native/WASM ports, complex incremental table
5253
mutation, generic bundler/platform expansion, RPC/ORM/queue/cache frameworks,
5354
comprehensive offline data handling, arbitrary directory/filename refactoring.
5455

5556
## Acceptance
5657

58+
- Element independently compiles/packs and runs in a plain HTML consumer without
59+
Router or private workspace imports. The private compiler is delivered through
60+
tooling; its versioned artifacts work with the admitted runtime. Browser JS and
61+
type graphs exclude compiler/Vite/Node-only dependencies.
62+
- UI and the representative application provide dogfood/reference evidence, not a
63+
third product-release checklist. Existing UI remains usable; no forced replacement.
64+
- Foreign CE host binding/upgrade behavior is tested; internal foreign SSR/hydration
65+
is supported only through an explicit integration, not inferred from DSD.
5766
- Both route sources use one table; deterministic composition and conflict rules.
5867
- URLPatternList agrees with the ordered reference oracle; safe conservative
5968
matching is allowed, silent false negatives are not.

docs/governance/PROJECT_WORKFLOW.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Current execution direction is owned by
2020
convergence -> public 1.0 Alpha -> evidence-gated RC/Stable. Actual version and
2121
publication facts remain in `docs/release/release-state.json`.
2222

23-
The products are Element, UI and Router. Supporting packages are not additional
23+
The core products are Element and Router. UI is dogfood and a reference implementation. Supporting packages are not additional
2424
product lines. Cleanup is part of every replacement, beginning in Beta.2.1.
2525
Historic v0.44 Alpha workspace instructions do not govern public 1.0 Alpha.
2626

docs/roadmap/ROADMAP.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,19 @@ Stable `1.0.0` remains unscheduled.
1212

1313
Execution follows [PROJECT_WORKFLOW.md](../governance/PROJECT_WORKFLOW.md).
1414

15-
OpenElement's products are **Element / UI / Router**. See the
15+
OpenElement's core products are **Element / Router**; UI is dogfood and a reference implementation. See the
1616
[product model](../architecture/product-model.md) and accepted
1717
[ADR-0152](../adr/ADR-0152-product-router-and-alpha-convergence.md).
1818

1919
## Active direction
2020

2121
The published Beta.2 baseline is followed by three convergence checkpoints:
2222

23-
1. **Beta.2.1:** general Router core, self-maintained URLPatternList, explicit and
23+
1. **Beta.2.1:** core product boundaries and standalone Element delivery contract,
24+
general Router core, self-maintained URLPatternList, explicit and
2425
file-generated records, shared resolution and immediate cleanup.
25-
2. **Beta.2.2:** Framework Mode page/form/navigation lifecycle, Document, Element
26+
2. **Beta.2.2:** standalone Element packed-consumer proof, Framework Mode
27+
page/form/navigation lifecycle, Document, Element
2628
and Vite integration, with replacement-time cleanup.
2729
3. **Beta.2.3:** remaining repository/governance reduction and real-application
2830
admission evidence.

docs/roadmap/v0.44.0-ISSUES.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ not a manually duplicated completion ledger.
1111

1212
| Phase | Parent | Work |
1313
| ------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
14-
| Beta.2.1 | #1320 | #1338 products/record model; #1324 owned URLPatternList; #1325 shared resolution; #1323 version and channel semantics |
15-
| Beta.2.2 | #1321 | #1339 Framework application flow; #1326 Document; #1327 public metadata projections |
14+
| Beta.2.1 | #1320 | #1338 core products/record model/standalone Element contract; #1324 owned URLPatternList; #1325 shared resolution; #1323 version and channel semantics |
15+
| Beta.2.2 | #1321 | #1339 standalone Element + Framework reference flow; #1326 Document; #1327 public metadata projections |
1616
| Beta.2.3 | #1322 | #1328 lifecycle census; #1329 debris; #1330 tools; #1331 tasks; #1332 CI; #1333 fixtures; #1334 release-state authority; #1340 Alpha admission |
1717
| Continuous cleanup | #1322 | #1156 mature tooling; #1188 governance/docs; #1189 repository weight; #1192 distinct residual closure obligations |
1818
| 1.0 Alpha | #1155 | #1179 real SaaS; #1234-#1242 artifact/benchmark/performance/error/consumer/runtime/lifecycle qualification; #1187 release-hardening remainder; #1311 deferred examples |

packages/ui/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# @openelement/ui
22

3-
First-party reference UI package for the OpenElement framework.
3+
First-party dogfood and reference UI package for OpenElement.
4+
5+
Element and Router are the two core products; Router includes Framework Mode.
6+
UI demonstrates and tests those products rather than defining a third core product
7+
or a comprehensive design-system roadmap. The existing package remains available;
8+
this positioning does not remove components or force migration to another library.
49

510
The components are first-party `open-*` Web Components. They are designed to
611
prove the OpenElement authoring model with shadow/DSD output, explicit light DOM

0 commit comments

Comments
 (0)