refactor: rename System → Module per ADR-0025#52
Merged
Conversation
786f89e to
42f6ba8
Compare
@prisma/alchemy
@prisma/app
@prisma/app-assemble
@prisma/app-cli
@prisma/app-cloud
@prisma/app-nextjs
@prisma/app-node
@prisma/app-rpc
prisma-app
commit: |
42f6ba8 to
4fe415c
Compare
wmadden
approved these changes
Jul 12, 2026
system() → module(); SystemNode → ModuleNode, SystemContext → ModuleContext, SystemBuilder → ModuleBuilder, SystemOutputs → ModuleOutputs; the node kind discriminant 'system' → 'module'. load-system.ts → load-module.ts (loadSystem → loadModule); the system-* test files and side-effect-system/valid-system fixtures → *-module. Includes the app-cloud/cron package from #45: cron() now returns ModuleNode, cron/system.ts → cron/module.ts, cron system.test(-d).ts → module.test(-d).ts. Package names (@prisma/app*), the prisma-app CLI, prisma-app.config.ts, and plain-English uses (filesystem, type system) are untouched. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
storefront-auth/systems/ → modules/ (pnpm-workspace glob + lockfile links follow); the deploy roots system.ts → module.ts across storefront-auth, cron (#45), and pn-widgets (#46), with each package.json script, exports map, and tsconfig include updated. The deploy-verify-destroy GitHub action and the bug-report issue template follow suit (deploy module.ts; module() comment). The @storefront-auth/* package names are unchanged — scoped names, not paths. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…R-0025) README opening introduces Module (no "System"); mermaid labels → "Module: …"; hexagonal aside rewritten. glossary, all docs/design/10-domains (incl. system-composition.md → module-composition.md), and other design docs swept. ADR-0013 and ADR-0016 filenames + titles renamed; System prose swept in the earlier ADRs; decisions README index updated (ADR-0014 entry reframed to note its unit noun is superseded → Module). Also gotchas.md and the deploy skill. ADR-0014 and ADR-0025 keep "System" in their bodies deliberately: they record the rename decision itself (ADR-0025 refutes ADR-0014's exact "nobody says my auth module" claim), so word-swapping them would make the two contradict each other. .drive process history is left as-is except cross-links to renamed files. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
4fe415c to
ccefdbb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mechanical rename of the unit of composition from System to Module, per
ADR-0025.
The unit is now authored with
module(), and the App is the outermost Module.This mirrors the Hex→System sweep ADR-0014 itself performed.
What changed
Code (
refactor(app)!) —@prisma/appand its extensions:system()→module();SystemNode→ModuleNode,SystemContext→ModuleContext,SystemBuilder→ModuleBuilder,SystemOutputs→ModuleOutputs; the node kind discriminant'system'→'module'load-system.ts→load-module.ts(loadSystem→loadModule); thesystem-*.testfiles →module-*;side-effect-system/valid-systemfixtures →
*-moduleExamples (
refactor(examples)):examples/storefront-auth/systems/→modules/(pnpm-workspace glob andlockfile links follow);
system.tsdeploy roots →module.tsDocs:
System:labels →
Module:; the hexagonal aside rewritten to introduce Moduledocs/design/10-domains/(incl.system-composition.md→module-composition.md), and other design docsearlier ADRs (0003, 0006, 0007, 0009, 0015, 0017, 0020, 0022, 0023, 0024);
decisions README index updated
Non-targets honored (not renamed)
@prisma/app*), theprisma-appCLI,prisma-app.config.ts,.prisma-app/filesystem,ecosystem,type system,build system,documentation systemdeciding one). The single exception: ADR-0025's cross-link to ADR-0016 was
updated to the renamed filename so the rename doesn't leave a dangling link —
URL only, no prose change.
Acceptance
pnpm build,pnpm typecheck,pnpm test,test:types(via turbo), andpnpm lintall green.grep -riE '\bsystem\s*\(|SystemNode' packages examples docsreturns only legitimate uses: plain-English "type system" and thedeliberately-preserved ADR-0014/0025 history.
Coordination
docs/vocabulary-tests, which lands ADR-0025 and thevocabulary rubric). This branch is cut from docs: ADR-0025 — the unit of composition is a Module (+ the vocabulary rubric that decided it) #51; merge after docs: ADR-0025 — the unit of composition is a Module (+ the vocabulary rubric that decided it) #51. Once docs: ADR-0025 — the unit of composition is a Module (+ the vocabulary rubric that decided it) #51
is in
main, this PR's diff reduces to the rename alone.claude/cron-driver-system, the@prisma/app-cronpackage) is stillopen and not present on this branch. After this rename lands, feat(app-cron): cron as a driver System (S2) #45 must rebase
onto it —
system.ts→module.ts, thecron()helper's return type →ModuleNode, and its doc comments.