Owner: shared infra Last reviewed: 2026-05-28
The repo-root npx tsc --noEmit is green. Per-library tsc --noEmit loops in
some libraries still fail because of patterns the root typecheck doesn't surface
(composite-mode rootDir violations, package-export drift, stale generated/
outputs).
Audit #60 framed this as "3 catastrophic + 14 high libs". The catastrophic ones (lakshmi, tara/analytics, veritas/auth + 24 libs sharing the rootDir+composite pattern across veritas + aphrodite + asase) were fixed in:
- 87b3da7 (lakshmi composite + receipts createHash import)
- 8e2a4f1 (tara/analytics declaration + veritas/auth lib + DOM)
- 0bac56e (24-lib rootDir+composite sweep)
The remaining lib-level failures fall into two patterns. Each is tracked as follow-up; the per-library owner takes the fix as part of their next PR.
Pattern A: Package-export drift (TS2305)#
When an upstream package's exports field narrows under
moduleResolution: "bundler", a named import that worked under "node" mode
stops resolving. The fix is to import from the explicit subpath the upstream
lib's exports allows.
Example landed: libs/veritas/search/src/client.ts imported ClientOptions
from @elastic/elasticsearch (its main index), which under bundler mode
resolves to the ESM index — which doesn't re-export ClientOptions. Fixed by
importing from @elastic/elasticsearch/lib/client.
Search for these with:
find libs -maxdepth 3 -name 'tsconfig.json' | while read tc; do
d=$(dirname "$tc")
cd "$d"
npx tsc --noEmit 2>&1 | grep -E 'TS2305' && echo " in $d"
cd -
done
Pattern B: Real type errors in implementation#
A handful of libs have actual type errors in their source — not config issues. Examples:
libs/veritas/expansion: 16 errors, mostly missing properties onExpansionPlanSchematypes that drifted from the prisma model.libs/veritas/business: 28 errors —decimalprecision conflict between drizzle-orm and the prisma client types.libs/veritas/storage: 59 errors —S3Clientconstructor signature changed in@aws-sdk/client-s3v3 → v4.libs/veritas/content-auth: 124 errors — biggest single offender; the@c2pa-rs/wasmpackage's type defs target a newer toolchain than this lib's tsconfigtarget: ES2020.libs/veritas/risk: 54 errors —zodv3 → v4 schema-output type shape changes ripple through every risk-rule type.libs/aphrodite/avatar-physics: 15 errors —@rapier/rapier3dtype defs.libs/asase/sota: 23 errors — drift after the recent ML pipeline refactor that landedBatchInferenceRequestshape changes.
Each is a per-owner fix. The shared-infra team won't take blanket PRs here because the right fix needs the lib's domain knowledge (which schema field is canonical, which sdk version is intended, etc.).
How to verify your lib#
cd libs/<domain>/<package>
npx tsc --noEmit
If this fails:
- Check whether the failure is a TS6059 / TS6307 rootDir issue. If so, remove
rootDirandcompositefrom the lib'stsconfig.json— the @nx/js:tsc executor handles cross-package builds via the workspace path map. - Check whether the failure is a TS2305 named-import miss. If so, import from
the explicit subpath the upstream lib's
exportsfield allows. - Otherwise, fix the underlying type error.
The repo-root npx tsc --noEmit from the workspace root is the canonical
typecheck; lib-level checks are convenience-only and don't gate CI directly. The
CI typecheck job runs the root command, plus @nx/js:tsc builds per-project, both
of which are green as of 2026-05-28.