Repository navigation
docs(adr): ADR-0050 records that Composer runs as prisma deploy and prisma dev; ADR-0049 gains its rejected alternatives - #347
Conversation
…risma dev Retires the prisma-composer binary in the design record and indexes the ADRs it amends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…n a broken effect tree Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…, prisma dev and the destroy and log operations Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…edentials precisely Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
|
✅ Gizmo reviewed a317dad — posted 0 inline comment(s) this pass. Open findings: none Change walkthroughThis PR writes down a decision that #331 implemented but never recorded: Composer has no binary of its own — the ADRs. ADR-0050 records the two-command surface, why Domain docs. deploy-cli.md, local-dev.md, the 10-domains index, core-model, module-composition and the glossary are edited in place: new command names, CI. Delta since the last pass. The glossary's provisioning-plane entry was refreshed to |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Comment |
…ser section of prisma.config.ts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…og, and weighs the cost to agents Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…/dev Postgres emulator as they are Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…servers and dev takes --name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
…s, users and agents Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
There was a problem hiding this comment.
New findings: none · trace
Still open from previous reviews: 🟡 1 minor
…st on ADR-0049 and ADR-0050 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io>
``` $ git diff --stat main...HEAD | tail -1 25 files changed, 1 insertion(+), 2833 deletions(-) ``` This closes the one-config-file project. It deletes the project's working folder, `projects/one-config-file/`, and fixes one duplicate number in the failure-mode catalogue. Linear: TML-3340. The project moved Prisma Composer's configuration out of its own `prisma-composer.config.ts` into the `composer` section of `prisma.config.ts`, and deleted Composer's standalone `prisma-composer` binary. Prisma 8 now has one CLI and one config file. The rest of this description is the close-out record the Drive process asks for: what was checked, where each decision now lives, and where each unfinished item is tracked. ## What was delivered | PR | What it did | | --- | --- | | prisma/composer#328 | Composer's configuration is the `composer` section of `prisma.config.ts`. The old file and `configPath` are refused. | | prisma/composer#331 | The `prisma-composer` binary is gone. Docs, examples and the shipped skill say `prisma deploy` and `prisma dev`. Released as Composer 0.26.0. | | prisma/prisma-cli#330 | The `prisma` host runs Composer 0.26.0. Released as `prisma@8.0.0-rc.20`. | | prisma/web#8387 | The public Composer docs describe the `composer` section. | | prisma/composer#332 | Found during testing: `prisma dev` and `prisma deploy` failed in pnpm projects. Merged, not yet released (TML-3520). | | prisma/composer#333 | An emulator test race that made CI flaky, plus `PRISMA_COMPOSER_EMULATORS_DIR`. | Three more PRs came out of this close-out and are open: - prisma/composer#347 writes ADR-0050, which records the binary's retirement. Without it the close-out failed the ADR audit, and four older ADRs still described `prisma-composer` as the entry point. - prisma/web#8415 fixes a tutorial page that still told readers to write `prisma-composer.config.ts`. - prisma/pdp-control-plane#5608 makes the platform's Compute import flow write the `composer` section into `prisma.config.ts`, and recognise repositories that already have it. Until now it wrote `prisma-composer.config.mjs` and pinned Composer 0.25.0, so imported repositories broke on upgrading to 0.26.0. ## Definition of Done | Item | Verdict | Evidence | | --- | --- | --- | | orm-demo has one config file, and `prisma deploy` and `prisma dev` run against it from the host | Met, with deviations | `examples/orm-demo` has only `prisma.config.ts`. `prisma dev` from the host build reached ready (slice 3 QA). A real `prisma deploy` of orm-demo succeeds in Composer's e2e workflow on `main`, using the published host with the workspace family. No deploy ran from the host build itself, because no service token was available. | | The old file and `configPath` get their diagnostics | Met, with a deviation | `CONFIG.FILE_RETIRED` and `CONFIG.FIELD_RETIRED`, exit 2, from the host binary. Shown with `prisma dev`, because `deploy` checks credentials before reading the config. Both commands use the same validator. | | A broken `effect` install fails with `CLI.CONFIG_UNREADABLE`, and `prisma --version` still works | Met, with the same deviation | Slice 3 QA, step 5. | | Published packages have no `bin` and no stale name | Met | `@prisma/composer-cli` and `@prisma/composer` 0.28.0 declare no `bin`. Their unpacked tarballs name the old file only in the messages that refuse it. | | A CI check keeps the old name out | Met | `pnpm lint:retired-binary-name` runs in CI. Its test plants a mention and expects a failure. | | TML-3340 Done, web pages updated | Met | TML-3340 is Done with a closing comment. One page missed by #8387 is fixed in prisma/web#8415. | | The consolidation plan says `deploy` and `dev` stay bare | Met | `projects/consolidate-clis/cli-consolidation-plan.md`, and now ADR-0050 in prisma/composer. | | Retro run, ADR merged, folder deleted | Met once #347 and this PR merge | The retro's lesson is failure mode F42. ADR-0049 is merged. ADR-0050 is in #347. | | Repository references to the folder removed | Met | Nothing outside the folder links to it. | | Manual QA for each user-facing slice | Met, with a deviation | Slice 3 has a QA transcript. Slices 1 and 2 recorded their manual QA in the Verification sections of #328 and #331. | ## Where each decision lives now Every decision recorded in the deleted spec and design notes has a home outside the folder: - **Composer's configuration is the `composer` section, validated by the section, with the old file and field refused:** ADR-0049, and the `CONFIG` code list in ADR-0044. - **The `effect` version pre-flight is deleted; a broken tree fails with the engine's error:** ADR-0049. #347 adds the four rejected alternatives, which until now were only in #328's description. - **The binary is retired, and `destroy` and `log` stay programmatic:** ADR-0050 in #347. - **`deploy` and `dev` stay bare commands; `destroy` is not mounted:** ADR-0050, and the consolidation plan. - **The examples' `destroy` scripts keep `--production` and `--stage`:** ADR-0050 records this as a repository-internal script grammar, not a public command. - **Examples and CI run the published host with a workspace override:** `gotchas.md` and `scripts/check-cli-engine-pin*.mjs` in prisma/composer, which enforce it. - **Composer runs the `alchemy` installed beside `@prisma/composer`:** ADR-0007's amendment and `docs/design/10-domains/deploy-cli.md` in prisma/composer. ## Deferred items and their tickets | Ticket | Item | | --- | --- | | TML-3520 | Release Composer 0.29.0 and pin it in the host, so `prisma@latest` gets the pnpm fix. | | TML-3521 | Teardown and logs have no `prisma` command. | | TML-3522 | Two checkouts of one app still share a local Postgres server. | | TML-3523 | A compute emulator test is too tight on time and flakes under load. | | TML-3524 | Composer's examples pin an older `prisma` host than `latest`. | | TML-3525 | Drop the exact `effect` pin once `effect` 4 is stable or Alchemy pins its peer. | | TML-3526 | dependency-cruiser skips the examples' `prisma.config.ts`. | | TML-3527 | Edge cases in how Composer starts Alchemy. | | TML-3528 | prisma/asks and prisma/streams still use the retired config or command. | Two smaller review notes are accepted without tickets. The prisma-cli conformance check needs a new exception on each joint engine release, which is visible when it happens. Windows edge cases are out of scope, because Windows is documented as unsupported for local tooling. ## What this PR deletes Every file under `projects/one-config-file/` is transient under `drive/project/README.md`: the spec, plan, design notes, retro log, README, and each slice's spec, plan, grounding notes, reviews and QA transcript. None is methodology to migrate. The decisions are mapped above. The full files stay readable in the history of prisma/orm#30536. ## The failure-mode number The retro added its lesson to `drive/calibration/failure-modes.md` as F39. prisma/orm#30613 had already used F39 two days earlier. This PR renumbers ours to F42, the next free number. Agent: saruman-38 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Signed-off-by: willbot <w.a.madden+machine@gmail.com> Signed-off-by: Will Madden <madden@prisma.io> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
A reader of ADR-0003 today is told:
That command no longer exists. What actually runs is:
Decision
This PR adds ADR-0050: Composer runs as
prisma deployandprisma dev; it has no binary of its own. It records a decision that was already implemented in #331 but never written down, and amends the ADRs that still describe the old binary. Separately, it adds to ADR-0049's alternatives the rejected ways to keep a Composer-ownedeffectcheck, marked as an amendment.What the ADR records
@prisma/composer-clideclares nobin. It ships only the command family that theprismaCLI (prisma/prisma-cli) mounts. TheprismaCLI mounts exactly two Composer commands:prisma deploy <entry>andprisma dev <entry>.deployanddevare mounted at the root as bare verbs on purpose, likeprisma init, rather than under a noun (prisma project deploy). Mostprismacommands are noun then verb (prisma auth login).destroyandloghave no command. They stay as operations on@prisma/composer/control, and the guides show a short script for each. A teardown script needsPRISMA_SERVICE_TOKENandPRISMA_WORKSPACE_ID; it cannot use theprisma auth loginsession.destroywas rejected. The CLI's destructive verb isdelete, and no Composer command takes--production(prisma deploytargets production by leaving out--stage). Where teardown and logs belong in theprismacommand tree is not decided; that is tracked in TML-3521. Until then agents, like users, need a script to readprisma devlogs, and the ADR records that cost against the Agent-first principle.prismaCLI with a root pnpm override pointing@prisma/composer-cliat the workspace. CI teardown isscripts/composer-destroy.ts. The exampledestroyscripts keep--production/--stage; those flags only name the operation's two targets for this repository's scripts and are not a public command grammar. The ADR records that this was accepted.scripts/lint-retired-binary-name.mjsfails CI on the old binary name in user-facing files.docs/design/is not scanned, so ADRs can keep their history.What else changes
--name), ADR-0024 (the "destroy names its target" rule) and ADR-0043 (the CLI renders two of the four operations). History in the bodies is untouched.effecttree (an engine veto hook, Composer loading the config itself, an import-time check in@prisma/composer/config, lazy Alchemy imports in the/controlentries), and states the exit code (2) ofCLI.CONFIG_UNREADABLE.deploy-cli.md,local-dev.md,10-domains/README.md,core-model.md,module-composition.md,glossary.md): command names updated toprisma deploy/prisma dev, anddestroy/logdescribed as operations. These are living docs, so they are edited in place. Every remaining description ofprisma-composer.config.tsas Composer's config file, indeploy-cli.md,core-model.mdandmodule-composition.md, now says thecomposersection ofprisma.config.ts, per ADR-0049. No doc underdocs/design/outside the ADR bodies still names the old file.deploy-cli.mdalso lists all fourdeployflags and theCONFIG.FIELD_RETIRED/CONFIG.FILE_RETIREDerrors.local-dev.mdnow giveslog's realtaildefault (0), drops a claimed pointer fromdevtologthat the code does not print, and describes local Postgres as the@prisma/devservers the emulator hosts, not the ORM CLI'sprisma devcommand.Docs only. Checks:
pnpm lint(exit 0; existing warnings only),pnpm lint:retired-binary-name(clean), and a relative-link check over the changed docs (no new broken links).Alternatives considered
deployanddevare bare, whydestroyhas no command). This repository's rule is that a decision future readers need to understand gets an ADR (docs/design/90-decisions/README.md).Refs: TML-3340, TML-3521 (where teardown and logs go in the command tree). Related: #331 (binary removed), prisma/prisma-cli#330 (first pinned the host to Composer 0.26.0, the first version without the binary; the host now pins 0.28.0).
Agent: saruman-38
🤖 Generated with Claude Code