Skip to content

sync: bring dev to main (1.0.0-alpha.5) - #1466

Merged
SisyphusZheng merged 5 commits into
devfrom
main
Sep 28, 2026
Merged

SisyphusZheng merged 5 commits into
devfrom
main

Conversation

@SisyphusZheng

Copy link
Copy Markdown
Member

Fast-forward sync of dev to main after the 1.0.0-alpha.5 release train. dev is currently at c32b3c648 (the pre-alpha5 tip); main carries five commits since: the alpha5 consolidation (#1459), generator lane (#1460), and release bookkeeping (#1461/#1462/#1463). Rebase-merge yields the identical tree/SHA on dev (dev is an ancestor of main; no content is new). npm registry truth: 4/4 packages @1.0.0-alpha.5.

…me convergence (#1459)

* ci: trim advisory jobs from default PR workflow

* feat(alpha5): part-level streaming, WC admission tiers, runtime consolidation

Consolidates the alpha5 framework train (local implementation; CI pending):

- Streaming: opt-in compiled server executor with route-local defer
  manifests (#1450), generated Request->Response handler with preflush
  gates/cancel/backpressure (#1447), browser backfill installer and
  late part claim (#1448), navigation FSM stream ownership (#1449),
  shared stream-frame admission policy, Nitro Node/Workers proofs.
- WC admission: ADR-0157 tier diagnostics with third-party fixture
  evidence (#1451) and T1 snapshot prototype with negative upgrade
  result (#1452).
- Runtime: minimal-move keyed reconciliation + benchmarks (#1455),
  one internal LifetimeScope type replacing ElementLifecycle (#1458),
  internal renderer selection convergence with byte-identical
  generated entries (#1457), each prevalidation and fail-closed
  Part Program conformance (#1456).
- Release engineering: CI nested-packed de-dup, evidence/receipt
  hardening (#1443), streaming reference route + benchmark (#1453),
  ADR-0158/0159 drafts (PROPOSED), qualification matrix, CHANGELOG.

* chore(www): regenerate content dates after alpha5 content commit

* fix(alpha5): qualification hardening — T2 probe, review fixes, tier corrections

- T2 stream-survival probe (#1451): a Lit element server-born in the
  streamed shell survives stream+backfill (single instance, slot children
  preserved, interactive after upgrade); boundary documented — foreign
  tags are fail-closed inside backfilled deferred regions.
- Twenty review-driven fixes across five hardening rounds: typed-frame
  comparison (number/boolean/null text Parts), front-gate thenable sweeps
  (rejections become 500s, not process deaths), build/runtime/browser
  budget parity (32 fields / 64 owners / 64 properties), shared
  stream-frame admission policy with entity-obfuscation normalization
  (element canonical + router copy pinned by parity tests), early-frame
  claim-drift fix (resolved seed applied after pending own values, server
  value wins like late frames), explicit benchmark permissions, honest
  parity comments, no repo-internal paths in shipped artifacts.
- WC admission corrections (#1451): firstChild pre-upgrade capture
  (Shoelace sl-button and Material md-filled-button now genuinely pass
  T0 — 3/11), hydrationSafe null semantics, zh translation and full site
  wiring for the web-component-admission page.
- Legacy fixes surfaced by the full root suite: create README stale
  alpha.2 pin updated to registry truth alpha.4.

* refactor(alpha5): promote streamed-frame policy to a public export; accept ADRs

- Option B (owner ruling 2026-09-25): the canonical stream-frame
  admission policy is now exported from @openelement/element's public
  surface; the router-side verbatim copy is deleted and its consumers
  (entry-stream-runtime, stream-manifest) import the public export. The
  parity test is replaced by a direct unit test against the exported
  policy (32-case corpus; one stale 
 expectation corrected).
- ADR-0157/0158/0159 marked ACCEPTED (2026-09-25 owner ruling; alpha
  public-API variability explicitly accepted); qualification matrix and
  WC admission docs (en/zh) synced to the accepted status.
- Interface snapshot: +5 policy exports across the two surfaces.

* test(alpha5): sweep residuals — real assertions, honest gates, live evidence

Ten owner-ordered residual fixes plus two review follow-ups:
- SWEEP-1/2: replace tautological reconnect/signal assertions with real
  kernel/scope contract tests (distinct instances, abort lifecycle).
- SWEEP-3: stream-handler harness now slices the REAL generated
  channel-merge helper (fail-loud markers) and proves protocol-header
  precedence + Set-Cookie through the generated GET.
- SWEEP-4: WC light-DOM child verification scoped to the host element
  (balanced tag slicing) instead of whole-document substring match.
- SWEEP-5: 'export { x as loader }' aliases admitted end-to-end (export
  name is the module.loader contract); follow-up: duplicate 'as loader'
  exports rejected by the scan with an actionable diagnostic.
- SWEEP-6: cancel-while-parked no longer closes a cancelled stream;
  regression probe bounded with a deadline (no unbounded polling).
- SWEEP-7: app-shell gate investigated — project-level invariant kept,
  both build and generated-guard errors now tell the truth and name the
  project-wide fix.
- SWEEP-8/9: benchmark metadata now computed (git-status probe, no
  port race — single in-process serve).
- SWEEP-10: snapshot cache hit/miss are observations, README aligned.
* feat(www): generate article routes from content; document streaming

- New generator www/tools/generate-site-article-routes.ts: the single
  writer of article route modules, component bindings, and the route
  table (imported by article-pages tests). --check enforces byte
  identity; stray hand-written files and symlinks fail closed;
  duplicate output collisions (e.g. an 'index' article vs a collection
  overview) throw instead of silently dropping a route.
- All 24 existing articles migrated to generator output (46/48 files
  byte-identical to the hand-written versions; dist output verified
  byte-identical pre/post migration). check wired into generate:all and
  the release train.
- Streaming guide (en/zh): opt-in defer syntax, front gate vs deferred
  fields, budgets mirrored in four places incl. the 64-property seed
  cap, no-JS arrival-order tail, null literal semantics, islands and
  nested components emit as empty hosts on streamed shells (linked
  from islands-and-ssr), post-commit failures emit a generic error
  frame (no error-variant content), byte-identical output with
  streaming off.
- doc-figures pins re-baselined to current dist measurements.

* chore(www): regenerate content dates after generator lane content commit
* release: 1.0.0-alpha.5 — rendered as data resolves

Advances the six version points via version-bump (4 package configs,
create anchor, 4 fixture locks), admits the train
(ADMITTED_ACTIVE_TARGET, release-state sourceVersion/activeTarget), and
finalizes the CHANGELOG section header. Publishing follows the standard
train: exact-SHA CI on main, Release workflow dispatch under the
openelement-release environment, npm trusted publishing, receipt
verification, tag + GitHub Release, post-publish registry-truth sync.

* release: regenerate ui manifest at 1.0.0-alpha.5 (seventh version site, generator-owned)
The pinned fixture mirrors the repo's current source versions and
release-state; it still pinned alpha.4 after the train admission,
failing tools/repo#test:coverage:check (the eighth release-bookkeeping
site). Registry evidence in the fixture is untouched: npm truth stays
alpha.4 until publish.
…ete) (#1463)

Registry verified 2026-09-26: all four packages published under the
alpha dist-tag; latest untouched. latestPrerelease partition advanced,
per-package alpha dist-tags recorded, create README install pin and
the least-privilege exemption line follow the published version.
@SisyphusZheng
SisyphusZheng merged commit 27d74ec into dev Sep 28, 2026
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant