Skip to main content

SOLID client-safe imports spike — WS6 eslint burn-in

Tier: Internal
Status: Promoted to error (S closure epic 2026-06-06) — was warn burn-in from Wave 11.
Audience: app authors, CI maintainers
Related: DATA-ACCESS-BOUNDARIES.md §6, solid-audit-inventory.md, LINTING.md


1. Problem

solid-inventory.ts flagged 77 P2 rows for @umbraculum/brewery-recipes-ui and @umbraculum/brewery-beerjson imports in apps — packages were client-safe but missing from APP_CLIENT_PACKAGE_PREFIXES (which listed legacy @umbraculum/recipes-ui / @umbraculum/beerjson names only).


2. Verification (2026-06-05)

Packagenpm nameDependencies (runtime)Prisma / API?
BeerJSON helpers@umbraculum/brewery-beerjson@umbraculum/brewery-coreNo
Recipe/water UI@umbraculum/brewery-recipes-uibrewery-beerjson, i18n-react, ui, tamaguiNo

Grep of both package trees: zero @prisma, zero services/api imports.


3. Artifacts landed (Wave 11)

ArtifactRole
scripts/eslint/appClientPackageAllowlist.mjsSingle source of truth for inventory + future strict rule
scripts/audit/solid-inventory.tsImports shared allowlist
eslint.config.mjs WS6 blockno-restricted-imports at error for @prisma/* and **/services/api/** in apps (promoted S closure epic 2026-06)
DATA-ACCESS-BOUNDARIES.md §6Documents client-safe vertical packages

4. Verdict

SOUND for burn-in (warn-level). Inventory P2 client-safe rows should drop to 0 after allowlist update. WS5 boundaries/element-types already blocks apps/* → services/api/** at error; WS6 adds explicit @prisma messaging and documents the promotion path.

Promotion criteria (warn → error)

  1. One release cycle on master with 0 new WS6 warnings in ci-parity lint job.
  2. No false positives on legitimate @umbraculum/brewery-* imports.
  3. Follow B5 pattern: promote in dedicated PR; update this doc + LINTING.md TL;DR table.

Burn-in evaluation log

DateWaveci-parity lint WS6 warningsFalse positives on @umbraculum/brewery-*Decision
2026-06-04Wave 13 Phase 9Archive lint OK on 951f51e (no WS6 regressions observed in green run)None reportedDefer warn→error — operator approval required for promotion PR; one full release cycle since Wave 11 not independently metered
2026-06-06Wave 14 Phase 8Archive lint OK on d25fc8a pre-commit baseline (full ci-parity green); no WS6 regressions observedNone reportedDefer warn→error — operator approval required for promotion PR
2026-06-06Wave 15 Phase 10Working-tree + archive lint OK on Wave 15 refactor (no WS6 regressions observed in green runs)None reportedDefer warn→error — operator approval required for promotion PR
2026-06-06Wave 16 Phase 9Working-tree lint OK on Wave 16 hygiene splits (typecheck + lint green; no WS6 regressions observed)None reportedDefer warn→error — operator approval required for promotion PR
2026-06-04Wave 17 Phase 8Working-tree + archive lint OK on Wave 17 tail parity + Tier A route thinning (no WS6 regressions observed); boundaries/element-types 0 violations on services/api/src/modulesNone reportedDefer warn→error — operator approval required for promotion PR
2026-06-06S closure epicArchive lint OK after WS6 promotion (warnerror on apps/{web,native}/**)None reportedPromoted to error — see solid-post-wave17-closure.md §7

5. Sign-off

FieldValue
Date2026-06-05
SubplanWS6 / Wave 11 Phase 5
VerdictSOUND — promoted to error (S closure epic 2026-06-06); see solid-post-wave17-closure.md §7