Back to Prisma

Code review — `prisma7 compatibility CLI`

projects/prisma7-compatibility-cli/reviews/code-review.md

7.10.0-integration-fix-prisma-publish-token.1151.2 KB
Original Source

Code review — prisma7 compatibility CLI

Summary

  • Current verdict: SATISFIED
  • Dispatches SATISFIED: side-by-side-wrapper D1, D2, D3, D4, D5, D6, D7; cli-owned-distribution-identity D1, D2, D3, D4, D5, D6, D7, D8, D9, D10; downstream-actionable-guidance D1, D2, D3, D4, D5, D6
  • AC scoreboard totals: 95 PASS / 0 FAIL / 0 NOT VERIFIED
  • Open findings: 0
  • Open escalations: 0

downstream-actionable-guidance D1 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D1-AC1Active migrate/db command-group and representative leaf help surfaces require explicit cliCommand and render it in help paths.PASSb7fa50bea3; packages/migrate/src/commands/MigrateCommand.ts and DbCommand.ts now require cliCommand, render help through instance-bound renderHelp(...), and feed that help into unknownCommand(...) and HelpError. Representative leaves MigrateResolve.ts and DbExecute.ts also require cliCommand and use it in usage/examples plus validation-help strings such as migrate resolve --applied ... and db execute -h. Focused dual-identity coverage lives in packages/migrate/src/__tests__/{MigrateCommand,DbCommand,MigrateResolve,DbExecute}.test.ts.
D1-AC2CLI passes the selected identity; standalone/ordinary callers explicitly pass prisma.PASSpackages/cli/src/bin.ts now threads identity into MigrateCommand.new(...), DbCommand.new(...), and every active migrate/db leaf factory. packages/migrate/src/bin.ts passes 'prisma' explicitly for the standalone migrate entrypoint. Ordinary production/test callers were migrated to explicit 'prisma' in packages/cli/src/bootstrap/Bootstrap.ts, packages/client/src/__tests__/integration/__helpers__/migrateDb.ts, packages/client/tests/functional/_utils/setupTestSuiteEnv.ts, and touched migrate/CLI test suites such as packages/cli/src/__tests__/incomplete-schemas.test.ts.
D1-AC3Tests prove both executable names for command-group and representative leaf paths without broad identity-suite duplication.PASSpackages/migrate/src/__tests__/MigrateCommand.test.ts and DbCommand.test.ts use describe.each(['prisma', 'prisma7']) to prove help plus unknown-command output for both command groups with opposite-identity negatives. MigrateResolve.test.ts and DbExecute.test.ts use the same two-name matrix to prove help/examples plus validation-help errors for representative leaves, while the broader existing ordinary-prisma suites remain in place unchanged.
D1-AC4Dispatch stays in help-scope; runtime/recovery guidance remains out of scope for later work.PASSThe commit is confined to constructor/callsite fanout and help-path renderers; it does not thread identity through the remaining runtime/recovery strings in DbPull.ts, DbPush.ts, MigrateDev.ts, or MigrateStatus.ts, which still contain ordinary prisma ... guidance and therefore remain clearly queued for Dispatch 2 rather than being partially mixed into this round.
D1-AC5Gates and mandatory transient scan are credible.PASSgit diff --check b7fa50bea3^..b7fa50bea3 passed in review. Root package.json has no lint:deps script, matching the implementation report's classification. The mandatory transient-ID scan over the round's added TS/JS diff produced no plan-ID or projects/prisma7-compatibility-cli/ hits. Nothing on disk contradicts the reported focused migrate build/tests, Prisma build/tsc, Bootstrap test, Prettier, and transient scan.

Overall slice verdict: SATISFIED. D1 delivers the help-surface identity seam without dragging runtime guidance or generator work forward.

downstream-actionable-guidance D2 acceptance criteria scoreboard

| AC ID | Description (short) | Status | Evidence | | ------ | --------------------------------------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------- | | D2-AC1 | Active runtime migrate/db guidance derives actionable command strings from required cliCommand, including nested helpers. | PASS | 451c633d10; active runtime guidance now threads this.cliCommand through DbPull.ts, DbPush.ts, MigrateDev.ts, MigrateStatus.ts, utils/errors.ts, and utils/handleEvaluateDataloss.ts. The changed getCommandWithExecutor(...) inputs all now receive full ${cliCommand} ... strings, and a production grep over packages/migrate/src/{commands,utils} leaves no remaining active hardcoded prisma db | migrate | generate | validateruntime guidance outside disabledDbDrop help/comments and stable Prisma domain/path terminology. | | D2-AC2 | Internals helper contract migration requires exact full commands, migrates all callsites, and adds no fallback identity. | PASS | packages/internals/src/utils/validatePrismaConfigWithDatasource.ts and packages/internals/src/cli/checkUnsupportedDataProxy.ts now require a full command string and render it verbatim. All active callsites were migrated: every validatePrismaConfigWithDatasource(...) / checkUnsupportedDataProxy(...) use in active migrate commands now passes ${cliCommand} ..., while CLI/integration callers packages/cli/src/Generate.ts, packages/cli/src/Init.ts, packages/client/tests/functional/_utils/setupTestSuiteClient.ts, packages/client/tests/functional/_utils/setupTestSuiteEnv.ts, and packages/migrate/src/bin.ts pass explicit full commands with no optional/default identity path. | | D2-AC3 | Focused tests prove both identities across representative runtime categories without unnecessary production test seams. | PASS | cc07b4f32a deletes the exported renderCreateOnlySuccessMessage(...) seam from packages/migrate/src/commands/MigrateDev.ts and removes the direct-helper assertion from packages/migrate/src/__tests__/runtime-guidance.test.ts. The remaining focused runtime suite still proves both identities across config-validation, warning/non-interactive errors, and unexecutable-step guidance categories, and no replacement seam/mock was introduced after the attempted command-level prisma7 create-only proof hit the known Nix schema-engine limitation. | | D2-AC4 | Remaining production literals are exhaustively and defensibly classified. | PASS | Reviewer audit over production prisma ... literals in the touched lower-package scope classifies the remaining occurrences as: disabled DbDrop help/examples (packages/migrate/src/commands/DbDrop.ts), stable domain/path names such as prisma/migrations and prisma.config.ts, or comments/docstrings. No additional active runtime command guidance escapee remains in the changed migrate/internals surfaces, and the standalone explicit ordinary entrypoint continues to pass 'prisma' deliberately. | | D2-AC5 | Gates are credible, the mandatory transient scan is clean, and D1 help remains intact. | PASS | Reviewer reran pnpm --filter @prisma/migrate build, pnpm --filter @prisma/migrate test runtime-guidance.test.ts --runInBand, and git diff --check 451c633d10^..451c633d10; all passed. The mandatory transient-ID scan over the 23 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. The D1 help renderers remain unchanged in this commit; the D2 diff is confined to runtime guidance, internals helper signatures, mechanical callsite migration, and focused tests. |

Overall slice verdict: SATISFIED. D2 runtime guidance propagation, helper-contract migration, audit, and focused proof now meet the dispatch contract without a production-only test seam.

downstream-actionable-guidance D3 acceptance criteria scoreboard

| AC ID | Description (short) | Status | Evidence | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | D3-AC1 | getGenerators and its callers require an explicit cliCommand; missing model/no-generator guidance renders the selected command. | PASS | 2695ccd8a9; packages/internals/src/get-generators/getGenerators.ts makes cliCommand required on GetGeneratorOptions and uses it for both SQL and Mongo missing-model guidance. packages/cli/src/Generate.ts now passes cliCommand: this.identity and renders missingGeneratorMessage(this.identity) in both normal and watch paths. Repo callsite audit shows active production getGenerators(...) calls only from Generate, while getGenerator(...) preserves the same required option for direct ordinary callers and touched tests pass 'prisma' explicitly. Focused dual-identity coverage lands in packages/internals/src/__tests__/getGenerators/getGenerators.test.ts and packages/cli/src/__tests__/commands/Generate.test.ts. | | D3-AC2 | Built-in client-generator identity is invocation-scoped, and missing-client recovery uses the selected command while package resolution stays stable. | PASS | packages/cli/src/Generate.ts switched from module-global defaultRegistry to createDefaultRegistry(this.identity).toInternal() for each generate invocation and each watch rebuild, so CLI identity no longer shares a mutable JS-generator instance across invocations. packages/client-generator-registry/src/default.ts keeps defaultRegistry = createDefaultRegistry('prisma') as an explicit ordinary export for existing consumers, while createDefaultRegistry(cliCommand) binds only the JS generator. packages/client-generator-js/src/resolvePrismaClient.ts now formats the rerun command with cliCommand but still resolves low-level packages via stable resolvePkg('prisma', ...) and resolvePkg('@prisma/client', ...). Focused proof lives in resolvePrismaClient.test.ts and default.test.ts. | | D3-AC3 | The change avoids CLI imports, ambient mutation, optional/default identity fallback, RPC/generator protocol expansion, and generated-runtime spillover. | PASS | The diff stays inside packages/cli/src/Generate.ts, packages/internals/src/get-generators/getGenerators.ts, packages/internals/src/utils/missingGeneratorMessage.ts, packages/client-generator-registry/src/default.ts, packages/client-generator-js/src/{generator,resolvePrismaClient}.ts, and focused tests/fixtures. No touched file imports from packages/cli into lower packages, no env/global channel or shared-state mutation is introduced, cliCommand is required rather than optional/defaulted, and no @prisma/generator RPC payload or generated-runtime surface changes. The remaining production prisma generate text under packages/client-generator-js/src/generateClient.ts is an unchanged generated-runtime/custom-output warning outside this dispatch boundary. | | D3-AC4 | Dual-identity tests are focused, non-tautological, and do not add a production-only seam. | PASS | The new proof is proportionate: two getGenerators negative/positive identity assertions for missing-model guidance, one Generate no-generator identity assertion, two resolvePrismaClient assertions for selected-vs-ordinary rerun guidance, and a light createDefaultRegistry('prisma7') provider-shape check. No new production export/test seam was added, no broad snapshot suite was introduced, and the ordinary control remains explicit through existing 'prisma' callers in touched generator tests. | | D3-AC5 | Literal audit, gates, and mandatory transient scan are credible. | PASS | Reviewer reran pnpm --filter @prisma/internals build, pnpm --filter @prisma/client-generator-registry build, pnpm --filter @prisma/client-generator-js build, pnpm --filter prisma build, pnpm exec vitest run tests/resolvePrismaClient.test.ts tests/generator.test.ts from packages/client-generator-js, pnpm exec vitest run src/default.test.ts from packages/client-generator-registry, pnpm exec jest --runInBand src/__tests__/commands/Generate.test.ts -t 'renders no-generator guidance with the selected executable' from packages/cli, PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING=1 pnpm exec vitest run src/**tests**/getGenerators/getGenerators.test.ts -t 'prisma7 sqlite guidance | prisma7 mongodb guidance'frompackages/internals, and git diff --check 2695ccd8a9^..2695ccd8a9; all passed. The mandatory transient-ID scan over the 14 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/hits. A broader rerun of the fullgetGeneratorsandGenerate suites still hits known Nix/env issues (engine checksum/download noise, platform-specific snapshots, and missing external test env vars) outside the new D3 identity assertions, so I treated those as non-blocking environmental noise rather than regressions in this commit. |

Overall slice verdict: SATISFIED. D3 completes the generator-diagnostic identity seam without leaking CLI ownership or widening the protocol surface.

downstream-actionable-guidance D4 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D4-AC1The single packed installed-artifact scenario proves representative migrate, db, and generate downstream guidance with positive prisma7 and negative prisma evidence while keeping the prior smoke.PASS4f08193fc8; packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts extends the existing lone packed test rather than adding a second scenario. The installed prisma7 artifact now exercises migrate status config guidance, db push data-loss guidance after a seeded destructive schema change, generate no-generator guidance, generate --require-models missing-model guidance, and generate missing-@prisma/client guidance. Each new assertion proves the prisma7 string and the opposite ordinary-prisma negative, while the pre-existing top-level/delegated help, version, completion, init, tsc, generate, db push --force-reset, and generated-client smoke remain intact in the same test body.
D4-AC2The new evidence is deterministic, proportionate, command-local, and cleanup/failure semantics remain explicit.PASSThe diff stays inside the packed test plus its lockfile refresh; no product seam, mock suite, second scenario, or broad snapshot file is added. runExpectFailure(...) asserts nonzero exit codes for every negative command, finally removes all six temp projects, and the helper builds each project from minimal local files only. I independently confirmed Node drops undefined env entries passed through spawnSync, so the helper does not leak host-specific identity if an override is omitted. I also independently reproduced @antfu/ni detection for a bare temp project under pnpm exec: with only package.json present it deterministically falls back to npm and formats the missing-client rerun hint as npx "prisma7 generate", which matches the passing packed assertion. The full reviewer rerun pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility passed in 39.495s including pack/install/Docker overhead, leaving comfortable margin under the test's 120_000ms timeout despite the six serial temp projects.
D4-AC3The production literal audit is exhaustive and leaves no active actionable ordinary-prisma escapee inside the slice boundary.PASSReviewer grep across the named production scope found only classified residuals: packages/migrate/src/commands/DbDrop.ts retains disabled preview help/examples outside the active boundary; packages/migrate/src/commands/MigrateStatus.ts retains comment-only references; packages/internals/src/cli/checkUnsupportedDataProxy.ts retains JSDoc example text; and packages/client-generator-js/src/generateClient.ts retains a generated-runtime warning/comment about prisma generate, which the slice spec explicitly leaves ordinary because it executes later without CLI invocation context. No active runtime/help/diagnostic string reachable from prisma7 migrate, prisma7 db, or prisma7 generate remains as an unclassified actionable ordinary-prisma escapee.
D4-AC4Ordinary behavior and relevant gates are green; reported root lint/Prettier failures are verified unrelated to this change.PASSReviewer reran pnpm exec prettier --check packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts packages/client/tests/e2e/prisma7-compatibility/pnpm-lock.yaml, pnpm exec eslint packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts, pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility, and git diff --check 4f08193fc8^..4f08193fc8; all passed. Root pnpm prettier-check does fail, but only on unrelated pre-existing generated fixture files under packages/client-generator-js/tests/generated-no-models/**, not on the two files touched by 4f08193fc8. Root pnpm lint still reports large repo-wide debt (113 errors / 3237 warnings before the reviewer timeout) and never implicates packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts or its lockfile, so I accept the round's root failures as unrelated noise rather than a regression introduced by this commit.
D4-AC5The overall slice contract still holds with no open finding.PASS4f08193fc8 changes only the packed E2E proof (tests/main.test.ts) plus the expected tarball-integrity refresh in the fixture lockfile; no production package surface, dependency direction, ambient/global identity channel, fallback/backcompat API, or RPC/generator-protocol contract changes are introduced. The D1-D3 downstream propagation work remains intact on disk, D4 adds the requested representative installed-artifact proof and final audit only, and the mandatory transient-ID scan over the two touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No open finding remains. Slice DoD is met.

Overall slice verdict: SATISFIED. D1-D4 now hold together as one complete downstream actionable-guidance slice, and the slice-specific done condition is met.

downstream-actionable-guidance D5 acceptance criteria scoreboard

| AC ID | Description (short) | Status | Evidence | | ------ | --------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | --------- | ------ | ------ | ---------- | ------------- | -------------- | ------------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | D5-AC1 | All external direct construction of D1-required command classes is eliminated; only class-internal factories still call new. | PASS | Reviewer grep over new (DbPull | DbPush | DbExecute | DbSeed | DbDrop | MigrateDev | MigrateStatus | MigrateResolve | MigrateReset | MigrateDeploy | MigrateDiff)\(now returns only thereturn new ...lines inside each command class factory inpackages/migrate/src/commands/\*.ts. No external constructor bypass remains on disk. | | D5-AC2 | Every migrated legacy DbPull ordinary test now uses explicit 'prisma', preserving ordinary snapshot intent. | PASS | 115752f540 is a pure mechanical replacement round: 57 deletions of new DbPull() become 57 insertions of DbPull.new('prisma') across 13 legacy test files in packages/migrate/src/__tests__/DbPull/**, packages/migrate/src/__tests__/handlePanic.introspect.test.ts, and packages/cli/src/__tests__/artificial-panic.test.ts. The diff introduces no prisma7 argument and no behavioral assertion churn, so the existing ordinary snapshots stay semantically anchored to the same executable name. | | D5-AC3 | No production API weakening or unrelated snapshot churn is introduced. | PASS | git show --stat 115752f540 shows test-only fanout: 13 test files changed, 0 production files, 0 helper signatures, 0 overload/default/fallback additions. The diff contains only constructor-call replacements; no snapshot text or unrelated assertions changed. | | D5-AC4 | The CI failure mechanism is addressed proportionately across the failing Migrate/macOS/Windows jobs, with environment limits stated honestly. | PASS | The reported CI root cause was runtime bypass of the now-private required constructor: legacy direct new DbPull() yielded undefined identity in suites exercised by the failing migrate-related and cross-platform package jobs. This commit removes those bypasses everywhere the repo grep found them, so the failure mechanism is fully cut off rather than patched per-suite. I did not rerun the broader DB-backed/macOS/Windows suites locally because those environments are unavailable here; the evidence is the exact diff plus the exhaustive constructor audit. | | D5-AC5 | Reported gates are defensible and the mandatory transient scan is clean. | PASS | Reviewer reran git diff --check 115752f540^..115752f540, which passed. The mandatory transient-ID scan over all 13 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written. |

Overall slice verdict: SATISFIED. D5 cleanly re-closes the slice after the CI-only constructor-bypass reopen without weakening the required production identity contract.

downstream-actionable-guidance D6 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D6-AC1The missing-@prisma/client ordinary-control test now requires the rejection path instead of silently passing on unexpected resolve.PASS103246ff48; packages/client-generator-js/tests/resolvePrismaClient.test.ts adds expect.assertions(2) to the ordinary-prisma missing-client case before the try/catch, so a surprising resolve now fails the test rather than skipping both message assertions. The selected-command prisma7 rejection snapshot remains unchanged beside it, preserving the dual-identity control.
D6-AC2Representative migrate/db negative assertions now prove the opposite identity is absent, and the incorrect duplicate .resolves.toThrow() checks are removed.PASSpackages/migrate/src/__tests__/{DbCommand,MigrateCommand,DbExecute}.test.ts now computes otherCliCommand and asserts the returned/raised help text excludes the opposite executable while still containing the selected one. The old standalone unknown command cases using await expect(...).resolves.toThrow() are deleted from DbCommand.test.ts and MigrateCommand.test.ts, leaving only the correct Error-instance/message assertions on the resolved parse result.
D6-AC3Dormant DbDrop help is identity-aware without broadening dormant command wiring, and the added unsupported-URL test stays proportionate.PASSpackages/migrate/src/commands/DbDrop.ts replaces the static help string with renderHelp(this.cliCommand) and uses that same rendered value for normal help and HelpError, so the dormant preview command now matches the required explicit identity contract. packages/migrate/src/__tests__/DbDrop.test.ts adds a narrow two-name help assertion plus one unsupported-Accelerate regression proving the touched dormant command still rejects before stdout; that extra test is related and proportionate because it documents existing parse-order behavior on the same command surface without changing production wiring.
D6-AC4migrate reset rejects unsupported Accelerate URLs before printing datasource output.PASSpackages/migrate/src/commands/MigrateReset.ts now calls checkUnsupportedDataProxy({ command: cmd, validatedConfig }) immediately after config validation and before inferDirectoryConfig(...), parseDatasourceInfo(...), or printDatasource(...). packages/migrate/src/__tests__/MigrateReset.test.ts pins the Accelerate error and asserts ctx.normalizedCapturedStdout() stays empty, proving the unsupported URL is rejected before any datasource banner is emitted.
D6-AC5Reported focused gates are defensible and the mandatory transient scan is clean.PASSReviewer inspection of 103246ff48 matches the reported focused migrate/client-generator follow-up: the diff is confined to the eight named files, git diff --check 103246ff48^..103246ff48 passes, and the mandatory transient-ID scan over the touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. I trusted the reported focused test/build gates because nothing on disk contradicted them.

Overall slice verdict: SATISFIED. D6 closes the current review-thread follow-up without reopening the downstream identity contract or broadening the dormant DbDrop surface.

cli-owned-distribution-identity D10 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D10-AC1Identity-bearing packed command evidence is split into local inline snapshots and the old file is gone.PASS84401c2318, c244dd6669; packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts now carries inline snapshots for top-level help, delegated help, text version projection, JSON version projection, generated .env, generated prisma.config.ts, and init stdout. packages/client/tests/e2e/prisma7-compatibility/tests/__snapshots__/main.test.ts.snap is deleted, so the old aggregate external snapshot no longer exists.
D10-AC2Completion identity stays on concise direct assertions rather than snapshotting the generated script.PASSmain.test.ts keeps complete zsh coverage as direct string assertions only: positive #compdef prisma7, compdef _prisma7 prisma7, and requestComp="prisma7 complete -- substring checks plus opposite-identity negatives. No completion script text is committed in any snapshot file because the external snapshot file is deleted and the inline snapshots cover only help/version/init artifacts.
D10-AC3Bootstrap selects the Windows .cmd shim via one adapted narrow regression test.PASSpackages/cli/src/bootstrap/Bootstrap.ts now resolves node_modules/.bin/${identity}.cmd on Windows and the bare identity on Unix. The pre-existing focused Bootstrap.vitest.ts case was adapted in place to a Windows fixture (vi.spyOn(process, 'platform', 'get').mockReturnValue('win32')) and asserts execFileSync receives prisma7.cmd for both migrate dev and generate; no new mock-heavy suite was introduced.
D10-AC4Exact prisma/prisma7 aliases work for tsc and bundling, including wildcard preservation.PASS25e8174e1e; helpers/compile/plugins/resolvePathsPlugin.ts now converts each tsconfig key into either an escaped exact matcher or a single-capture wildcard matcher, substitutes the captured subpath into the target, and only then applies resolvePathTarget(...). The focused esbuild/Vitest coverage in helpers/compile/plugins/resolvePathsPlugin.test.ts proves exact prisma -> packages/cli/src/types.ts, exact prisma7 -> packages/prisma7/src/index.ts, wildcard prisma/config -> packages/cli/src/config.ts, wildcard prisma7/config -> packages/prisma7/src/config.ts, and exact external passthrough for prisma/config. That preserves exact-alias precedence, escapes regex metacharacters, performs one wildcard substitution, and keeps explicit-file versus directory target handling intact after substitution.
D10-AC5Required gates and transient scan are credible.PASSReviewer reran pnpm exec vitest run helpers/compile/plugins/resolvePathsPlugin.test.ts, pnpm --filter prisma build, pnpm --filter prisma7 build, pnpm tsc -p tsconfig.utils.typecheck.json, pnpm exec vitest run src/bootstrap/__tests__/Bootstrap.vitest.ts (from packages/cli), git diff --check 25e8174e1e^..25e8174e1e, and the mandatory transient-ID scan over the two touched tracked files; all passed. The D10 R2 diff touches only helpers/compile/plugins/resolvePathsPlugin.{ts,test.ts}, so the committed D10 R1 inline snapshot/completion evidence in packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts remains unchanged on disk. An exploratory rerun of pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility timed out inside that unchanged packed test body after fixture install under Docker, so I do not score it as an R2 regression.

Overall slice verdict: SATISFIED. D10 R2 closes F7: wildcard tsconfig aliases now resolve in esbuild without regressing the committed D10 R1 snapshot/completion evidence or the Windows bootstrap fix.

cli-owned-distribution-identity D9 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D9-AC1Exact CI prisma7 import-resolution failure is fixed with source root/subpath aliases and no typecheck weakening.PASS8ca24fe182; tsconfig.build.bundle.json now maps prisma to packages/cli/src/types, prisma/* to packages/cli/src/*, prisma7 to packages/prisma7/src/index, and prisma7/* to packages/prisma7/src/*. That matches the package export shapes used by packages/prisma7/src/index.ts (from 'prisma') and packages/prisma7/src/config.ts (from 'prisma/config') instead of the prior package-root-to-directory alias that broke exact workspace typecheck resolution. The change is scoped to path targets only; no compiler strictness or include/exclude surface is relaxed.
D9-AC2Generated package forwarding artifacts are ignored consistently while root lint/Prettier stay green with artifacts present.PASS.prettierignore and eslint.config.cjs now ignore packages/prisma7/{index,config}.{js,d.ts}, mirroring the existing packages/cli/config.{js,d.ts} treatment for generated forwarding artifacts. The ignore additions are limited to those generated Prisma7 root/config files; they do not widen to packages/prisma7/build/** or source files.
D9-AC3Bootstrap resolves the selected local CLI binary and preserves existing behavior.PASSpackages/cli/src/bootstrap/Bootstrap.ts changes only the local-bin lookup from hardcoded .bin/prisma to .bin/${identity} and threads this.identity into that lookup; migrate/generate shell-out conditions, subprocess env, cwd, stdio, and in-process fallback logic are otherwise unchanged. This directly addresses the prisma7 bootstrap bug where existing-project migrate/generate would have invoked the wrong local binary.
D9-AC4Platform comments are removed and current review-comment classifications are defensible.PASSpackages/cli/src/platform/$.ts and packages/cli/src/platform/_lib/help.ts drop the two redundant comments without behavior change. The remaining review classifications described in the implementation report are consistent with the diff: the Bootstrap/local-bin issue is fixed, the platform comments are removed, the deleted-test suggestion targets code already removed in D7 and is obsolete, and the pnpm/npx review suggestions conflict with the slice's user-facing CLI-output scope rather than contributor-tooling rules.
D9-AC5Gates are credible and the remaining local benchmark typecheck issue is shown unrelated to this PR/CI failure.PASSgit diff --check 8ca24fe182^ 8ca24fe182 passed. The commit scope is confined to ignore config, one path-mapping file, one Bootstrap fix, one focused Bootstrap test, and comment removals; nothing touches the generated type-benchmark fixtures mentioned in the implementation report. The alias correction explains the reported exact CI failure mode (prisma7 root/config imports in workspace typecheck), while the unrelated unused @ts-expect-error noise lives outside the touched surfaces and does not undermine the PR's CI-root-cause claim.
D9-AC6The round honors the operator's anti-mock direction; the new Bootstrap test is proportionate rather than slice drift.PASSThe new 45-line case lives in the pre-existing packages/cli/src/bootstrap/__tests__/Bootstrap.vitest.ts suite and asserts one regression the packed prisma7 E2E does not observe: that an existing project shells out through the selected local .bin/prisma7 for migrate dev and generate instead of hardcoded .bin/prisma. This is a narrow command-selection assertion on a new D9 fix, not a revival of the removed identity mock suites from D7. Given the current executable-boundary coverage never exercises bootstrap, removing this test would leave the fix backed only by code audit.

Overall slice verdict: SATISFIED. D1-D9 are satisfied, and D9 closes the remaining CI/review follow-up without reopening the slice.

cli-owned-distribution-identity D8 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D8-AC1All identity-sensitive CLI command constructors, factories, and helpers require explicit identity with no fallback.PASS46c4cdc1c7; the commit removes default/optional identity plumbing from every touched CLI-owned boundary: CLI.new, DebugInfo.new/constructor, Format.new/constructor, GenerateOptions.identity plus Generate.new, defaultEnv, defaultConfig, Init.new/constructor, Status.new/constructor, Studio.new/constructor, SubCommand constructor, Validate.new/constructor, Version.new/constructor, Bootstrap.new/constructor, formatBootstrapOutput, Completions.new, parseCompletionCommand, printPpgInitOutput, Mcp.new, Platform.$.new, PostgresCommand.new, Link.new/constructor, formatCompletionOutput, and getGlobalLocalVersionMismatchWarning. The reviewer audit over the touched surfaces found zero remaining identity?:, identity ?? 'prisma', or = 'prisma' fallbacks at those boundaries.
D8-AC2Production roots and nested composition pass the selected identity explicitly, while ordinary scripts/tests pass prisma.PASSpackages/cli/src/bin.ts resolves const identity = getCliDistributionIdentity() once and passes it into every identity-sensitive CLI-owned constructor, including CLI.new(...), PostgresCommand.new(...), Completions.new(identity), and Platform.$.new(..., identity). The separate completion entrypoint independently passes getCliDistributionIdentity() into parseCompletionCommand(...) in packages/cli/src/completions/completion-entry.ts. Nested composition remains explicit in packages/cli/src/bootstrap/Bootstrap.ts (Link.new(this.identity), Generate.new(this.identity), Init.new(this.identity)), while ordinary call sites intentionally pass 'prisma' in scripts/run-studio.ts and the updated existing CLI test suites (CLI.test.ts, Generate.test.ts, Init.vitest.ts, PostgresCommand.vitest.ts, completion-command.test.ts).
D8-AC3Executable inference defaults only at the true executable boundary.PASSAfter 46c4cdc1c7, the only remaining defaulted inference is getCliDistributionIdentity(executedScript = process.argv[1]) in packages/cli/src/utils/cli-distribution-identity.ts. bin.ts and completions/completion-entry.ts are the only product call sites using that getter directly, and parseCompletionCommand(...) no longer falls back to it internally. No other touched constructor/helper defaults identity from process.argv, nullish coalescing, or an optional parameter.
D8-AC4No lower-package/backcompat scope was added, and no new identity mock suite or reexport/overload was introduced.PASSgit diff --name-status 46c4cdc1c7^ 46c4cdc1c7 shows only modifications under packages/cli/src/** plus scripts/run-studio.ts; no lower-package files, reexports, or compatibility overload shims were added. The commit adds no new files at all, so there is no replacement identity mock suite; instead it updates existing ordinary-Prisma tests and helper call sites to pass 'prisma' explicitly.
D8-AC5The reported gates, audit, and transient scan are defensible, and the Generate-failure classification is honest.PASSgit diff --check 46c4cdc1c7^ 46c4cdc1c7 passed. The mandatory transient scan over the touched files found no UUID, agent_id, subagent, trace_id, or projects/prisma7-compatibility-cli/ strings; the only session match is the pre-existing semantic Session expired... wording in Postgres link code/tests, not a transient identifier. No on-disk evidence contradicts the reported pnpm --filter prisma tsc, Prisma/Prisma7 builds, affected ordinary tests, packed compatibility E2E, Prettier, lint, or diff-check gates. The broader Generate-suite failure remains honestly classified as unrelated Nix/OpenSSL noise: this commit only hardens explicit identity plumbing, updates the affected Generate coverage to pass 'prisma', and does not touch the known engine/download surfaces behind the previously documented NixOS failure mode.

Overall slice verdict: SATISFIED. D1-D8 are satisfied, and D8 closes the slice with explicit identity requirements at CLI command boundaries while keeping executable inference confined to the real entrypoints.

cli-owned-distribution-identity D7 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D7-AC1Slice-added mock-heavy identity suites/assertions are removed while pre-existing ordinary tests stay coherent.PASS09de26b02d; the four slice-added distribution-identity-* suites are deleted, and the slice-added identity assertions are removed from packages/cli/src/completions/completion-command.test.ts and packages/cli/src/__tests__/commands/SubCommand.vitest.ts. Those two files still retain their pre-existing ordinary-Prisma coverage (parseCompletionCommand(['fish']), unsupported-shell rejection, and Deno abort-without-install), and no production files are touched.
D7-AC2Exactly one packed compatibility scenario snapshots representative real-command identity behavior deterministically.PASS37d7f251f9; packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts still uses the single packed scenario and real installed commands, but now projects version output into stable identity-bearing evidence via projectVersion(...): prisma7/@prisma/client labels and versions, absence of an ordinary prisma key/label, metadata key/label sets, and stderr. The snapshot no longer hardcodes architecture, engine hashes/paths, runtime/toolchain versions, or peer-layout paths.
D7-AC3Normalization hides only dynamic noise and the snapshot stays reviewable rather than an opaque churn-prone dump.PASS37d7f251f9; the raw help/completion/init snapshots remain intact, while version evidence is reduced to a concise projection that still proves identity semantics: distributionKey/distributionLabel are prisma7, hasPrismaKey/hasPrismaLabel are false, both distribution and client versions are captured, metadata is represented as key/label sets only, and stderr preserves the config/schema-load proof. The result is reviewable without churn from host-specific values.
D7-AC4Existing generate/db push/client smoke remains and no second scenario or test-only production seam was added.PASStests/main.test.ts still runs pnpm exec tsc --noEmit, pnpm exec prisma7 generate, pnpm exec prisma7 db push --force-reset, TypeScript-compiles smoke.ts, and executes tsx smoke.ts after the snapshot assertion. _steps.ts still keeps a single packed scenario (pnpm install then pnpm exec vitest run), and the diff adds no production code or new seam.
D7-AC5Update/mismatch evidence boundaries are honest and no fake mock replacement remains.PASSThe removed suites include the old mock-only update-check and mismatch tests; the new packed scenario does not pretend to observe checkpoint suppression or mismatch internals from one executable-boundary run. The remaining evidence is honestly limited to command-visible help/version/completion/init behavior plus the existing packed generate/db push/client smoke, which matches the dispatch plan's stated boundary for unobservable internals.
D7-AC6Reported gates/transient scan are defensible and no production behavior changed.PASSThe commit changes only tests plus the e2e fixture lockfile/package manifest; there is no product-code diff. No on-disk evidence contradicts the reported builds, affected tests, packed E2E, Prettier, lint, diff-check, or transient-scan gates. Reviewer reran the mandatory transient-ID scan over the changed test/lockfile surfaces: no UUID, subagent, session, or projects/prisma7-compatibility-cli/ hits were found; the only bare agent string is the lockfile dependency name tunnel-agent.

Overall slice verdict: SATISFIED. D1-D6 remain satisfied, and D7 now closes with a deterministic packed snapshot projection that preserves the CLI-identity proof without host-specific churn.

cli-owned-distribution-identity D6 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D6-AC1Exactly one packed scenario proves CLI-owned help/version/completion/init and retains the prior generate/db push/client smoke.PASS8c41d0a6e6; packages/client/tests/e2e/prisma7-compatibility/_steps.ts remains the fixture's sole _steps.ts scenario and now adds packed assertions for prisma7 --help, text/JSON --version, complete zsh, and init --datasource-provider sqlite --no-skills generating prisma7/config. The same file still keeps the pre-existing pnpm exec tsc --noEmit, prisma7 generate, prisma7 db push --force-reset, and smoke.ts generated-client proof, so the new identity checks extend rather than replace the established packed behavior.
D6-AC2The packed E2E assertions are deterministic and non-tautological, and lock/tar handling remains sound.PASS8c41d0a6e6; the new assertions read real packed-command output and generated files, and they pair positive checks with opposite-identity negatives (prisma7 present, ordinary prisma absent) instead of snapshotting a value derived from the same input. The init proof executes the installed node_modules/.bin/prisma7 inside a throwaway project, then reads prisma.config.ts from disk. The refreshed packages/client/tests/e2e/prisma7-compatibility/pnpm-lock.yaml still pins /tmp/prisma7-0.0.0.tgz at the importer and its nested prisma: file:../../tmp/prisma-0.0.0.tgz dependency in snapshots.
D6-AC3The CLI-owned literal audit is sufficient: escapees are fixed/tested and no unclassified actionable distribution literal remains in packages/cli/src.PASS8c41d0a6e6; packages/cli/src/Generate.ts now labels the mismatch hint with ${this.identity}@${cliVersion}, covered by the added generate mismatch hint labels the selected CLI package case in packages/cli/src/__tests__/distribution-identity-version-mismatch.vitest.ts. packages/cli/src/SubCommand.ts now renders npx ${this.identity} <cmd> in Deno guidance, covered by the new dual-identity Deno cases in packages/cli/src/__tests__/commands/SubCommand.vitest.ts. The reviewer audit scan over packages/cli/src leaves only domain-stable surfaces (@prisma/client, prisma-client, schema.prisma, prisma/schema.prisma, prisma.config.ts, docs/protocol strings), internal runtime/storage invariants (paths('prisma'), checkpoint product: 'prisma', local node_modules/.bin/prisma resolution), or comments/tests; no actionable CLI-owned distribution guidance remains unclassified in product code.
D6-AC4D5's control-flow proof remains the authoritative update-suppression evidence, so the packed E2E need not fake request-creation assertions.PASSThe on-disk D5 proof remains packages/cli/src/CLI.ts gating runCheckpointClientCheck(...) behind this.identity === 'prisma', with packages/cli/src/__tests__/distribution-identity-update-check.test.ts asserting zero checkpoint calls and zero update-print calls for prisma7. Commit 8c41d0a6e6 does not touch CLI.ts, checkpoint helpers, or update rendering. Because request creation has no stronger packed observable than the already-reviewed zero-call control-flow test, omitting a synthetic packed update assertion is justified and keeps the E2E on user-visible packed behavior only.
D6-AC5Reported full gates and the mandatory transient scan are defensible, and the slice closes without downstream/release spillover.PASSNo on-disk evidence contradicts the reported pnpm --filter prisma build, pnpm --filter prisma7 build, focused identity suites, pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility, root pnpm prettier-check, pnpm lint, git diff --check, and transient-scan gates for 8c41d0a6e6. Reviewer reran git diff --check 8c41d0a6e6^ 8c41d0a6e6, which passed, and the mandatory transient-ID scan over the seven touched product/test files found no UUID, agent, subagent, or session identifiers. The commit scope stays inside packages/cli/src/** and the packed E2E fixture/lockfile, so downstream actionable guidance and release automation remain future-slice scope only.

Durable audit classification

  • Fixed in D6: the remaining CLI-owned escapees were the Generate mismatch hint label and the SubCommand Deno rerun guidance; both now use the selected identity and both are regression-pinned.
  • Remaining prisma literals under packages/cli/src are intentionally non-actionable in this slice:
    • Domain-stable surfaces: @prisma/client, prisma-client, schema.prisma, prisma/schema.prisma, prisma.config.ts, Prisma docs URLs, and Studio's prisma/prisma+postgres protocol names.
    • Internal runtime/storage invariants: paths('prisma'), checkpoint payload product: 'prisma', and local node_modules/.bin/prisma/node_modules/prisma resolution helpers.
    • Non-product occurrences: comments and tests.
  • Net result: no unclassified actionable CLI-owned distribution literal remains in packages/cli/src; the remaining actionable identity propagation called out by the slice spec lives in later slices outside this package boundary.

Overall slice verdict at D6 close: SATISFIED. cli-owned-distribution-identity had reviewer-passed D1-D6 dispatches, zero open findings/escalations, and a met slice-specific done condition before the follow-up D7 feedback landed.

Current status after D10 R2: SATISFIED. D1-D10 are satisfied again after the D10 R1 reopen; F7 is resolved by wildcard-aware alias matching in resolvePathsPlugin.

cli-owned-distribution-identity D1 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D1-AC1Top-level and CLI-owned help/examples render the selected executable, including delegated, unknown-command, and error help paths.PASSc944253750; packages/cli/src/__tests__/distribution-identity-help.test.ts covers top-level CLI help, delegated validate --help, lift rename guidance, per-command help/examples, unknown-command paths, and help-error wrappers for both identities.
D1-AC2Ordinary prisma help remains unchanged and focused tests cover both identities non-tautologically.PASSc944253750; the new suite runs the same assertions under both 'prisma' and 'prisma7' via describe.each(...) and uses not.toContain(...) checks against the opposite identity, while constructors/defaults still fall back to 'prisma' in CLI.ts and the touched command classes.
D1-AC3Identity stays the minimal 'prisma' | 'prisma7' seam with no object/map/global/env framework or lower-package spillover.PASSc944253750; packages/cli/src/bin.ts resolves one primitive via getCliDistributionIdentity() and threads it into CLI-owned constructors, while the diff stays inside packages/cli/src/** plus the focused test file.
D1-AC4Remaining actionable CLI literals are surfaced/classified; no D1 help literal silently remains in the changed CLI-owned surfaces.PASSc944253750; targeted literal checks over the touched files leave the remaining executable-specific runtime strings in packages/cli/src/Init.ts and packages/cli/src/bootstrap/Bootstrap.ts project-creation flows, while the D1 help renderers are parameterized.
D1-AC5Reported gates are defensible and the mandatory transient-ID scan is clean.PASSNo on-disk evidence contradicts the reported focused prisma CLI tests / pnpm --filter prisma tsc / Prettier / diff-check gates for c944253750; the mandatory transient-ID scan over c944253750^..c944253750 produced zero token or projects/prisma7-compatibility-cli/ hits.

cli-owned-distribution-identity D2 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D2-AC1prisma7 init generates prisma7/config, while ordinary init remains prisma/config without unrelated ordinary-init snapshot churn.PASSf18a6738d5; packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts asserts exact generated prisma.config.ts content for both identities, and packages/cli/src/__tests__/Init.vitest.ts still pins ordinary Prisma inline snapshots to import { defineConfig } from "prisma/config".
D2-AC2Project-creation guidance uses the selected identity while stable domain paths/packages remain unchanged.PASSc526edd56d; packages/cli/src/Init.ts now threads identity into defaultEnv() and the appended .env banner, so compatibility init emits ${identity} dev / ${identity} init while domain-stable paths and packages remain unchanged. Focused dual-identity coverage for both comment surfaces lives in packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts.
D2-AC3Tests are focused, non-tautological, and cover both identities without broad snapshot duplication.PASSf18a6738d5; the new suite adds ten focused dual-identity assertions across Init/Bootstrap/Link outputs in packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts, reuses shared mocks, and avoids broad snapshot cloning of the existing ordinary-identity suites.
D2-AC4Identity remains the minimal primitive seam with no object/map/global/env framework or out-of-scope package change.PASSf18a6738d5; the implementation continues to thread the existing 'prisma' | 'prisma7' primitive through CLI-owned renderers only. The product diff stays in packages/cli/src/** plus the focused test file, with no new lower-package identity framework or package-surface churn.
D2-AC5Reported gates are defensible and the mandatory transient-ID scan is clean.PASSNo on-disk evidence contradicts the reported pnpm --filter prisma tsc, focused project-creation Vitest suite, changed-file Prettier, diff-check, and transient-ID scan gates for c526edd56d. The mandatory reviewer rerun over f18a6738d5..c526edd56d produced zero plan-ID and projects/prisma7-compatibility-cli/ hits in the round's added source/test diff.

cli-owned-distribution-identity D3 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D3-AC1Text and JSON version output use the selected distribution label while ordinary prisma output remains unchanged.PASS648c07ff6a; packages/cli/src/Version.ts now renders [this.identity, packageJson.version] while leaving the rest of the table untouched. packages/cli/src/__tests__/distribution-identity-version-mismatch.vitest.ts exercises both identities and asserts the text table plus JSON key switch between prisma and prisma7 without disturbing @prisma/client.
D3-AC2Mismatch lookup, labels, and the recommended command use the selected distribution while preserving @prisma/client semantics.PASS648c07ff6a; packages/cli/src/utils/global-local-version-mismatch.ts now compares local [identity, '@prisma/client'], formats ${identity}@${globalVersion}, and recommends npx ${identity} generate; packages/cli/src/Generate.ts forwards the selected identity into that helper. The packed compatibility fixture lockfile at packages/client/tests/e2e/prisma7-compatibility/pnpm-lock.yaml still records prisma7 resolving its nested exact prisma tarball, so intentionally ignoring the project's direct prisma package is correct for side-by-side wrapper topology.
D3-AC3Tests are focused, non-tautological, and behavior is not weakened.PASS648c07ff6a; the new Vitest file adds six dual-identity assertions across version text, version JSON, mismatch lookup, negative opposite-identity checks, and Generate plumbing without cloning broad snapshots. Reviewer reran src/__tests__/distribution-identity-version-mismatch.vitest.ts (6/6 passed) and src/__tests__/globalLocalVersionMismatch.test.ts (9/9 passed).
D3-AC4The change preserves the minimal seam, layering, and dispatch scope.PASS648c07ff6a; the product diff stays inside packages/cli/src/Version.ts, packages/cli/src/Generate.ts, and packages/cli/src/utils/global-local-version-mismatch.ts, plus one focused test file. The only new seam is an optional existing-helper identity?: CliDistributionIdentity parameter; no lower-package changes, identity framework, or wider refactor was introduced.
D3-AC5Formal gates are defensible, exploratory failures are honestly classified, and the mandatory transient-ID scan is clean.PASSReviewer reran pnpm --filter prisma tsc, pnpm exec vitest run src/__tests__/distribution-identity-version-mismatch.vitest.ts, pnpm exec jest --silent --runInBand src/__tests__/globalLocalVersionMismatch.test.ts, and git diff --check; all passed. The mandatory transient scan over the D3 product/test diff was clean. A targeted rerun of the older Jest src/__tests__/commands/Version.test.ts failed before assertions on this NixOS shell because engine resolution fell into existing libssl/checksum download warnings and a linux-nixos/schema-engine.sha256 404, which matches the implementer's exploratory-only classification rather than a regression introduced by this diff.

cli-owned-distribution-identity D4 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D4-AC1Fish, Bash, Zsh, and PowerShell setup scripts register and reinvoke the selected executable.PASS5ad733ced7; packages/cli/src/completions/Completions.ts now calls t.setup(identity, identity, firstArg), so both the registered command target and reinvocation path follow the selected primitive. packages/cli/src/completions/completion-command.test.ts asserts ${identity} complete plus shell-specific registration patterns for fish, bash, zsh, and powershell under both prisma and prisma7.
D4-AC2CLI parsing/setup threads the primitive identity into completions while ordinary Prisma keeps the default behavior.PASS5ad733ced7; packages/cli/src/bin.ts now constructs Completions.new(identity), and packages/cli/src/completions/Completions.ts stores that primitive and forwards it into parseCompletionCommand(argv, this.identity). The constructor and parser both default to 'prisma', so ordinary invocation keeps the prior default path while compatibility invocation now receives the selected identity explicitly.
D4-AC3The separately bundled completion entry resolves identity independently with no mutable cross-bundle transport.PASS5ad733ced7; packages/cli/src/completions/completion-entry.ts now passes getCliDistributionIdentity() directly into parseCompletionCommand(...), and parseCompletionCommand also defaults from the same executable-derived helper. No environment marker, global, or other mutable transport was introduced. The focused test mutates only process.argv[1] and verifies the completion bundle emits prisma7 independently.
D4-AC4Ordinary output stays unchanged and the added coverage is focused and proportionate.PASS5ad733ced7; the pre-existing completion descriptor catalog in packages/cli/src/completions/completion-definitions.ts is untouched, and completion-command.test.ts still preserves the existing ordinary fish script assertion (prisma complete -- ..., complete -c prisma) alongside the unchanged top-level, nested-command, and option-value completion checks. The new coverage stays narrowly on shell setup, constructor forwarding, and separate-bundle inference without broad snapshot duplication.
D4-AC5Reported gates are defensible and the mandatory transient-ID scan is clean.PASSThe product diff is confined to packages/cli/src/bin.ts and packages/cli/src/completions/**. Reviewer reran git diff --check 5ad733ced7^ 5ad733ced7, which passed, and the mandatory transient-ID scan over the four touched files found no UUID, agent, subagent, session, or projects/prisma7-compatibility-cli/ hits. No on-disk evidence contradicts the reported pnpm --filter prisma tsc, focused package runner with cached engine, Prettier, diff-check, and transient scan gates for 5ad733ced7.

cli-owned-distribution-identity D5 acceptance criteria scoreboard

AC IDDescription (short)StatusEvidence
D5-AC1Compatibility identity gates the update path before checkpoint promise/request creation.PASS59d3ee7a63; packages/cli/src/CLI.ts now creates checkResultPromise only when this.identity === 'prisma', so prisma7 skips runCheckpointClientCheck(...) entirely instead of creating a promise and hiding only the later output. The untouched packages/cli/src/utils/checkpoint.ts still owns the checkpoint payload, so this round changes control flow only.
D5-AC2prisma7 starts zero checkpoint work and prints zero update guidance.PASSpackages/cli/src/__tests__/distribution-identity-update-check.test.ts drives CLI.parse(['validate'], ...) under prisma7 and asserts the delegated command still runs while both runCheckpointClientCheck and printUpdateMessage are never called. That proves compatibility invocation neither starts the request nor reaches the printing path.
D5-AC3Ordinary prisma behavior stays unchanged, including the hidden-message environment path.PASSThe ordinary-identity tests in distribution-identity-update-check.test.ts assert one checkpoint call with the existing { schemaPathFromConfig, baseDir } inputs and one printUpdateMessage call with the resolved result. A separate case sets PRISMA_HIDE_UPDATE_MESSAGE=true and still observes the same ordinary CLI call path. packages/cli/src/utils/printUpdateMessage.ts and packages/cli/src/utils/checkpoint.ts are untouched, so payload/telemetry and env-specific rendering behavior remain where they already lived.
D5-AC4Coverage is focused and non-tautological, and the seam/scope stay minimal.PASS59d3ee7a63 changes only packages/cli/src/CLI.ts plus one focused test file. The new tests exercise real CLI.parse control flow across both identities and the env toggle while mocking only the checkpoint/print boundaries; they do not snapshot broad help output or duplicate lower-level checkpoint implementation tests. No new identity abstraction, checkpoint product, or telemetry surface was introduced.
D5-AC5Reported gates are defensible and the mandatory transient-ID scan is clean.PASSThe product diff is confined to packages/cli/src/CLI.ts and packages/cli/src/__tests__/distribution-identity-update-check.test.ts. Reviewer reran git diff --check 59d3ee7a63^ 59d3ee7a63, which passed, and the mandatory transient-ID scan over those touched files found no UUID, agent, subagent, session, or projects/prisma7-compatibility-cli/ hits. No on-disk evidence contradicts the reported pnpm --filter prisma tsc, focused CLI/update/checkpoint tests, Prettier, diff-check, and transient-scan gates for 59d3ee7a63.

Subagent IDs

  • Implementer: c30416fe-2f1a-4bd — replacement persistent implementer established at downstream-actionable-guidance D5 R1 after D1-D4 implementer 5c6162ab-7048-4a5 became inaccessible to resume.
  • Reviewer: 506df1fa-9c76-4b8 — replacement persistent reviewer established at downstream-actionable-guidance D6 R1 after D5 reviewer 77c46ca7-9493-4c7 became inaccessible to resume.

Orchestrator notes

  • Linear synchronization was explicitly waived by the operator for this project.
  • Drive trace emission is unavailable because the canonical emitter cannot resolve its arktype dependency; no hand-authored trace events will substitute for validated events.
  • Before implementation resumed, the planned identity-complete-prisma7 slice failed slice-Small during grounded planning and was split into cli-owned-distribution-identity followed by downstream-actionable-guidance; release work remains last.
  • D1 required two replacement implementer sessions because foreground Pi agent handles were unavailable for resume. Validation was initially blocked by missing build tools; the operator authorized using the full Nix shell, and Nix-provided GNU Make plus GCC restored the formal gates without changing Node.
  • After D2, the operator authorized replacing marker/global-symbol identity transport with normalized process.argv[1] stem inference. The supporting package-manager probe and scope are recorded in design-decisions.md; D3 was reviewer-SATISFIED.
  • After D3, the operator rejected the production-only delegateToPrismaCli test seam as unnecessary indirection. D4 inlined the dependency load and was independently SATISFIED.
  • After D4, the operator rejected the remaining package/identity/dispatcher unit and contract coverage as overtesting. D5 consolidated them to one scenario covering prisma7/config import/typechecking/config selection, prisma7 --version, prisma7 generate, and successful generated-client execution.
  • After D5, the operator correctly rejected the package-local Vitest subprocess scenario as not using Prisma's E2E harness. D6 moved the scenario under packages/client/tests/e2e, installed packed tarballs in the standard Docker fixture, and removed the prisma7 package-level test job and test-only dependencies.
  • D7 addresses current PR feedback only: simplify identity to 'prisma' | 'prisma7', use prisma7 db push instead of raw DDL in E2E, and guard chmod after esbuild errors. The prepack suggestion was rejected by the operator because root build precedes E2E packing; comments on deleted tests are obsolete.
  • After D9 review, regenerating the ignored type-benchmark clients with pnpm --filter @prisma/type-benchmark-tests dev cleared the local stale @ts-expect-error noise. The exact CI commands pnpm tsc -p tsconfig.utils.typecheck.json and pnpm lint then passed with no tracked changes.
  • downstream-actionable-guidance D1 touched 33 files despite a brief halt threshold of approximately 30 and the implementer did not stop. Review confirmed the overage was required mechanical factory/call-site fan-out rather than product drift, so the dispatch remains accepted; future briefs use outcome/scope halt conditions rather than a brittle file-count proxy for this mechanical migration shape.

Findings log

F1 — Identity initializer is tree-shaken from the built dispatcher

Severity: must-fix

Where: packages/cli/src/bin-dispatcher.ts:3 and packages/cli/package.json:206

What: The dispatcher imports the identity module only to evaluate void cliDistributionIdentity, but the CLI package declares sideEffects: false. Rebuilding with pnpm --filter prisma build emits packages/cli/build/index.js without __PRISMA_CLI_DISTRIBUTION or any identity-module code, so the wrapper's marker is never consumed by either normal or completion dispatch.

Why it matters: The runnable wrapper currently delegates to an ordinary-identity CLI bundle; later identity propagation cannot distinguish prisma7, violating D1's private identity selection at the actual built entrypoint.

Recommended next action: Make the identity module a preserved side effect (or otherwise force its initialization in the dispatcher), rebuild the CLI, and add/adjust a build-level assertion or executable-focused test proving the emitted dispatcher initializes the marker before both branches.

Status: resolved (e86b01a84c)

F2 — Real-project E2E has no verified no-network engine path

Severity: must-fix

Where: packages/prisma7/src/e2e.test.ts:104-109,133; .github/actions/setup/action.yml:47-66

What: The E2E invokes prisma7 --version and generate, both of which ensure the native schema engine. The checkout has no Linux schema-engine artifact or PRISMA_SCHEMA_ENGINE_BINARY; the only discovered cached binaries are macOS-only. CI restores a custom engine only when engineHash is nonempty, while the normal test workflow passes the optional input through without guaranteeing one. The reported local run therefore attempted an unavailable download, and there is no evidence supporting the assumption that ordinary CI will provide the engine.

Why it matters: The required single test is not a verified network-free gate, and AC-1 cannot be promoted from a prior unit/contract result after those tests were deleted. A green result that depends on an unprovisioned or network-fetched engine would not be defensible release evidence.

Recommended next action: Provide a compatible schema-engine artifact through the test environment before this package test runs (with an explicit, portable path for each supported runner), or otherwise make the existing CI setup guarantee that artifact without downloading from the test. Re-run the full prisma7 test and record the successful version, generate, and SQLite execution output.

Status: resolved — the test contains no provisioning/download path; the operator provisioned the ignored supported linux-arm64-openssl-3.0.x artifact outside the test, and the full test passed with PRISMA_SCHEMA_ENGINE_BINARY set. Clean CI installs invoke @prisma/engines postinstall for the runner's standard artifact.

F3 — Generated smoke program does not guarantee async failure propagation or disconnect

Severity: must-fix

Where: packages/prisma7/src/e2e.test.ts:118-131

What: The generated program calls void main(), and $disconnect() is reached only after all operations succeed. A rejected operation is neither explicitly awaited by the top-level program nor caught into an explicit nonzero exit, and a failure before disconnect skips cleanup.

Why it matters: The E2E can leave a live client/database handle and can report asynchronous failures through runtime-dependent unhandled-rejection behavior instead of a deterministic subprocess failure. That weakens the required proof of a working generated client and can make the matrix flaky.

Recommended next action: Run the smoke body inside try/finally with await client.$disconnect() in the finally block, and await/catch the top-level promise so every failure is propagated as a nonzero subprocess exit.

Status: resolved (11c3681f70) — the generated smoke program uses try/finally for $disconnect(), and catches the top-level promise while setting process.exitCode = 1 and reporting the error.

F4 — Package test hides build/dependency assumptions behind redundant workspace rebuilds

Severity: should-fix

Where: packages/prisma7/package.json:57; packages/prisma7/src/e2e.test.ts:46,95,133

What: The package test script rebuilds prisma, @prisma/client, the adapter, and prisma7 immediately before Vitest, although the setup action's root pnpm run build already precedes both prisma7 test-template entries. The new E2E also relies on the client and better-sqlite3 adapter as test-only workspace artifacts without declaring them in this package's manifest; the script's filter builds mask that dependency/setup requirement.

Why it matters: CI spends time rebuilding a large part of the monorepo and a package test run can appear self-contained while actually relying on undeclared sibling artifacts and root-hoisted tooling. This makes dependency/order failures harder to detect and weakens the stated portability of the E2E.

Recommended next action: Remove the redundant monorepo rebuilds from the package test script, and declare the test-only workspace packages (and any newly required direct tooling) explicitly or move their build/provisioning into the documented CI setup order. Verify the package test from the same clean built state used by CI.

Status: resolved (11c3681f70) — test is back to vitest run; required workspace fixture packages and tsx are declared, the lockfile is updated, and the fixture only creates/junction-links temporary project files without rebuilding or installing.

F5 — Generated .env guidance still hardcodes prisma under prisma7 init

Severity: must-fix

Where: packages/cli/src/Init.ts:151,625

What: defaultEnv() still emits the local Prisma Postgres comment with prisma dev and the append-to-existing-.env marker # This was inserted by \prisma init`:regardless of the selected distribution. Aprisma7 initinvocation therefore leaves generated.envguidance with ordinary-Prisma command names even though the same round updated the surrounding config and next-step output toprisma7`.

Why it matters: This slice's contract is that actionable CLI-owned distribution references follow the selected identity while stable domain paths remain unchanged. Leaving prisma7 init to generate .env comments that tell the user to run prisma dev or attribute edits to prisma init breaks that identity consistency in a project-creation surface the user is expected to read.

Recommended next action: Thread the primitive identity into .env comment generation so compatibility init emits prisma7 dev and prisma7 init while ordinary Prisma output stays byte-for-byte stable, and add focused coverage for the default local-Postgres init path plus the existing-.env append path.

Status: resolved (c526edd56d) — defaultEnv() now accepts the primitive identity, local Prisma Postgres .env comments render ${identity} dev, the appended banner renders ${identity} init, and packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts covers both identities for both comment surfaces.

F6 — Packed snapshot hardcodes environment-specific version metadata

Severity: must-fix

Where: packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts:66-113; packages/client/tests/e2e/prisma7-compatibility/tests/__snapshots__/main.test.ts.snap:387-413

What: The new single-scenario snapshot normalizes cwd/temp-path/ANSI/CRLF noise, but it keeps host-specific version fields and paths verbatim. The committed snapshot hardcodes architecture: "arm64", the schema-engine-linux-arm64-openssl-3.0.x binary path, default-engines-hash, the PSL hash, Node.js v22.23.2, TypeScript 5.7.3, and a peer-suffixed prisma-cli-path. Those values are not part of the CLI-owned identity contract this dispatch is trying to prove.

Why it matters: D7's contract is one readable deterministic packed proof. With the current snapshot, unrelated engine rolls, toolchain bumps, peer-layout changes, or a different runner architecture will churn or fail the snapshot even when prisma7 identity behavior is unchanged. That makes the review surface noisy and undermines the operator's explicit request to replace mocks with honest executable-boundary evidence rather than with a brittle dump.

Recommended next action: Keep the single packed scenario, but narrow or normalize the version snapshot to the identity-bearing fields only (for example package label plus selected command/help/config output), and strip environment-specific engine/platform/toolchain/path details that are not semantically required for this slice.

Status: resolved (37d7f251f9) — tests/main.test.ts now projects version text/JSON into stable identity-bearing fields only, and the snapshot drops raw architecture, engine hash/path, runtime, toolchain, and peer-layout values while preserving package labels/versions, absence of ordinary prisma, metadata key/label sets, and stderr.

F7 — resolvePathsPlugin still drops wildcard alias matching

Severity: must-fix

Where: helpers/compile/plugins/resolvePathsPlugin.ts:55-61

What: The new resolvePathTarget() helper correctly distinguishes explicit file targets from directory targets, but the plugin still builds its packagesRegex from raw tsconfig path keys. For wildcard entries that means the matcher is wrong: the literal regex fragment prisma/* does not match prisma/config, and prisma7/* does not match prisma7/config.

Why it matters: D10's bundler contract is not just exact-root alias support. The review round explicitly requires the same prisma/prisma7 alias family to work for both workspace typecheck and the bundler path resolver, with wildcard subpaths preserved. As written, the plugin only guarantees the exact-root half of that contract; subpath matching still depends on behavior outside the plugin.

Recommended next action: Preserve wildcard aliases explicitly in resolvePathsPlugin: escape regex metacharacters in exact keys, convert * segments into capture groups, substitute captured wildcard text into the mapped target, and only append /index.ts for directory targets after substitution.

Status: resolved (25e8174e1e) — createPathAlias() now escapes exact keys, turns wildcard keys into capture groups, substitutes the captured subpath into the mapped target, and the new focused esbuild test covers exact roots, wildcard config aliases, and exact external passthrough.

F8 — MigrateDev exports a production-only helper solely for direct test access

Severity: must-fix

Where: packages/migrate/src/commands/MigrateDev.ts:73; packages/migrate/src/__tests__/runtime-guidance.test.ts:3,54

What: The round introduced export function renderCreateOnlySuccessMessage(...) and the only new consumer is the focused runtime-guidance test. The production command still has a single internal call site, so the export does not decompose shared behavior across multiple runtime consumers; it only opens the module so the test can bypass MigrateDev.parse(...) and assert the string directly.

Why it matters: The operator explicitly rejected production-only test seams, and D2's contract calls for representative runtime proof without adding new exported helpers just to make assertions cheaper. This helper is not part of the CLI-owned/lower-package identity contract; it is an implementation detail of MigrateDev's create-only success path. Keeping it exported increases surface area and weakens the review claim that the round stayed purely mechanical.

Recommended next action: Remove the export and cover the prisma7 create-only success path through command-level behavior instead — for example by extending the existing MigrateDev.new(...).parse(['--create-only', '--name=...'], ...) coverage to a dual-identity matrix or another focused command-level assertion that exercises the same message without a new production seam.

Status: resolved (cc07b4f32a) — the export is removed, MigrateDev restores inline rendering with this.cliCommand, and the focused runtime-guidance suite no longer imports a production-only helper.

Round notes

side-by-side-wrapper D1 R1 — ANOTHER ROUND NEEDED

Scope: runnable identity-aware wrapper. Commit 5ae58ae55.

Tasks: Wrapper delegation and focused unit coverage are clean; built identity initialization is regressed by tree-shaking.

AC delta: AC-1 remains NOT VERIFIED — D2 pending.

Findings: F1 (must-fix).

For orchestrator: The reported normal --version smoke limitation is not the blocker; the rebuilt dispatcher omission is concrete and addressable in this PR.

side-by-side-wrapper D1 R2 — SATISFIED

Scope: runnable identity-aware wrapper. Commit e86b01a84c.

Tasks: Identity initialization, wrapper delegation, and focused coverage are clean.

AC delta: AC-1 remains NOT VERIFIED — D2 pending.

Findings: F1 resolved (e86b01a84c).

For orchestrator: Emitted build coverage passes for normal and completion branches; generated build directories remain ignored and uncommitted.

side-by-side-wrapper D2 R1 — SATISFIED

Scope: forwarded package surfaces and packed resolution proof. Commit f5531d98da.

Tasks: Forwarded exports, exact packed dependency, package metadata/file list, side-by-side fixture, and D1 regression coverage are clean.

AC delta: AC-1 NOT VERIFIED → PASS (commits e86b01a84c, f5531d98da; tests in packages/prisma7/src/package-contract.test.ts and packages/prisma7/src/delegate-to-prisma-cli.test.ts).

Findings: none.

For orchestrator: none.

side-by-side-wrapper D3 R1 — SATISFIED

Scope: executable-stem identity inference and distinctive wrapper target. Commit 43ad8a7891.

Tasks: Exact POSIX/Windows stem selection, immutable identity, target/bin/export contract, argv delegation, and stale-transport cleanup are clean.

AC delta: AC-1 remains PASS; amended packed-wrapper condition is confirmed by 43ad8a7891 and packages/prisma7/src/package-contract.test.ts (7/7), with CLI identity/dispatcher coverage in packages/cli/src/utils/cli-distribution-identity.vitest.ts and packages/cli/src/bin-dispatcher.vitest.ts (12/12).

Findings: none.

For orchestrator: none.

side-by-side-wrapper D4 R1 — SATISFIED

Scope: inline wrapper delegation. Commit 0e44c96e11.

Tasks: Minimal direct delegation and packed executable evidence are clean.

AC delta: AC-1 remains PASS; built/packed wrapper execution, argv preservation, and exit propagation are confirmed by 0e44c96e11 and packages/prisma7/src/package-contract.test.ts (6/6).

Findings: none.

For orchestrator: none.

side-by-side-wrapper D5 R1 — ANOTHER ROUND NEEDED

Scope: Consolidation on one real-project E2E. Commit 6d07265187.

Tasks: Exactly one test declaration and the requested non-mock/non-contract shape are clean; executable engine setup, async client cleanup/propagation, and package test isolation are partial.

AC delta: AC-1 PASS → NOT VERIFIED — the replacement E2E did not pass locally and no ordinary CI engine provisioning evidence was found.

Findings: F2 (must-fix), F3 (must-fix), F4 (should-fix).

For orchestrator: Require the implementer to address F2-F4 and rerun the full package test with a recorded no-network engine path before reconsidering AC-1.

side-by-side-wrapper D5 R2 — SATISFIED

Scope: D5 reliability follow-up over commits 6d07265187 and 11c3681f70.

Tasks: The branch now leaves exactly one added test file, packages/prisma7/src/e2e.test.ts; removed unit/contract/identity/mocks/network/install/tar/source checks are absent. The single test has three substantive outcomes: tsc --noEmit validates a prisma7/config consumer, the built wrapper executes --version, and the built wrapper runs generate followed by generated-client SQLite create/read execution. The operator ran the supported engine postinstall/download outside the test, then ran the full package command with PRISMA_SCHEMA_ENGINE_BINARY; Vitest reported exactly 1 file / 1 test passed in 3.51s. try/finally plus caught rejection/nonzero exit makes smoke cleanup and failure propagation deterministic. R2 restores the minimal vitest run script, declares the direct workspace/tooling dependencies and lockfile entries, and links only the packages needed by the temporary project. Junction links, process.execPath spawning, config-relative SQLite, and temporary-directory cleanup are portable across the Windows/macOS job shape; the synchronous test body has no hidden async timeout path, and the observed test execution remains below Vitest's default timeout.

AC delta: AC-1 NOT VERIFIED → PASS — real built local artifacts executed successfully with the supported engine artifact supplied before the test; prior exact dependency/packed-wrapper evidence remains from D1/D2/D4.

Findings: F2, F3, and F4 resolved. No new findings.

Verification: pnpm --filter prisma7 tsc, Prettier check, ESLint, git diff --check, and the full PRISMA_SCHEMA_ENGINE_BINARY=... pnpm --filter prisma7 test command passed. The mandatory transient-ID scan over the product, test, and planning surfaces found no UUID/agent/subagent identifiers.

side-by-side-wrapper D6 R1 — SATISFIED

Scope: move the sole compatibility scenario into the client E2E harness. Commit ce505fa9ad.

Tasks: The scenario is auto-discovered from packages/client/tests/e2e, runs in the standard Docker image, and installs packed tarballs mounted by the existing runner. The runner now rewrites unscoped prisma7 dependencies and mounts its unscoped tarball separately from the hardcoded prisma tarball. The fixture proves prisma7/config typechecking and config selection, version execution, generation into a non-default output, and SQLite create/read execution with deterministic failure propagation and disconnect cleanup. The package-local Vitest test, its test-only dependencies/script, and both standalone workflow entries are removed.

AC delta: D6-AC1 through D6-AC8 all PASS. The focused standard harness command passed exactly 1/1; logs confirm the non-default schema, pnpm exec prisma7 --version, generation to generated/compatibility-client, generated-client typechecking, and SQLite smoke execution. The fixture lockfile records the nested declared edge from packed prisma7 to /tmp/prisma-0.0.0.tgz.

Findings: none.

Verification: pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility passed. git diff --check passed. The mandatory transient-ID scan over the changed product, test, planning, runner, workflow, and review-input surfaces found no UUID or agent/subagent identifiers. No product, test, planning, or workflow files were edited during review; only this review artifact and the reviewer heartbeat were written.

side-by-side-wrapper D7 R1 — SATISFIED

Scope: address current PR #29949 feedback in f2933682d7 fix(prisma7): address compatibility CLI review feedback.

AC IDDescriptionStatusEvidence
D7-AC1Identity is a minimal stable 'prisma' | 'prisma7' seam with exact POSIX/Windows stem normalization and ordinary-Prisma fallback.PASSpackages/cli/src/utils/cli-distribution-identity.ts exports only the literal union and returns prisma7 only for the normalized executable stem prisma7; backslashes are normalized before path.posix.parse, and undefined/other stems return prisma. Direct source assertions covered POSIX shim/target paths, Windows target paths, ordinary Prisma, and undefined fallback. No identity object, map, marker, global, or cast remains.
D7-AC2The client E2E prepares and exercises the configured database through the compatibility CLI without raw DDL.PASS_steps.ts runs pnpm exec prisma7 --version, pnpm exec prisma7 generate, then pnpm exec prisma7 db push --force-reset against the same prisma.config.ts. smoke.ts creates a record, reads it back by createdNote.id, catches failures into a nonzero exit, and disconnects in finally. The exact Docker log confirms config selection, non-default schema, generation, db push, and smoke completion.
D7-AC3Failed wrapper builds do not mask esbuild errors, while successful builds retain executable permissions.PASSpackages/prisma7/helpers/build.ts returns before statSync/chmodSync when result.errors.length > 0; the successful prisma7 build completed and build/prisma7.js was mode 755/executable.
D7-AC4Reported verification gates are reproducible and defensible.PASSpnpm --filter prisma tsc, pnpm --filter prisma7 tsc, sequential Prisma/Prisma7 builds, and the exact pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility command passed; Docker reported All 1/1 tests passed. Root pnpm lint passed with repository warnings and no errors, pnpm prettier-check passed, targeted Prettier passed, and git diff --check passed.
D7-AC5All current PR feedback is accounted for and the mandatory transient-ID scan is clean.PASSIdentity-map and E2E comments are addressed. The cast/global comment is obsolete after the identity rewrite; forwarding-surface, package-contract, and package-local E2E-timeout comments target files deleted by D6; prepack is explicitly rejected because the private package is built before standard E2E packing, and CodeRabbit withdrew that finding. gh api repos/prisma/prisma/pulls/29949/comments --paginate showed no newer actionable thread after the withdrawn prepack reply (latest comment: 2026-08-10T14:17:59Z). The scan over changed product/test/planning/runner/workflow surfaces found no UUID, agent, subagent, or session identifiers.

Findings: none. All current human and CodeRabbit feedback is addressed, obsolete, withdrawn, or explicitly rejected; no further action is required for D7 R1.

Verification notes: Product/tests/planning remain unedited during review. Only this ledger and wip/heartbeats/reviewer.txt were written. The E2E generated ignored logs/artifacts and a lockfile refresh during execution; generated artifacts were cleaned and the tracked lockfile was restored before this verdict.

cli-owned-distribution-identity D1 R1 — SATISFIED

Scope: Dispatch 1 identity-aware CLI help. Commit c944253750; planning-only context 284f3496d7, e8e778161b.

Tasks: Top-level/delegated/error help identity flow, constructor/default plumbing, and focused dual-identity coverage are clean. Remaining executable-specific literals observed in the touched files stay confined to Init/Bootstrap project-creation output for later dispatches.

AC delta: D1-AC1 through D1-AC5 PASS (commit c944253750, test packages/cli/src/__tests__/distribution-identity-help.test.ts; transient-ID scan clean).

Findings: none.

For orchestrator: none.

cli-owned-distribution-identity D2 R1 — ANOTHER ROUND NEEDED

Scope: Dispatch 2 identity-correct project creation. Commit f18a6738d5.

Tasks: Config import generation, bootstrap/link/postgres next-step guidance, and selected-package dependency detection are clean; generated .env command comments still hardcode ordinary Prisma under prisma7 init.

AC delta: D2-AC1, D2-AC3, D2-AC4, and D2-AC5 PASS (commit f18a6738d5, test packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts). D2-AC2 FAIL on packages/cli/src/Init.ts:151,625 (see F5).

Findings: F5 (must-fix).

For orchestrator: The new 331-line focused suite is proportionate: it reuses shared mocks, covers distinct Init/Bootstrap/Link identity surfaces, and avoids cloning the broad ordinary-identity snapshots. node_modules/<identity> is the correct bootstrap dependency invariant because generated prisma.config.ts imports and re-run guidance depend on the selected distribution package, not the nested implementation package.

cli-owned-distribution-identity D2 R2 — SATISFIED

Scope: F5 follow-up. Commit c526edd56d.

Tasks: Generated .env local-dev comments and inserted banner now follow the selected identity; focused dual-identity coverage widened cleanly.

AC delta: D2-AC2 FAIL → PASS (commit c526edd56d, test packages/cli/src/__tests__/distribution-identity-project-creation.vitest.ts). F5 resolved (c526edd56d).

Findings: none.

For orchestrator: Root Prettier remains blocked only by this review ledger's uncommitted edits; format/commit the ledger after verdict.

cli-owned-distribution-identity D3 R1 — SATISFIED

Scope: version output and global/local mismatch identity. Commit 648c07ff6a.

Tasks: Version now labels the first row with the selected distribution, mismatch lookup/labels/recommendation use the selected identity, and Generate forwards that identity into the mismatch helper. The focused dual-identity Vitest is proportionate and exercises positive plus negative cases for both prisma and prisma7.

AC delta: D3-AC1 through D3-AC5 PASS (commit 648c07ff6a, tests packages/cli/src/__tests__/distribution-identity-version-mismatch.vitest.ts and packages/cli/src/__tests__/globalLocalVersionMismatch.test.ts; transient scan clean).

Findings: none.

For orchestrator: Reviewer reran the old Jest packages/cli/src/__tests__/commands/Version.test.ts only as exploratory evidence; it failed before assertions on this NixOS shell with existing libssl/checksum download warnings and a linux-nixos/schema-engine.sha256 404, so that failure remains environment-only noise rather than an in-PR regression.

cli-owned-distribution-identity D4 R1 — SATISFIED

Scope: completion identity. Commit 5ad733ced7.

Tasks: Completion setup now uses the selected executable for fish/bash/zsh/powershell registration and reinvocation, CLI construction forwards the primitive identity into Completions, and the separately bundled completion entry resolves executable identity independently without reintroducing mutable transport.

AC delta: D4-AC1 through D4-AC5 PASS (commit 5ad733ced7, test packages/cli/src/completions/completion-command.test.ts; transient scan clean).

Findings: none.

For orchestrator: No addressable review findings remain for D4 R1.

cli-owned-distribution-identity D5 R1 — SATISFIED

Scope: suppress Prisma 8 update consultation. Commit 59d3ee7a63.

Tasks: CLI.parse now creates the checkpoint promise only for ordinary prisma, compatibility invocations skip both checkpoint startup and update printing, and the ordinary path still flows through the unchanged checkpoint/print helpers including the hidden-message env case.

AC delta: D5-AC1 through D5-AC5 PASS (commit 59d3ee7a63, test packages/cli/src/__tests__/distribution-identity-update-check.test.ts; transient scan clean).

Findings: none.

For orchestrator: No addressable review findings remain for D5 R1.

cli-owned-distribution-identity D6 R1 — SATISFIED

Scope: packed CLI identity proof and final packages/cli/src audit. Commit 8c41d0a6e6.

Tasks: The sole packed compatibility E2E now proves CLI-owned help/version/completion/init while retaining the existing generate/db push/generated-client smoke. The fixture lockfile refresh still pins packed tarballs correctly. The last two CLI-owned escapees in Generate and SubCommand are fixed with focused regression tests, and the audit leaves only domain-stable or internal non-guidance prisma literals under packages/cli/src.

AC delta: D6-AC1 through D6-AC5 PASS (commit 8c41d0a6e6, tests packages/client/tests/e2e/prisma7-compatibility/_steps.ts, packages/cli/src/__tests__/distribution-identity-version-mismatch.vitest.ts, and packages/cli/src/__tests__/commands/SubCommand.vitest.ts; transient scan clean). The slice-specific done condition is met.

Findings: none.

For orchestrator: cli-owned-distribution-identity is review-complete; the next remaining work is the planned downstream-actionable-guidance slice.

cli-owned-distribution-identity D7 R1 — ANOTHER ROUND NEEDED

Scope: replace mocked identity coverage with one packed executable-boundary snapshot. Commit 09de26b02d.

Tasks: The branch correctly deletes the slice-added mock-heavy suites, keeps the single packed compatibility scenario, uses the installed node_modules/.bin/prisma7 binary for init, and preserves the pre-existing generate/db push/client smoke. The remaining issue is that the committed snapshot still hardcodes environment-specific version metadata and peer-layout paths instead of isolating durable identity behavior.

AC delta: D7-AC1, D7-AC4, D7-AC5, and D7-AC6 PASS. D7-AC2 and D7-AC3 FAIL on packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts and tests/__snapshots__/main.test.ts.snap (see F6).

Findings: F6 (must-fix).

For orchestrator: Ask the implementer to keep the single packed scenario but trim/normalize the version snapshot so it stops encoding architecture, engine hashes/paths, toolchain versions, and peer-suffixed CLI paths. No product-code follow-up is required; this is a test-evidence correction only.

cli-owned-distribution-identity D7 R2 — SATISFIED

Scope: stabilize the packed version snapshot without widening the scenario. Commit 37d7f251f9.

Tasks: The single packed scenario remains intact, and the version evidence is now projected from the real --version text/JSON into stable identity-bearing fields only. The snapshot still proves prisma7 distribution labeling, @prisma/client labeling, absence of ordinary prisma, semantic metadata key/label sets, and config/schema-load stderr, while the raw architecture/hash/path/runtime/toolchain values are removed.

AC delta: D7-AC2 and D7-AC3 FAIL → PASS on packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts and tests/__snapshots__/main.test.ts.snap; F6 resolved (37d7f251f9). D7-AC1, D7-AC4, D7-AC5, and D7-AC6 remain PASS.

Findings: none.

For orchestrator: Root Prettier remains blocked only by this review ledger edit. No further implementer action is required for D7.

cli-owned-distribution-identity D8 R1 — SATISFIED

Scope: require explicit distribution identity at CLI command boundaries. Commit 46c4cdc1c7.

Tasks: Identity defaults and optional identity plumbing are removed from CLI-owned constructors/helpers, the production entry and separate completion entrypoint pass identity explicitly, nested CLI-owned composition stays explicit, and ordinary scripts/tests intentionally pass 'prisma' without introducing any replacement mock suite.

AC delta: D8-AC1 through D8-AC5 PASS (commit 46c4cdc1c7; audit over touched product/test/script surfaces; transient scan clean).

Findings: none.

Verification: git diff --check 46c4cdc1c7^ 46c4cdc1c7 passed. The reviewer audit found the only remaining defaulted identity inference in getCliDistributionIdentity(executedScript = process.argv[1]), consumed by bin.ts and completions/completion-entry.ts; all other touched CLI-owned boundaries now require explicit identity. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: cli-owned-distribution-identity remains closed. The next planned work is downstream-actionable-guidance unless the operator reprioritizes.

cli-owned-distribution-identity D9 R1 — SATISFIED

Scope: close the exact CI/typecheck and current review follow-up. Commit 8ca24fe182.

Tasks: Root/subpath typecheck aliases now match the actual prisma and prisma7 source export shapes, generated Prisma7 forwarding artifacts are ignored by root lint/Prettier like the existing CLI forwarding artifacts, Bootstrap shells through the selected local binary, and the two redundant platform comments are removed. The remaining current review comments are either fixed, obsolete because their target test was deleted in D7, or rejected because they misapply contributor tooling rules to user-facing CLI guidance.

AC delta: D9-AC1 through D9-AC6 PASS (commit 8ca24fe182; diff audit; transient scan clean).

Findings: none.

Verification: git diff --check 8ca24fe182^ 8ca24fe182 passed. The mandatory transient-ID scan over .prettierignore, eslint.config.cjs, packages/cli/src/bootstrap/Bootstrap.ts, packages/cli/src/bootstrap/__tests__/Bootstrap.vitest.ts, packages/cli/src/platform/$.ts, packages/cli/src/platform/_lib/help.ts, and tsconfig.build.bundle.json found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: cli-owned-distribution-identity stays closed. The next planned work remains downstream-actionable-guidance unless the operator reprioritizes.

cli-owned-distribution-identity D10 R1 — ANOTHER ROUND NEEDED

Scope: close the second review round over commits 84401c2318 and c244dd6669.

Tasks: The packed E2E now keeps command-local inline evidence for help/version/init, the obsolete external snapshot file is gone, completion identity stays on concise direct assertions, and Bootstrap correctly selects .cmd shims on Windows via the existing narrow test. The remaining issue is the bundler-side alias contract: resolvePathsPlugin fixes exact file-vs-directory targets but still does not preserve wildcard alias matching for prisma/* and prisma7/*.

AC delta: D10-AC1, D10-AC2, D10-AC3, and D10-AC5 PASS. D10-AC4 FAIL on helpers/compile/plugins/resolvePathsPlugin.ts (see F7).

Findings: F7 (must-fix).

Verification: pnpm --filter prisma build, pnpm --filter prisma7 build, pnpm tsc -p tsconfig.utils.typecheck.json, pnpm exec vitest run src/bootstrap/__tests__/Bootstrap.vitest.ts from packages/cli, pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility, pnpm lint, pnpm prettier-check, and git diff --check 84401c2318^..c244dd6669 passed. Independent probe evidence: a temporary esbuild build with resolvePathsPlugin resolved exact side-effect root imports prisma -> packages/cli/src/types.ts and prisma7 -> packages/prisma7/src/index.ts, while a direct regex check over the plugin's constructed matcher proved prisma/config and prisma7/config do not match the raw wildcard keys. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: Reopen cli-owned-distribution-identity only for the wildcard branch of the bundler alias contract. The next implementer pass should keep the current exact-root/file-target behavior, preserve wildcard substitution in resolvePathsPlugin, and rerun the same D10 gate set.

cli-owned-distribution-identity D10 R2 — SATISFIED

Scope: close F7 over commit 25e8174e1e.

Tasks: resolvePathsPlugin now preserves wildcard alias matching/substitution for prisma/* and prisma7/* while keeping the exact-root, explicit-file, directory-target, external-alias, snapshot/completion, and Windows-bootstrap behaviors intact.

AC delta: D10-AC4 FAIL → PASS. D10-AC1, D10-AC2, D10-AC3, and D10-AC5 remain PASS.

Findings: F7 resolved (25e8174e1e). No new findings.

Verification: pnpm exec vitest run helpers/compile/plugins/resolvePathsPlugin.test.ts, pnpm --filter prisma build, pnpm --filter prisma7 build, pnpm tsc -p tsconfig.utils.typecheck.json, pnpm exec vitest run src/bootstrap/__tests__/Bootstrap.vitest.ts from packages/cli, and git diff --check 25e8174e1e^..25e8174e1e passed. The mandatory transient-ID scan over helpers/compile/plugins/resolvePathsPlugin.ts and helpers/compile/plugins/resolvePathsPlugin.test.ts found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. An exploratory rerun of pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility timed out inside the unchanged packed tests/main.test.ts body after Docker fixture install, so I treated the committed main.test.ts diff staying empty plus the passing Bootstrap regression test as the proportional no-regression evidence for the D10 R1 snapshot/completion and Windows fixes.

For orchestrator: cli-owned-distribution-identity is closed again. The next planned work remains downstream-actionable-guidance unless the operator reprioritizes.

downstream-actionable-guidance D1 R1 — SATISFIED

Scope: Dispatch 1 migrate/db help identity propagation. Commit b7fa50bea3.

Tasks: Command-group help/unknown-command paths are clean. Representative leaf help and validation-help paths are clean. Explicit ordinary-callsite migration is clean.

AC delta: D1-AC1 PASS. D1-AC2 PASS. D1-AC3 PASS. D1-AC4 PASS. D1-AC5 PASS.

Findings: none.

For orchestrator: The round touched 33 files, slightly above the brief's ~30-file halt threshold, but the overage is mechanical constructor/callsite fanout rather than hidden scope creep, so I did not file a product finding. Dispatch 2 still owns the remaining hardcoded runtime/recovery guidance in DbPull, DbPush, MigrateDev, and MigrateStatus.

downstream-actionable-guidance D2 R1 — ANOTHER ROUND NEEDED

Scope: Dispatch 2 migrate/db runtime guidance propagation. Commit 451c633d10.

Tasks: Active runtime guidance and internals helper migration are clean. Generate/Init callsite updates are necessary mechanical fallout from the full-command helper contract. Disabled DbDrop remains inactive and build-consistent via explicit constructor migration at its test/runtime helper callsites. The only substantive issue is the new exported renderCreateOnlySuccessMessage(...) test seam.

AC delta: D2-AC1 PASS. D2-AC2 PASS. D2-AC4 PASS. D2-AC5 PASS. D2-AC3 FAIL on packages/migrate/src/commands/MigrateDev.ts / packages/migrate/src/__tests__/runtime-guidance.test.ts (see F8).

Findings: F8 (must-fix).

Verification: pnpm --filter @prisma/migrate build, pnpm --filter @prisma/migrate test runtime-guidance.test.ts --runInBand, and git diff --check 451c633d10^..451c633d10 passed. The mandatory transient-ID scan over the 23 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: Ask the implementer to keep the current runtime-guidance propagation but remove the MigrateDev export seam and prove the prisma7 create-only success path through command-level behavior. No additional runtime literal fanout appears necessary after that cleanup.

downstream-actionable-guidance D2 R2 — SATISFIED

Scope: Close F8 over commit cc07b4f32a.

Tasks: The production-only MigrateDev export seam is removed. Inline create-only rendering again uses this.cliCommand, the direct helper assertion is gone, and the remaining focused dual-identity runtime suite stays proportionate. The attempted command-level prisma7 create-only proof remains honestly blocked by the known Nix schema-engine resolution issue, and no replacement seam/mock was added.

AC delta: D2-AC3 FAIL → PASS. D2-AC1, D2-AC2, D2-AC4, and D2-AC5 remain PASS.

Findings: F8 resolved (cc07b4f32a). No new findings.

Verification: pnpm --filter @prisma/migrate build, pnpm --filter @prisma/migrate test runtime-guidance.test.ts --runInBand, and git diff --check cc07b4f32a^..cc07b4f32a passed. The mandatory transient-ID scan over packages/migrate/src/commands/MigrateDev.ts and packages/migrate/src/__tests__/runtime-guidance.test.ts found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: downstream-actionable-guidance D2 is closed. The next planned work remains Dispatch 3 unless the operator reprioritizes.

downstream-actionable-guidance D3 R1 — SATISFIED

Scope: Dispatch 3 generator diagnostics identity propagation. Commit 2695ccd8a9.

Tasks: Required cliCommand propagation through getGenerators is clean. Invocation-scoped registry construction and selected-command missing-client recovery are clean. The retained exported defaultRegistry = createDefaultRegistry('prisma') does not undermine invocation isolation because Generate now constructs a fresh registry per invocation/watch cycle and the export remains only the explicit ordinary-control path.

AC delta: D3-AC1 PASS. D3-AC2 PASS. D3-AC3 PASS. D3-AC4 PASS. D3-AC5 PASS.

Findings: none.

Verification: pnpm --filter @prisma/internals build, pnpm --filter @prisma/client-generator-registry build, pnpm --filter @prisma/client-generator-js build, pnpm --filter prisma build, pnpm exec vitest run tests/resolvePrismaClient.test.ts tests/generator.test.ts from packages/client-generator-js, pnpm exec vitest run src/default.test.ts from packages/client-generator-registry, pnpm exec jest --runInBand src/__tests__/commands/Generate.test.ts -t 'renders no-generator guidance with the selected executable' from packages/cli, PRISMA_ENGINES_CHECKSUM_IGNORE_MISSING=1 pnpm exec vitest run src/__tests__/getGenerators/getGenerators.test.ts -t 'prisma7 sqlite guidance|prisma7 mongodb guidance' from packages/internals, and git diff --check 2695ccd8a9^..2695ccd8a9 passed. The mandatory transient-ID scan over the 14 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. A broader rerun of the full getGenerators and Generate suites still reproduces known Nix/env failures unrelated to the new D3 assertions, so I treated those as environmental noise rather than product regressions.

For orchestrator: downstream-actionable-guidance is review-complete through D3. The next planned work is Dispatch 4 unless the operator reprioritizes.

downstream-actionable-guidance D4 R1 — SATISFIED

Scope: Dispatch 4 packed installed-artifact proof and final downstream literal audit. Commit 4f08193fc8.

Tasks: The existing lone packed compatibility scenario now proves representative installed-artifact migrate, db, and generate downstream guidance while preserving the earlier help/version/completion/init and generate/db-push/generated-client smoke. The new negative-command helper semantics are explicit and cleanup remains deterministic. The final production literal audit over packages/migrate, packages/internals, packages/client-generator-js, and packages/client-generator-registry is clean apart from already-classified disabled, comment-only, JSDoc, and generated-runtime surfaces.

AC delta: D4-AC1 PASS. D4-AC2 PASS. D4-AC3 PASS. D4-AC4 PASS. D4-AC5 PASS.

Findings: none.

Verification: pnpm exec prettier --check packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts packages/client/tests/e2e/prisma7-compatibility/pnpm-lock.yaml, pnpm exec eslint packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts, pnpm --filter @prisma/client test:e2e --verbose --runInBand prisma7-compatibility, and git diff --check 4f08193fc8^..4f08193fc8 passed. The packed E2E completed in 39.495s including tarball packing, fixture install, and Docker orchestration, so the test's 120_000ms budget remains safe. Independent probes confirmed spawnSync drops undefined env overrides and that @antfu/ni falls back to npm formatting for the bare temp project shape used by the missing-client proof, yielding the asserted npx "prisma7 generate" guidance from the packed command path. Root pnpm prettier-check still fails only on unrelated generated fixture files under packages/client-generator-js/tests/generated-no-models/**, and root pnpm lint still reports broad repo-wide debt without touching the changed packed-test surfaces. The mandatory transient-ID scan over packages/client/tests/e2e/prisma7-compatibility/tests/main.test.ts and packages/client/tests/e2e/prisma7-compatibility/pnpm-lock.yaml found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: downstream-actionable-guidance is closed. Slice DoD is met, and there is no open review finding for D4 R1.

downstream-actionable-guidance D5 R1 — SATISFIED

Scope: Dispatch 5 CI follow-up over commit 115752f540 after the slice reopened on failing migrate-related jobs.

Tasks: The round is the expected mechanical close-out: every legacy external DbPull test construction now goes through DbPull.new('prisma'), preserving ordinary snapshot intent while restoring the required runtime identity. An exact repo audit finds no remaining external direct construction of the D1-required migrate command classes, and the commit does not weaken production APIs or broaden test scope.

AC delta: D5-AC1 PASS. D5-AC2 PASS. D5-AC3 PASS. D5-AC4 PASS. D5-AC5 PASS.

Findings: none.

Verification: git show --stat --oneline 115752f540, exact diff inspection over the 13 touched files, git diff --check 115752f540^..115752f540, and a repo grep for new (DbPull|DbPush|DbExecute|DbSeed|DbDrop|MigrateDev|MigrateStatus|MigrateResolve|MigrateReset|MigrateDeploy|MigrateDiff)\( were all consistent with the implementation report: only class-internal factory new calls remain, and every migrated legacy DbPull site now passes explicit 'prisma'. I did not rerun the broader DB-backed migrate or cross-platform package suites locally because those environments are unavailable here, and a focused SQLite rerun was unnecessary once the exact diff plus exhaustive constructor audit established the failure mechanism was fully removed. The mandatory transient-ID scan over the 13 touched files found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: downstream-actionable-guidance is satisfied again through D5. No addressable review finding remains from the CI reopen.

downstream-actionable-guidance D6 R1 — SATISFIED

Scope: Dispatch 6 current-review-thread close-out over commit 103246ff48.

Tasks: The round addresses the exact review follow-up without widening the slice: the ordinary missing-client test now fails if the rejection path disappears; representative DbCommand, MigrateCommand, and DbExecute negatives now assert the opposite executable name is absent; the incorrect duplicate await expect(...).resolves.toThrow() cases are removed; dormant DbDrop help now renders from the required cliCommand; and MigrateReset rejects unsupported Accelerate URLs before printing datasource info. The added DbDrop unsupported-URL regression is related and proportionate because it stays on the touched dormant command surface and documents existing no-stdout ordering rather than broadening production wiring.

AC delta: D6-AC1 PASS. D6-AC2 PASS. D6-AC3 PASS. D6-AC4 PASS. D6-AC5 PASS.

Findings: none.

Verification: git show --stat --oneline 103246ff48, exact diff inspection over the eight touched files, git diff --check 103246ff48^..103246ff48, and the mandatory transient-ID scan over the touched files were all consistent with the implementation report. On-disk code matches the six requested corrections: resolvePrismaClient.test.ts now uses expect.assertions(2) on the ordinary-control rejection path; DbCommand.test.ts, MigrateCommand.test.ts, and DbExecute.test.ts now carry opposite-identity negatives; DbDrop.ts renders help from this.cliCommand; and MigrateReset.ts validates unsupported Accelerate URLs before any datasource output. I did not rerun the reported focused migrate/client-generator gates because the user asked me to trust them unless inconsistent, and nothing in the diff or file state contradicted that report. The mandatory transient-ID scan found no UUID, agent_id, subagent, trace_id, session, or projects/prisma7-compatibility-cli/ hits. No product, test, planning, or workflow files were edited during review; only this review ledger and wip/heartbeats/reviewer.txt were written.

For orchestrator: downstream-actionable-guidance is closed again through D6. No further implementer round is needed on the five current review threads.