Current scope amendment (2026-09-07): ADR-0152 / #1341 supersedes former train and ownership policy.
[beta.2.1] Converge browser and server navigation on one RouteResolution
Part of #1320. Release: beta.2.1. Depends on: URLPatternList admission.
Problem
Browser and server maintain parallel winner semantics; Hono independently chooses routes and tests compare it against RouteTable.
Target
route declarations -> RouteTable -> URLPatternList -> RouteResolution
|- Request (server) -> Hono HTTP execution
|- Navigation (browser) -> Navigation API driver
Server
Hono keeps HTTP execution, middleware, request context, Response pipeline. It must NOT own route-winner semantics: Request -> RouteTable.resolve() -> RouteResolution -> HTTP execution. Parity tests may remain as defensive evidence; duplicated winner algorithms must disappear.
Browser
Evaluate the Navigation API against the official OE browser baseline. For supported browsers, prefer Navigation API as the canonical history-navigation driver (interception, traversal lifecycle, entry lifecycle, cancellation/abort). It may not own matching. Every navigable URL goes through the same RouteTable. Hash routing survives only for a demonstrated unique requirement (e.g. file://); do not keep an independent History API router as legacy comfort if the supported matrix no longer needs it. Record the browser floor change in the package/public surface.
Adversarial battery (browser + server)
GET; HEAD; POST; forms; loaders; actions; redirect; 404; 405; Allow; basePath; trailing slash; encoded params; malformed URI; same-origin navigation; cross-origin navigation; downloads/non-interceptable; replace; push; back; forward; rapid successive navigations; pending guard; redirecting guard; abort; newer navigation winning; SSR->SPA handoff; hash mode if retained.
Exit
"Who chooses the route winner?" has exactly one answer. No second route-winner algorithm; product boundaries do not mandate package renames.
Release
beta.2.1.
Accepted scope clarification
Explicit records (Route Mode) and file-generated records (Framework Mode default) enter the same table. Select the URL record before method dispatch; do not fall through to another path pattern on method mismatch. Keep query parameters separate from pathname captures. Browser manifests contain public metadata only. Remove displaced navigation/context/winner paths with regression evidence as part of this slice.
Accepted refinement — 2026-09-08 (supersedes conflicting earlier scope)
Governing plan (2026-09-08)
Maintainer-approved: ADR-0152, docs/current/VERSION_PLAN.md and #1341. Execution: https://github.com/orgs/open-element/projects/3. Acceptance checkpoints replace the three-day schedule. No automatic beta.2.4. Native/Lit are formal Framework Mode targets, not already-shipped support. Existing release records/versions remain unchanged; no closure without final-SHA evidence. examples/** stays frozen.
[beta.2.1] Converge browser and server navigation on one RouteResolution
Part of #1320. Release:
beta.2.1. Depends on: URLPatternList admission.Problem
Browser and server maintain parallel winner semantics; Hono independently chooses routes and tests compare it against RouteTable.
Target
Server
Hono keeps HTTP execution, middleware, request context, Response pipeline. It must NOT own route-winner semantics:
Request -> RouteTable.resolve() -> RouteResolution -> HTTP execution. Parity tests may remain as defensive evidence; duplicated winner algorithms must disappear.Browser
Evaluate the Navigation API against the official OE browser baseline. For supported browsers, prefer Navigation API as the canonical history-navigation driver (interception, traversal lifecycle, entry lifecycle, cancellation/abort). It may not own matching. Every navigable URL goes through the same RouteTable. Hash routing survives only for a demonstrated unique requirement (e.g.
file://); do not keep an independent History API router as legacy comfort if the supported matrix no longer needs it. Record the browser floor change in the package/public surface.Adversarial battery (browser + server)
GET; HEAD; POST; forms; loaders; actions; redirect; 404; 405; Allow; basePath; trailing slash; encoded params; malformed URI; same-origin navigation; cross-origin navigation; downloads/non-interceptable; replace; push; back; forward; rapid successive navigations; pending guard; redirecting guard; abort; newer navigation winning; SSR->SPA handoff; hash mode if retained.
Exit
"Who chooses the route winner?" has exactly one answer. No second route-winner algorithm; product boundaries do not mandate package renames.
Release
beta.2.1.Accepted scope clarification
Explicit records (Route Mode) and file-generated records (Framework Mode default) enter the same table. Select the URL record before method dispatch; do not fall through to another path pattern on method mismatch. Keep query parameters separate from pathname captures. Browser manifests contain public metadata only. Remove displaced navigation/context/winner paths with regression evidence as part of this slice.
Accepted refinement — 2026-09-08 (supersedes conflicting earlier scope)
Governing plan (2026-09-08)
Maintainer-approved: ADR-0152, docs/current/VERSION_PLAN.md and #1341. Execution: https://github.com/orgs/open-element/projects/3. Acceptance checkpoints replace the three-day schedule. No automatic beta.2.4. Native/Lit are formal Framework Mode targets, not already-shipped support. Existing release records/versions remain unchanged; no closure without final-SHA evidence. examples/** stays frozen.