Strata architecture and SDDMenu
On this page

Consumer compilation evidence (SPEC-001)

Generated by pnpm test:consumer at 2026-09-23T10:03:38.182Z. This report is regenerated on every run; it reflects the most recent execution against baseline 65401f3cb50164186588f91f0a8966b951d25f0a.

Scope. This is a single Node.js consumer recipe (tsc → Vite SSR bundle → Node execution, plus a stock-Vite characterization arm) for @strata-sc/core/@strata-sc/h3 tarballs installed outside the workspace. It makes no Angular, Analog, Nitro, browser, or Cloudflare compatibility claim.

Versions

ToolVersion
Nodev22.23.0
pnpm10.30.1
TypeScript (consumer-local)6.0.3
Vite (consumer-local)8.3.0
h3 (consumer-local, resolved)2.0.1-rc.32
Rolldown (workspace lockfile)1.2.8

Commands

  • pnpm --filter @strata-sc/core --filter @strata-sc/h3 run build → exit 0
  • pnpm --filter @strata-sc/core --filter @strata-sc/h3 pack --pack-destination /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/tarballs → exit 0
  • npm install --no-audit --no-fund --loglevel=error → exit 0
  • /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/node_modules/.bin/tsc -p tsconfig.json → exit 2
  • /Users/andriipap/.hermes/node/bin/node /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/dist/consumer.controller.js → exit 0
  • /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/node_modules/.bin/vite build --config vite.reference.config.ts → exit 0
  • /Users/andriipap/.hermes/node/bin/node /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/vite-reference-dist/main.js → exit 0
  • /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/node_modules/.bin/vite build --config vite.direct.config.ts → exit 0
  • /Users/andriipap/.hermes/node/bin/node /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/vite-direct-dist/main.js → exit 1
  • /Users/andriipap/.hermes/node/bin/node --experimental-strip-types /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/symbol-preservation-check.ts → exit 0
  • npm install --no-audit --no-fund --loglevel=error → exit 254

Tarball identity

PackageTarballSHA-256
@strata-sc/corestrata-core-0.0.0.tgz49366604fa925e8af17a4b3578b526b02f80bb0b1d83e11b2497ac4834c6d2af
@strata-sc/h3strata-h3-0.0.0.tgzc8a8f9287cd5f9998f58df432fa3f9d525b7b03eb376389169b6c68f52abaaf5
<details><summary>@strata-sc/core tarball contents</summary>
package/dist/index.js
package/package.json
package/dist/metadata/controller-metadata.d.ts.map
package/dist/controller/controller.decorator.d.ts.map
package/dist/controller/controller.types.d.ts.map
package/dist/metadata/decorator-metadata-polyfill.d.ts.map
package/dist/controller/get-controller-definition.d.ts.map
package/dist/route/get.decorator.d.ts.map
package/dist/index.d.ts.map
package/dist/index.js.map
package/dist/utils/normalize-path.d.ts.map
package/dist/route/route.types.d.ts.map
package/dist/metadata/controller-metadata.d.ts
package/dist/controller/controller.decorator.d.ts
package/dist/controller/controller.types.d.ts
package/dist/metadata/decorator-metadata-polyfill.d.ts
package/dist/controller/get-controller-definition.d.ts
package/dist/route/get.decorator.d.ts
package/dist/index.d.ts
package/dist/utils/normalize-path.d.ts
package/dist/route/route.types.d.ts
package/LICENSE
</details> <details><summary>@strata-sc/h3 tarball contents</summary>
package/dist/index.js
package/package.json
package/dist/utils/build-route-path.d.ts.map
package/dist/errors.d.ts.map
package/dist/index.d.ts.map
package/dist/index.js.map
package/dist/register-controllers.d.ts.map
package/dist/utils/build-route-path.d.ts
package/dist/errors.d.ts
package/dist/index.d.ts
package/dist/register-controllers.d.ts
package/LICENSE
</details>

Dependency graph

  • Packed @strata-sc/h3 dependencies["@strata-sc/core"] = 0.0.0 (contains workspace:: false).
  • Isolated consumer install resolved 1 copy/copies of @strata-sc/core: /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/node_modules/@strata-sc/core.
  • Isolated consumer resolved h3@2.0.1-rc.32 (expected 2.0.1-rc.32).

Reference recipe (tsc → Vite → Node)

Stage 1 — consumer-local tsc

  • Exit code: 2 (0 = clean typecheck).
  • JS emitted despite diagnostics: true.
<details><summary>tsc diagnostics</summary>
node_modules/h3/dist/h3.d.mts(638,19): error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'Error'.
node_modules/h3/dist/index.d.mts(3,106): error TS2307: Cannot find module 'crossws' or its corresponding type declarations.
</details>
  • Execution of tsc-emitted JS in a fresh Node process: pass
<details><summary>stage 1 execution output</summary>
DEFINITION_JSON_START
{"path":"/consumer","routes":[{"method":"GET","path":"/","handler":"root"},{"method":"GET","path":"/async","handler":"asyncRoute"}]}
DEFINITION_JSON_END
ROOT_STATUS 200
ROOT_BODY {"greeting":"hello"}
ASYNC_STATUS 200
ASYNC_BODY {"greeting":"hello","async":true}
NATIVE_STATUS 200
NATIVE_BODY {"native":true}
</details>

