T-UWFT-augmented-packages-split-and-adopt
State: planning/draft · Impact: medium · Complexity: large
The six packages under solutions/augmented/packages/ts are the only configs in
the repo that emit dist/ from tsconfig.json itself rather than a separate
tsconfig.build.json. So they cannot simply extend the shared bar — the bar
sets noEmit: true. They need the dev/build split first, which is why they are
last in the adoption order and their own task.
| Location | Role today |
|---|---|
solutions/augmented/packages/ts/books/tsconfig.json | Emits: outDir, rootDir, declaration, declarationMap, sourceMap in the dev config; paths aliases; strictNullChecks restated under strict |
solutions/augmented/packages/ts/context/tsconfig.json | Byte-identical |
solutions/augmented/packages/ts/hierarchy/tsconfig.json | Byte-identical |
solutions/augmented/packages/ts/logging/tsconfig.json | Byte-identical |
solutions/augmented/packages/ts/entity/tsconfig.json | Same family but NodeNext; excludes **/*.test.ts |
solutions/augmented/packages/ts/utils/tsconfig.json | NodeNext, and noEmit: true instead of the emit block — already the odd one out |
packages/ts/tsconfig/presets/build.json | The shared emit mixin these should end up using |
Proposed
Section titled “Proposed”Each package has a tsconfig.json that extends the shared bar and does not
emit, plus a tsconfig.build.json that extends ["./tsconfig.json", "@sksizer/tsconfig/build"] and carries only rootDir and any include
narrowing — the shape every publishable package in packages/ts already uses.
The paths aliases stay local: they are per-package facts and, unlike
compilerOptions, resolve against the config that declares them.
Approach
Section titled “Approach”- Split one package first —
books— and establish the pattern end to end: dev config on the bar, build config on the mixin,bun run buildproducing the samedist/as before. - Verify by building from the old config and the new one and diffing the trees.
That is what caught the
${configDir}trap in #1644 and it is the right check here too. - Apply the pattern to the other four emitting packages.
utilsalready setsnoEmit, so it only needs theextendschange — take it last as the easy one, or first as a warm-up.- Delete the
strictNullChecksrestatement (implied bystrict) and thenoImplicitAny/forceConsistentCasingInFileNamesrestatements while there. - Confirm each package’s consumers still resolve — these are
workspace:*dependencies of the augmented apps, and the emit shape is what those apps import.
| Area | Note |
|---|---|
solutions/augmented/packages/ts/books/tsconfig.json | extend the bar, stop emitting |
solutions/augmented/packages/ts/books/tsconfig.build.json | the emit mixin |
solutions/augmented/packages/ts/context/ | same split |
solutions/augmented/packages/ts/entity/ | same split, keeping NodeNext |
solutions/augmented/packages/ts/hierarchy/ | same split |
solutions/augmented/packages/ts/logging/ | same split |
solutions/augmented/packages/ts/utils/tsconfig.json | extend the bar; already noEmit |
Acceptance criteria
Section titled “Acceptance criteria”- AC-1: All six extend a
@sksizer/tsconfig/*preset and none emits fromtsconfig.json. - AC-2: The five that emit have a
tsconfig.build.jsonon the shared mixin. - AC-3:
dist/output is byte-identical before and after for each package, verified by building both ways and diffing. - AC-4: The augmented apps that consume these packages still build.
Out of scope
Section titled “Out of scope”- The augmented apps’ own configs — three are Nuxt project-reference stubs and
cannot take the bar;
augmented-books/src-frontendandvimitare separate standalone configs that belong with the strays. - Publishing any of these packages.
Dependencies
Section titled “Dependencies”- Sequenced after T-UUUD-agent-pants-and-strays-adopt-the-bar and T-5YZA-determined-adopts-the-bar — those are simple adoptions, this one restructures each package first, so it benefits from the earlier two settling the preset choices.
Discovery context
Section titled “Discovery context”Called out as the hardest tranche in #1644’s deferred section: these six are structurally different rather than merely laxer.