Repository navigation
fix(plugin-hono-server): skip lib check so the workspace typecheck fits the CI heap - #26356
Conversation
…eck fits the CI heap Claude-Session: https://claude.ai/code/session_01BVeRMDCTHZCcrUPPJm5cFJ Co-authored-by: Claude <noreply@anthropic.com>
…sconfig comment Claude-Session: https://claude.ai/code/session_01BVeRMDCTHZCcrUPPJm5cFJ Co-authored-by: Claude <noreply@anthropic.com>
📓 Docs Drift Check
What this run could not see
Coarse fallback — 9 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
席位核对 · ACCEPT · devx seat 2 · 2026-10-26T23:13ZSeat
Generated by Claude Code |
Requested by Steve · project thread
Fixes #26288
Clause-②: no
Metadata-protocol: none
维护者速读
plugin-hono-server的 tsconfig 加一行skipLibCheck: true(附一段注释)。它是仓里唯一一个没设这个开关的包配置。.d.ts(大头是 spec 的产物),峰值内存 4.36 GB,已顶到 CI 的 4136 MB 堆上限,动 spec 的 PR 会在没有类型错误的情况下 OOM 变红。改后峰值 0.98 GB,耗时 93 s 降到 7 s。dist/改前改后逐字节相同。回滚就是删掉这一行。packages/plugins/plugin-hono-server/tsconfig.json。NODE_OPTIONS=--max-old-space-size=4136 pnpm --filter @objectstack/plugin-hono-server typecheck,预期 0 错误、十几秒跑完。What changes
One option in
packages/plugins/plugin-hono-server/tsconfig.json:"skipLibCheck": true, with a comment saying why.tsconfig.typecheck.jsonandtsconfig.test.jsonextend this file, so all three tsc programs in the package'stypecheckscript pick it up.Why this option and not
extends: "../../../tsconfig.base.json": both options were built and measured (see Verification).skipLibCheck: true:dist/stays byte-identical, with 0 type errors.lib: ["ES2020"], which drops theDOMlib that this package's defaulttarget: ES2022lib carries today. It also turns onnoUnusedLocals/noUnusedParameters. The result is 73 errors: 58 × TS18046 and 10 × TS2571 (fetchResponse.json()turns intounknown), 3 × TS6133, and 2 × TS2769. The tsup DTS build fails, sodist/losesindex.d.tsandindex.d.mts. The siblingtsconfig.test.jsonheader already records the samelibtrap.No published file changes:
filesisdist,README.mdandCHANGELOG.md, anddist/is byte-identical. So this PR carriesskip-changeset.Tests
pnpm --filter @objectstack/plugin-hono-server build: green.pnpm --filter @objectstack/plugin-hono-server test: green, 35 test files and 448 tests passed.pnpm --filter @objectstack/plugin-hono-server typecheck(all three programs pluscheck:test-typecheck) underNODE_OPTIONS=--max-old-space-size=4136: exit 0, 0 errors, on head3db795be.Acceptance notes
The lib check hid nothing in this package. With lib checking on, origin/main already had 0 errors in all three programs. So the flag hides no lib-check-only error class here.
Sweep of the other workspace tsconfigs that extend nothing. This was measure-only, with nothing edited. The card premise does not hold for them: every one already sets
skipLibCheck: true.plugin-hono-serverwas the only one that did not. So instead of adding the flag, the sweep measured what turning it off (--skipLibCheck false) would expose. All runs usedNODE_OPTIONS=--max-old-space-size=4136and TypeScript 6.0.3, with the dependency closure built.apps/docs(afterfumadocs-mdx && next typegen).d.ts: fumadocs-mdx TS2307@fumadocs/satteri/presetexamples/app-crmexamples/app-multi-packageexamples/app-showcaseexamples/app-todopackages/cli(tsconfig.json).d.ts: better-auth core TS2307bun:sqlite, bundle-require TS7016load-tsconfigpackages/cli(tsconfig.build.json)packages/create-objectstackpackages/create-objectstack/src/templates/blankpackages/qa/dogfoodpackages/qa/downstream-contractpackages/qa/dogfoodat 2.6 GB.node_modules, so none of them is ours to fix.@objectstack/{verify,connector-rest,connector-openapi,connector-mcp}. They happen in both modes because the template is not a workspace package and has no installed deps, so they are not lib-check errors.The heap limit was not raised.
No path under
ui/,.github/**or the rootci.ymlwas touched.Verification
Before and after, plugin-hono-server, NODE_OPTIONS=--max-old-space-size=4136, GNU time -v
Base origin/main
71580254. Closure built withturbo run build --filter='@objectstack/plugin-hono-server^...'. Wall times are from a shared box, so the ratios count more than the absolute values.tsc --noEmit -p tsconfig.jsontsc --noEmit -p tsconfig.typecheck.jsontsc --noEmit -p tsconfig.test.jsonpnpm run typecheck(whole script).d.ts. Of that, 98 files and 23.3 MB are@objectstack/spec's dist.dist byte-identity
pnpm --filter @objectstack/plugin-hono-server buildon origin/main was run twice, anddiff -rshowed the two outputs identical, so the build is deterministic.16661e1fand on the final head3db795be. Both timesdiff -ragainst the origin/main copy printed nothing.index.{js,mjs,d.ts,d.mts,js.map,mjs.map}. sha256 of the sorted file sums isd464c12c….tsconfig.base.jsoninstead fails the DTS build:index.d.tsandindex.d.mtsare missing fromdist/.Derived gate families on head 3db795b
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackderived 47 commands: 19 pnpm and 28 direct node./dev/null. The packages build ran first, forcheck:dts-closureandcheck:dual-build-cjs-loads.check-plugin-teardown-shape.mjs --self-testfirst exited 3 (PREREQUISITE NOT MET, a pinned fixture commit missing from the shallow clone). Aftergit fetch --depth=1 origin 621a4876…it exited 0 with 48 cases passing.--ranreconciliation:47 derived, 47 run, 0 NOT-MEASURED, 0 UNRUN(a derived zero).Generated by Claude Code