Skip to content

Commit 6942581

Browse files
committed
docs(getting-started): the multi-package rules name the artifact-scoped classes
Claude-Session: https://claude.ai/code/session_01T3YsvpK1PvYf9n1YUhYP6W Co-authored-by: Claude <noreply@anthropic.com>
1 parent 990ba7c commit 6942581

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

‎content/docs/getting-started/examples.mdx‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,15 @@ The rules worth knowing before you split a product this way:
432432
may reference an object another package owns. An app's own `navigation` may
433433
not point outside its package — inject into another package's app with
434434
`navigationContributions` instead.
435+
- **Permission sets and seed data cross the boundary; declare what they reach.**
436+
A permission set is authored per *role*, not per module, so the `type: 'app'`
437+
package keeps every set whole and grants across the whole artifact — and seed
438+
rows are the same shape. Both resolve against the artifact rather than the one
439+
stack, but only once you hand `defineStack` the sibling object names:
440+
`defineStack(appConfig, { artifactObjects: ordersStack.objects?.map((o) => o.name) })`.
441+
`composeStacks` then refuses any name no package in the artifact defines, so a
442+
typo is still caught — one pass later, and by name. Hooks are the deliberate
443+
exception: a hook still belongs to the package that owns its object.
435444
- **One artifact, one version.** Everything inside ships, installs and upgrades
436445
together; you cannot hot-fix one module on its own. A module that needs its
437446
own release cadence belongs in its own artifact.

0 commit comments

Comments
 (0)