Stage 2 — consumer-local Vite (SSR bundle of the tsc output)

  • Vite build exit code: 0.
<details><summary>vite build output</summary>
vite v8.3.0 building ssr environment for production...
transforming...
✓ 2 modules transformed.
rendering chunks...
computing gzip size...
vite-reference-dist/main.js  4.91 kB │ gzip: 1.60 kB

✓ built in 18ms
</details>
  • Execution of the Vite-bundled reference output in a fresh Node process: pass

Direct-Vite characterization (no decorator lowering)

  • Vite build exit code: 0.
  • Recorded outcome: runtime_failed (one of works, build_failed, runtime_failed).
<details><summary>direct-Vite build output</summary>
vite v8.3.0 building ssr environment for production...
transforming...
✓ 2 modules transformed.
rendering chunks...
computing gzip size...
vite-direct-dist/main.js  1.44 kB │ gzip: 0.58 kB

✓ built in 20ms
</details> <details><summary>direct-Vite execution output</summary>
file:///private/var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC/consumer/vite-direct-dist/main.js:5
var ConsumerController = @Controller("/consumer") class {
                         ^

SyntaxError: Invalid or unexpected token
    at compileSourceTextModule (node:internal/modules/esm/utils:346:16)
    at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:110:18)
    at #translate (node:internal/modules/esm/loader:559:20)
    at afterLoad (node:internal/modules/esm/loader:612:29)
    at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:617:12)
    at #createModuleJob (node:internal/modules/esm/loader:640:36)
    at #getJobFromResolveResult (node:internal/modules/esm/loader:353:34)
    at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:321:41)
    at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:680:25)

Node.js v22.23.0
</details>

Guarded metadata symbol

  • A Symbol.metadata set before importing @strata-sc/core in an isolated process remained unchanged after import: true.

Negative controls

  • Missing tarball → install failure propagated: true (npm exit 254).
  • Deliberately corrupted expected response → assertion helper detected it: true.

Acceptance criteria evidence

IDStatusEvidence
AC1PassBuilt and packed from checkout; tarballs strata-core-0.0.0.tgz, strata-h3-0.0.0.tgz with recorded digests.
AC2BlockedSingle resolved core copy: true. No workspace: protocol: true. Clean tsc typecheck: false — see R01/R14 blocker below (root cause isolated to h3's own declaration files, not to @strata-sc/core or @strata-sc/h3).
AC3Passtsc-emitted JS reports the expected definition/routes and preserves a preexisting Symbol.metadata.
AC4PassBoth tsc-emitted JS and the Vite-bundled reference output return the expected sync/async/native responses.
AC5PassDirect-Vite outcome recorded as "runtime_failed" with build/execution diagnostics captured.
AC6PassMissing-tarball install and corrupted-response assertion both failed as required.
AC7Pass.github/workflows/ci.yml runs pnpm test:consumer on the repository's Node 22/pnpm 10.30.1 runner after building; this report documents the two-stage recipe and excludes Angular/Analog claims.
AC8PassNo production source, package manifest, or private transform was modified by this slice; this report maps every acceptance ID to evidence and lists blockers below.

Blockers

R01/R14: Consumer-local strict tsc does not cleanly typecheck against the pinned tuple (TypeScript 6.0.3, H3 2.0.1-rc.32, mandated lib set).

All diagnostics originate from h3's own shipped declaration files (node_modules/h3/dist/*.d.mts), not from @strata-sc/core or @strata-sc/h3 declarations. Two independent causes were isolated:

  1. HTTPError.isError is declared static override, assuming an ambient Error.isError static member that only exists via TypeScript's esnext.error lib — not part of the ES2023/DOM/DOM.Iterable/esnext.decorators set SPEC-001 mandates. This raises TS4113.
  2. h3's root type entry unconditionally imports types from crossws, an optional peer dependency SPEC-001's fixed install list does not include. This raises TS2307. Installing crossws was tried as a diagnostic-only deviation and made things worse: it transitively requires bun, cloudflare:workers and @cloudflare/workers-types type packages, none of which are installed either.

skipLibCheck would silence both, but SPEC-001 explicitly forbids using it to suppress declaration errors, so this is reported as a blocker rather than routed around.

Raw diagnostics:

node_modules/h3/dist/h3.d.mts(638,19): error TS4113: This member cannot have an 'override' modifier because it is not declared in the base class 'Error'. node_modules/h3/dist/index.d.mts(3,106): error TS2307: Cannot find module 'crossws' or its corresponding type declarations.

Owner: not @strata-sc/core/@strata-sc/h3 — see evidence above. Requires a separate fix spec from Astra.

Temporary directory

Left on disk for inspection: /var/folders/wq/4bgf9dy51d5776cl3qgg362h0000gn/T/strata-consumer-HEYHFC

Source: docs/research/consumer-compilation.md

Generated by Entwine · Markdown remains the source of truth.