| 1 | # Manifest Roles |
| 2 | |
| 3 | Inspect the nearest package with the same integration shape, then justify each |
| 4 | added or moved entry: |
| 5 | |
| 6 | | Role | Use when | Completion check | |
| 7 | | ---------------------------------------- | ------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------- | |
| 8 | | `dependencies` | Published runtime code requires its own installed copy. | A packed consumer receives it without adding an undeclared package. | |
| 9 | | `peerDependencies` | Consumers provide a compatible shared package or the public contract integrates with their copy. | The range states supported consumer versions; add a development entry when local build or tests need an installed copy. | |
| 10 | | `devDependencies` | Only repository build, test, type, benchmark, or code-generation work needs it. | Published runtime code and declarations do not require consumers to install it. | |
| 11 | | `optionalDependencies` | A runtime feature handles absence and installation failure must not block the base package. | Focused tests cover present and absent behavior. | |
| 12 | | Optional peer via `peerDependenciesMeta` | A consumer-provided integration is genuinely optional. | The peer remains in `peerDependencies`, and code requires it only when selected. | |
| 13 | |
| 14 | Role selection is complete when every changed entry has one justified role and |
| 15 | peer compatibility remains independent from repository validation versions. |