Skip to content

Verify static, SSR, progressive and runtime equivalence #451

Closed

Description

@1aron

Goal and background

Vite, Webpack, and Next already default to static. The goal is to verify entrypoints and payloads, not to switch the default again.

Parent tracker: #445
Baseline: 70444b18c8102fa7a9d811ec51ef96902573792c
Phase: 2.0 freeze

Ownership and scope

server, runtime, vite, webpack, next, astro, nuxt, and svelte

Dependencies

Implementation tasks

  • Compare rules, resources, cascade, and observable styles for the same cases across static, SSR, progressive, and runtime rendering.
  • Verify post-hydration additions/removals, shared tokens and keyframes, last-reference removal, and emitted-global deduplication.
  • Verify default and explicit mode propagation through base adapters and framework wrappers.
  • Static output must not inject a browser engine, Wasm, or an execution manifest.
  • Remeasure JS, Wasm, and manifest raw/gzip/Brotli sizes. Do not reuse the shared conversation’s approximate 340 KB figure as the current measurement.

Acceptance criteria

  • Transport wrappers may differ, but the same context and classes have equivalent styling semantics.
  • Static rendering has no unintended runtime payload; hydration neither duplicates nor loses resources.
  • Measurements include the environment, commands, baseline, and limitations.

Validation

Server tests, runtime e2e, affected adapter tests/example builds, and check:runtime-size; add benchmarks for hot-path changes.

Completion report

Include source and test evidence, PRs, actual commands and results, and any CSS/API/syntax/migration impact. Checks that were not run or were blocked must not be reported as passing.

Final acceptance (2026-09-28)

Static, SSR, progressive and runtime contracts pass with the integrated removal. The runtime suite covers Chromium, Firefox and WebKit; Next E2E and Linux/Windows package/example builds pass. Earlier Astro/Svelte progressive live smoke covered six app/browser combinations; the removal changes no example or Astro/Svelte production source. Static payload inspection and the runtime size gate pass. Measured raw artifacts are runtime JS 48,219 bytes, engine Wasm 1,044,424 and preset JSON 90,403; these are separate artifacts, not a combined transport gate.

Merged into rust through PR #461 at 262adb809b928af7082107e1b5633d945cb7f427. The verified candidate is 16a90bdde96ef08ba4312e5d94aaf36d50048dca; removal commit 9d9817241 is preserved through integration merge e231a700e.

Final CI passes Linux package tests/lint/types (111/111 tasks), site build/CSS contract/Playground/lint/types and examples (36/36); Windows package tests (59/59 tasks, including Vite 676/676) and examples (36/36); Rust fmt/Clippy/workspace/codegen/parity; eight native targets; and Linux runtime/Next E2E. Runtime E2E passes 432 cases across Chromium, Firefox and WebKit, plus 10 Next cases.

Both deployments at this exact candidate pass page, canonical and removal-notice checks: Cloudflare and Vercel. Cloudflare health passes. Visual checks on the preceding candidate cover identical production site sources.

The dated audit preserves scoped commands and historical failures; this final result supersedes its pending CI status. The Compose integration review and site CSS review explain intentional contract changes. Site lint has 265 existing warnings and zero errors. No npm publication, package rename, version bump, lockfile change or release-workflow change is included.

Activity

  1. 1aron commented on Sep 27, 2026

    @1aron
    MemberAuthor

    Newly reproduced counterexamples and implementation ownership

    Two focused follow-ups now own the missing implementation work for this rendering-equivalence issue:

    Both cases were reproduced in Chromium and WebKit at baseline 70444b18c; their Firefox runs are still pending. The existing dropped-node and permissive-CSP tests do not cover these arrangements.

    Implement #462 first, then #463 because they share the hydration/fallback path. #464 separately tightens same-root manifest ownership after those fixes; it is a deliberate change to documented behavior, not a claim that current first-caller-wins code violates its README.

    Keep this issue as the combined acceptance owner: run the new fixtures across static, SSR, runtime and progressive delivery, retain hydration tampering/resource-lifetime coverage, record the runtime/performance/payload evidence, then update #454. Existing passing tests and PR #461 remain useful evidence but do not establish that these new counterexamples pass. Do not repeat completed Next/Svelte implementation work or create a second broad rendering audit.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions