tsconfig.json — delivered tsconfig (E19)
The strict TypeScript config delivered to npm-lane consumers: ES2022 + NodeNext modules, the full strict family (noUncheckedIndexedAccess, exactOptionalPropertyTypes, verbatimModuleSyntax) and a tests-covering include set the stage's FC3 check reads.
tsconfig.json — delivered tsconfig (E19)
Status: shipped-beta · Ships to: npm-lane, all tier arms (core / env+ / factory) · Fires at: install time (setup.d/40-configs.sh); afterwards read by every typecheck rung — the pre-push hook's tsc pass, vitest, and the delivered CI workflow
What it is
The baseline TypeScript configuration a fresh consumer starts from. The compiler-options block is strict by default in the strongest sense: strict plus the individually-opt-in flags that strict does not imply — noUncheckedIndexedAccess, noImplicitOverride, noPropertyAccessFromIndexSignature, exactOptionalPropertyTypes, verbatimModuleSyntax, isolatedModules — over ES2022 / NodeNext.
How it works
- The
includeset coverssrc/**/*,apps/*/src/**/*,packages/*/src/**/*andtests/**/*— the monorepo-shaped default, with tests deliberately inside the compile surface. - That tests-in-include property is load-bearing beyond typing: the stage's FC3 "tests setup" check reads the delivered (or consumer-kept) tsconfig and treats tests as covered when the installer wrote the tsconfig itself, OR the config has no
includekey (tsc default = whole tree), OR some include entry starts withtests— otherwise the install notes the gap. An unreadable/JSONC tsconfig fails OPEN (treated covered, never aborts). - Delivery is
copy_safe: a brownfield consumer's own tsconfig.json is SKIPPED and kept — the FC3 check above is how the stage stays honest about what a kept config covers. - The
excludelist mirrors the gitignore seed (E10):node_modules,dist,coverage,.stryker-tmp,reports. - Lane honesty: npm-lane only — the python lane's architecture doc explicitly tells agents there is no
tsconfig.jsonin a Python project, and the cargo/go lanes ship no TypeScript surface at all.
Satellites & companions
Delivered by 40-configs (A13) next to the other configs (E1, E3, E10). Read by the pre-push rung's typecheck (E13/D20) and by the shipped CI workflow's typecheck job. The ts-server architecture template (E6) documents the layer rules this config's verbatimModuleSyntax + isolatedModules posture supports.
Anchors
At framework pin aa87d0a47a6d8502f983cc9fe7284bd5dcb3d650:
packages/core/templates/shared/tsconfig.json:3— « "target": "ES2022",»packages/core/templates/shared/tsconfig.json:9— « "noUncheckedIndexedAccess": true,»packages/core/templates/shared/tsconfig.json:12— « "exactOptionalPropertyTypes": true,»packages/core/templates/shared/tsconfig.json:27-29— « "apps//src/**/",» « "packages//src/**/",» « "tests/**/*"»setup.d/40-configs.sh:138— «copy_safe "$PKG_ROOT/packages/core/templates/shared/tsconfig.json" "$PROJECT_ROOT/tsconfig.json"»setup.d/40-configs.sh:146-148— «# Covered ⇔ the installer wrote tsconfig.json itself (not in SKIPPED), OR the tsconfig has NO» «# include key (tsc default = whole tree), OR some include entry starts with "tests".» «# Unreadable/JSONC tsconfig → fail-OPEN: treat covered, no note, never abort the layer.»
integration-rules.md — integration rules template (E14)
A consumer-customisable template of six cross-service rule families (API contracts, CDC, event schemas, service auth, observability, resilience) delivered to .ai-factory/rules/ for microservice systems to share as one contract.
Cargo.lints.toml — the [lints.clippy] deny projection (E22)
The cargo lane's reference table that projects the clippy.toml bans onto clippy's severity ladder so they FAIL the build — delivered to .getff/ as a reference the consumer merges by hand; getff never edits a Cargo.toml.