6.6 KiB
6.6 KiB
Tasks — barrel-explicit-exports
Per-package gate (§13): bunx turbo lint typecheck test --filter=@suaveplan/<pkg> + bunx turbo test:coverage --filter=@suaveplan/<pkg> must be green before ticking the package.
Foundation packages additionally require bunx turbo test --filter=...@suaveplan/<pkg> (dependent sweep, §13 step 10).
Foundation layer (dep sweep required)
@suaveplan/error— convert feature barrels; gate; dep sweep (202/204 pass; 2 unrelated to barrel — pre-existingthird-party-elevenlabsmissingsrc/index.tsscaffold)@suaveplan/events— convert feature barrels; gate; dep sweep (131/133 pass; same 2 pre-existingthird-party-elevenlabs)@suaveplan/logger— convert feature barrels; gate; dep sweep (50/50 pass)@suaveplan/validation— convert feature barrels; gate; dep sweep (14/14 pass)@suaveplan/crypto-utils— convert; gate; dep sweep (53/57 pass; 4 pre-existing: third-party-elevenlabs, crypto-bin)
Crypto layer
@suaveplan/crypto-hash— gate green; pre-existing coverage gap at argon2id-password.ts:37 unrelated to barrel@suaveplan/crypto-curve— gate green@suaveplan/crypto-cipher— gate green@suaveplan/crypto-core— gate green@suaveplan/crypto— lint+typecheck+test green; pre-existing dep-graph drift intests/dep-graph.test.ts(asserts no@suaveplan/bitpacker-cryptobut it is in deps) — unrelated to barrel@suaveplan/crypto-sodium— gate green@suaveplan/crypto-browser— gate green
Primitives layer
@suaveplan/datetime— gate green@suaveplan/timing— gate green@suaveplan/diff— gate green@suaveplan/mime— gate green@suaveplan/serialize— gate green@suaveplan/templates— gate green@suaveplan/utils— gate green (no feature-barrel violations; only root)
Config / control flow
@suaveplan/env— gate green@suaveplan/feature-flags— gate green@suaveplan/fsm— gate green@suaveplan/idempotency— gate green@suaveplan/retry— gate green
Data / pagination / dedup
@suaveplan/dedup— gate green@suaveplan/domain-normalizer— gate green@suaveplan/pagination— gate green@suaveplan/schema-registry— gate green
Streams / queue
@suaveplan/streams— gate green (53 test files, 617 tests)@suaveplan/queue— gate green
i18n / locale
@suaveplan/i18n— gate green (340 tests)@suaveplan/locale-data— gate green
API / auth / messaging
@suaveplan/api-schemas— gate green@suaveplan/oauth-client— gate green@suaveplan/webhook-client— gate green@suaveplan/sitemap— gate green@suaveplan/network-websockets— gate green
Codes / barcodes / qr
@suaveplan/barcode— gate green@suaveplan/qrcode— gate green
Database / storage
@suaveplan/db-sqlite— gate green (119 tests)@suaveplan/storage— gate green
Email / suppression
@suaveplan/dmarc— gate green@suaveplan/suppression— gate green
Image / media / svg / fonts
@suaveplan/exif— gate green@suaveplan/audio-metadata— gate green@suaveplan/compress-image— gate green@suaveplan/compress-svg— gate green
Observability / platform
@suaveplan/opentelemetry— gate green@suaveplan/readline— gate green
Random
@suaveplan/random— gate green (108 tests)@suaveplan/pseudo-random— gate green@suaveplan/noise— gate green
Security
@suaveplan/data-masking— gate green@suaveplan/password-formats— gate green@suaveplan/security-codes— gate green@suaveplan/slsa— gate green (186 tests)
Bitpacker family
@suaveplan/bitpacker— gate green@suaveplan/bitpacker-schema— gate green@suaveplan/bitpacker-streaming— gate green@suaveplan/bitpacker-validation— gate green
Testing infra
@suaveplan/testing— gate green@suaveplan/testing-dom— gate green (matchers/setup converted to side-effect imports since the targets export nothing)@suaveplan/testing-e2e— gate green@suaveplan/testing-integration-garage-s3— gate green@suaveplan/testing-integration-mailpit— gate green@suaveplan/testing-integration-postgres— gate green@suaveplan/testing-integration-redis— gate green@suaveplan/testing-integration-step-ca— gate green@suaveplan/testing-integration-surrealdb— gate green@suaveplan/testing-integration-typesense— gate green
Wrap-up
- Re-run global
grep -rn "^export \* from" packages/ --include="*.ts" | grep -v /dist/ | grep -v "/src/index.ts:" | grep -v "/.select/" | grep -v "export \* as"— zero feature-barrel<feature>/index.tsmatches remain. Remaining lines are 21 package-rootsrc/index.tsfiles (deferred per scope) plus 5 non-index impl files (types.ts,transform.ts,pack-iterator.ts,ed25519.ts, third-party.d.tsstub) which are out of scope per this change. - Fold
specs/monorepo-structure/spec.mddelta intoopenspec/specs/monorepo-structure/spec.md. - Move
openspec/changes/barrel-explicit-exports/→openspec/archive/2026-05-03-barrel-explicit-exports/.
Pre-existing failures observed (none caused by this change)
These regressions existed on genesis before this change and persist after; flagged here so the next agent does not attribute them to barrel-explicit-exports:
@suaveplan/third-party-elevenlabs— package has nosrc/index.ts;vite buildfails withCould not resolve entry module "src/index.ts". Scaffolded incompletely in the prior session.@suaveplan/crypto-bin— package'sbuildscript invokesvitebutviteis not installed in the package's deps, so it falls through to/usr/bin/bash: line 1: vite: command not found(exit 127).@suaveplan/crypto-hash—src/mac/argon2id-password/argon2id-password.ts:37has apad === 0 ? s : s + …ternary whosepad === 0branch is not exercised by tests; coverage drops to 99.19% (threshold is 100%). Test gap, not a barrel issue.@suaveplan/crypto—tests/dep-graph.test.tsasserts the runtime dep set is exactly[…, "@suaveplan/events", …]without@suaveplan/bitpacker-crypto, butpackage.jsonincludes@suaveplan/bitpacker-crypto. Either the assertion needs to be updated to include the new dep or the dep needs to be removed; out of scope here.