From 95613ed1265e912153edcd7269bc970b5d3e50b5 Mon Sep 17 00:00:00 2001 From: Danijel Martinek Date: Wed, 6 May 2026 16:50:54 +0200 Subject: [PATCH] =?UTF-8?q?docs(spec):=20vertical-feature-spec=20=C2=A79.4?= =?UTF-8?q?=20=E2=80=94=20list=20./ui=20+=20./di/bind-production=20in=20ex?= =?UTF-8?q?ports?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Doc-pass agent flagged §9.4 still listed only '.', './cms', './api' as the allowed public surface. ./ui was added in Plan 9 and ./di/bind-production in Plan 5; both belong in the canonical list. --- docs/architecture/vertical-feature-spec.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/architecture/vertical-feature-spec.md b/docs/architecture/vertical-feature-spec.md index 4f2fa9c..0df1fa2 100644 --- a/docs/architecture/vertical-feature-spec.md +++ b/docs/architecture/vertical-feature-spec.md @@ -449,7 +449,7 @@ Note: `core-trpc` is `core-composition` (not plain `core`) because it transitive ### 9.4 Four enforcement layers 1. **`package.json` dependencies** — only allowed deps declared. -2. **`exports` maps** — feature packages expose `.`, `./cms`, `./api` only (no deep source paths). +2. **`exports` maps** — feature packages expose `.`, `./ui`, `./cms`, `./api`, `./di/bind-production` only (no deep source paths). `./ui` was added in Plan 9; `./di/bind-production` was added in Plan 5. 3. **ESLint `eslint-plugin-boundaries`** (lint-time) — configured in `packages/core-eslint/` flat config: - Enforces the five-tag rules (same rules as Turbo boundaries) - File-specific exemptions via `// @boundaries-ignore` comments