@stardeck-customer-apps/compose 0.8.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md CHANGED
@@ -18,11 +18,18 @@ Compose turns that declaration into the code Next.js actually builds:
18
18
  per composed Module that ships `server/registrations.ts`
19
19
  - one `page.tsx` / `route.ts` stub under `apps/web/src/app/**` per declared
20
20
  mount and endpoint
21
+ - `apps/web/tsconfig.build.gen.json` (apps with a Module tree only) — extends
22
+ `tsconfig.json` and excludes every Module `--enabled` left out, plus each
23
+ kept Module's `enhancements/<excluded>/`. Their source stays on disk but their
24
+ stubs are gone, so `next build` must type-check through this file
25
+ (`typescript.tsconfigPath` in `next.config.ts`), never through `tsconfig.json`.
26
+ Gitignore it; do not hand-maintain an exclude list.
21
27
 
22
28
  ## Running it
23
29
 
24
30
  ```bash
25
31
  npx stardeck-compose [--enabled=a,b,c] [--prune] [--cwd=<repo root>]
32
+ npx stardeck-compose --check-boundaries [--cwd=<repo root>]
26
33
  ```
27
34
 
28
35
  Run it from the repo root (the directory holding `apps/web`). The Blueprint
@@ -75,6 +82,24 @@ a silent fallback. It holds deployment facts: gitignore it (`apps/web/.gitignore
75
82
  a git checkout, and a clean one: it refuses when `git status --ignored`
76
83
  reports uncommitted or ignored files under `apps/web/src/modules`, and
77
84
  refuses outside a checkout — it is for throwaway deploy checkouts, not yours.
85
+ It also refuses, before deleting anything, when a file outside
86
+ `apps/web/src/modules` imports an excluded Module, or when a kept Module's own
87
+ file (tests included) would import a deleted path: an excluded Module, any
88
+ Module's `enhancements/<excluded>/`, a `.sql`/`.json` of theirs read by path,
89
+ or another kept file that does. Only a file inside the Module's own
90
+ `enhancements/<excluded>/` goes with the peer (with any excluded peer: a
91
+ booking slice may import membership when both are pruned). Fix: move the file into
92
+ `src/modules/<module>/enhancements/<peer>/`, or declare the peer in `uses` and
93
+ enable it. A test that needs two optional peers at once cannot live in one
94
+ `enhancements/` folder: load the second peer's harness only when
95
+ `isModuleEnabled(peer)` and `it.skipIf` without it. Needs compose 0.9.0 or
96
+ later for the Module-file check.
97
+ - `--check-boundaries` — Blueprint lint; composes nothing. Checks every Module
98
+ against every feature Module it does not list in `uses` (whether it lists it
99
+ in `enhancements` or not), as if all of them were switched off, and exits 1
100
+ listing the offending files. Library Modules are always composed and never
101
+ count. Run it in Blueprint CI so such an import is caught before a customer
102
+ prunes.
78
103
 
79
104
  ## Rules
80
105