# Lite and Pro Package Boundary SlideStage Lite owns the `.stage` runtime and shared packages. SlideStage Pro is the self-hosted team platform. Principle: **Pro consumes published Lite packages; Lite does not know Pro exists.** ## Why the boundary exists Without a boundary: - `.stage` validation can drift. - Pro patches cannot flow upstream cleanly. - Edition checks such as `isPro` can leak into Lite. The boundary keeps Lite independently deployable and keeps Pro stable. ## Allowed dependencies Pro may depend on: - `@slidestage/core` - `@slidestage/ui` - `@slidestage/lite-preset` - `@slidestage/brand` - `@slidestage/spec` Use semver npm dependencies. ## Forbidden patterns Do not commit: - `file:../SlideStageLite/...` - `link:../SlideStageLite/...` - Deep imports from a Lite checkout. - Re-declared `manifestSchema`. - Copied `loadDeck` or path safety logic. - `isPro` or `VITE_APP_EDITION` edition branches. Local linking is fine only as temporary developer setup. ## How Pro extends Pro-only code belongs in Pro packages and apps: - `packages/pro-preset` - `packages/pro-shared` - `apps/api` - `apps/web` Shared runtime needs should become generic Lite/Core/Spec extension points first. ## `.stage` ownership The format belongs to `@slidestage/spec`. Pro upload and playback code should consume `@slidestage/core` / `@slidestage/spec`, not reimplement the format. ## Review checklist Before merging Pro changes, check: - No local Lite path dependencies. - No direct imports from `../SlideStageLite`. - API code does not import React. - Web code does not import Prisma, Hono, or Node filesystem modules. - `.stage` validation comes from shared packages.