Repository navigation
ci: add packaging & monorepo consistency validation (publint + attw + sherif) #34
Description
Activity
- addedenhancementNew feature or requestNew feature or requestarea:buildPackaging, exports map, tsconfigPackaging, exports map, tsconfigarea:ciWorkflows, dependabot, toolingWorkflows, dependabot, tooling
on Jul 13, 2026 - addedstatus:readyTriaged and accepted - ready to be picked upTriaged and accepted - ready to be picked up
on Jul 13, 2026 Triage complete
- Type: Feature
- Area: ci, build
- Status: ready
- Priority: Medium
- Effort: Low
Verification: CONFIRMED —
publint,@arethetypeswrong/cli, andsherifare not installed in the repo;packages/type-testing/src/types/special.ts:5hasfrom './equality'without the.jsextension, which is exactly the kind of issue attw would surface.Next steps: This is ready to be picked up.
See also #35 for the root cause fix (
special.tsimport).Triage by @martyy-code.
- addedstatus:in-progressSomeone is working on itSomeone is working on itand removedstatus:readyTriaged and accepted - ready to be picked upTriaged and accepted - ready to be picked up
on Jul 13, 2026 Implementation started
PR opened: #46
The spec at
docs/internal/plans/34/plan.mdwas reviewed and approved (2026-07-13). Implementation complete; all four checks green locally:pnpm build✅pnpm typecheck✅ (3 packages)pnpm test✅ (252 tests)pnpm check:packaging✅ (publint + attw + sherif)
Surface findings fixed inline (anticipated by the spec risk section):
- Second bare-relative import at
src/types/property.ts:5(same asspecial.ts:5) — attw surfaced this on first run. exportsmap: types condition first, nestedimport.typesformoduleResolution: "bundler", default condition on each entrypoint — publint surfaced.- Workspace drift: align
eslint(apps/web) +typescript(apps/web,examples) ranges — sherif surfaced.
attw note: the script passes
--ignore-rules no-resolution cjs-resolves-to-esmbecause the lib is ESM-only and these rules are intrinsic noise for ESM-only packages. Both exclusions are documented in the script invocation; the matrix table is otherwise green across node10 / node16 (CJS) / node16 (ESM) / bundler.Post-merge step (repo-settings, not in the PR diff): flip the three new CI jobs into the branch-protection required-status-checks list. The exact
gh apicommand is in the PR description.Triage by @martyy-code.
preferred over
syncpackwhile the latter's Rust rewrite is in progress.The rust rewrite is complete BTW, since 14.0.0
Description
Add lightweight CI jobs that validate the published packaging and version consistency of the monorepo:
package.json/exports/files/main/typesof the published lib.node16/nodenext/bundlerand surfaces real consumer-facing defects (types-only exports vanishing in CJS, missing defaults, bad module syntax).@types/*, desync betweennextandeslint-config-next, alphabetical dep order, etc.).Why
packages/type-testing/src/types/special.ts:5(import missing.jsextension) when targetingnodenext.Acceptance criteria
turbo run lint) forpublint,attw, andsherif.special.tsimport issue.main.CONTRIBUTING.mdunder the "Code quality" section.Notes
tsdowncan integratepublintandattwnatively aslint: { publint: true, attw: true }; defer that switch to a separate issue if/when we move offtsc -b.sherifis preferred oversyncpackwhile the latter's Rust rewrite is in progress.