chore: close out migration-graph-rendering project (TML-2746)#775
Conversation
…inst current code Re-checks every F1–F7 finding against shipped code in packages/1-framework/3-tooling/cli/src/commands/ and updates the compat/status table with current state (Resolved / Partial / Open) plus file:line evidence. Adds an Outcome section summarising the verdict: 4 findings fully resolved, 2 partial, 1 open. Signed-off-by: Will Madden <madden@prisma.io>
…nd apply ledger ADR 227 records the decision to share one condensed-tree renderer across migration list/graph/status, with command-specific edgeAnnotationsByHash overlays, fixed live-contract trunk, and app-space-only @contract marker. ADR 228 records the per-migration-edge ledger journal (one row per applied edge), its LedgerEntryRecord shape, how status uses it for applied/pending classification, and how log renders the full unscoped flat table. Signed-off-by: Will Madden <madden@prisma.io>
Strip project-shaping voice from the migrated design-of-record + visual-language docs; update to the shipped renderer (current file names, greedy lane colouring, convergence, the disconnected-component/merge layout). Signed-off-by: Will Madden <madden@prisma.io>
…t to research The TML-2801 audit, re-validated against current code (4/7 findings resolved, 4 follow-ups open), moves to the architecture research docs as the durable record of read-command consistency state. Relative links repointed. Signed-off-by: Will Madden <madden@prisma.io>
All slices merged; durable knowledge migrated to docs/ (ADRs 227/228, the renderer design-of-record + visual language under architecture subsystems, the revalidated read-command consistency audit under research). Delete the transient project folder. Signed-off-by: Will Madden <madden@prisma.io>
|
Warning Review limit reached
More reviews will be available in 12 minutes and 31 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR is a documentation-only update that adds two new architecture decision records (ADRs 227 and 228) formalizing the migration system design, plus updates to supporting subsystem documentation to align with these decisions. It does not introduce code changes or alter any exported entities. ChangesMigration System Architecture Decisions and Documentation
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~4 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
size-limit report 📦
|
@prisma-next/extension-author-tools
@prisma-next/mongo-runtime
@prisma-next/family-mongo
@prisma-next/sql-runtime
@prisma-next/family-sql
@prisma-next/extension-arktype-json
@prisma-next/middleware-cache
@prisma-next/mongo
@prisma-next/extension-paradedb
@prisma-next/extension-pgvector
@prisma-next/extension-postgis
@prisma-next/postgres
@prisma-next/sql-orm-client
@prisma-next/sqlite
@prisma-next/extension-supabase
@prisma-next/target-mongo
@prisma-next/adapter-mongo
@prisma-next/driver-mongo
@prisma-next/contract
@prisma-next/utils
@prisma-next/config
@prisma-next/errors
@prisma-next/framework-components
@prisma-next/operations
@prisma-next/ts-render
@prisma-next/contract-authoring
@prisma-next/ids
@prisma-next/psl-parser
@prisma-next/psl-printer
@prisma-next/cli
@prisma-next/cli-telemetry
@prisma-next/emitter
@prisma-next/migration-tools
prisma-next
@prisma-next/vite-plugin-contract-emit
@prisma-next/mongo-codec
@prisma-next/mongo-contract
@prisma-next/mongo-value
@prisma-next/mongo-contract-psl
@prisma-next/mongo-contract-ts
@prisma-next/mongo-emitter
@prisma-next/mongo-schema-ir
@prisma-next/mongo-query-ast
@prisma-next/mongo-orm
@prisma-next/mongo-query-builder
@prisma-next/mongo-lowering
@prisma-next/mongo-wire
@prisma-next/sql-contract
@prisma-next/sql-errors
@prisma-next/sql-operations
@prisma-next/sql-schema-ir
@prisma-next/sql-contract-psl
@prisma-next/sql-contract-ts
@prisma-next/sql-contract-emitter
@prisma-next/sql-lane-query-builder
@prisma-next/sql-relational-core
@prisma-next/sql-builder
@prisma-next/target-postgres
@prisma-next/target-sqlite
@prisma-next/adapter-postgres
@prisma-next/adapter-sqlite
@prisma-next/driver-postgres
@prisma-next/driver-sqlite
commit: |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/architecture` docs/adrs/ADR 227 - Migration read commands share one
graphical renderer with command-specific annotations.md:
- Line 95: The markdown uses a placeholder link `[ADR 228](#)` in the sentence
mentioning `migration status`; replace that placeholder with the actual ADR 228
document path or heading anchor so the cross-reference resolves (update the link
target to the ADR 228 filename or its `#heading-anchor`), ensuring the `migration
status` reference points to the real ADR 228 location and passes MD042 doc
linting.
In `@docs/architecture` docs/research/read-command-consistency-audit.md:
- Line 3: Update the broken CLI Style Guide link in
read-command-consistency-audit.md: replace the incorrect relative link
"../../docs/CLI%20Style%20Guide.md" with the correct relative path
"../../CLI%20Style%20Guide.md" (or otherwise remove the extra "docs/" segment)
in the document header where the CLI Style Guide is referenced so the link
resolves correctly from this file's location; verify the URL-encoding for spaces
("%20") is preserved if present.
In `@docs/architecture` docs/subsystems/12. Migration Graph Rendering.md:
- Line 200: Replace the non-canonical CLI invocation "migrate --show" with the
project's canonical command name (e.g., "migration show") wherever it appears in
the document; specifically update the occurrence that reads "Focus (`migrate
--show`) mode is unchanged:" to use "migration show" (or the exact canonical
form used elsewhere) so the text and surrounding migration command family remain
consistent for copy/paste usage.
In `@docs/architecture` docs/subsystems/12a. Migration Graph Rendering — Visual
Language.md:
- Line 12: The line containing "Color extension (TML-2773, slice
`lane-colors-and-legend`)" uses transient "slice" nomenclature; update the text
to remove the slice reference and replace it with a stable identifier or link
(e.g., an ADR, documentation section, or PR/issue number) or simply drop the
slice name so it reads "Color extension (TML-2773)" or "Color extension — see
ADR: <stable-id>/PR #<num>/Docs section"; edit the string in this document where
"slice `lane-colors-and-legend`" appears so durable docs no longer reference
project-transient artifacts.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: 0763d1ba-a583-460e-b848-d804d0e74696
⛔ Files ignored due to path filters (42)
projects/migration-graph-rendering/README.mdis excluded by!projects/**projects/migration-graph-rendering/decisions.mdis excluded by!projects/**projects/migration-graph-rendering/learnings.mdis excluded by!projects/**projects/migration-graph-rendering/plan.mdis excluded by!projects/**projects/migration-graph-rendering/prototype/gallery.mdis excluded by!projects/**projects/migration-graph-rendering/prototype/proto.mjsis excluded by!projects/**projects/migration-graph-rendering/read-command-consistency-audit.mdis excluded by!projects/**projects/migration-graph-rendering/read-command-consistency-followups.mdis excluded by!projects/**projects/migration-graph-rendering/slices/check-single-target-multi-space/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/check-single-target-multi-space/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/check-single-target-multi-space/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/edges-on-plan/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/empty-origin-as-null/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/ledger-foundation/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/ledger-foundation/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/list-renders-tree/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/log-reads-ledger/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migrate-show-preview/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migrate-show-preview/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migrate-show-preview/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migration-fixture-audit/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migration-fixture-audit/reorg-spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migration-fixture-audit/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/migration-graph-space-flag/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-consistency/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-consistency/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-consistency/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-json-redesign/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-json-redesign/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/read-command-json-redesign/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/reconcile-control-api-surface/code-review.mdis excluded by!projects/**projects/migration-graph-rendering/slices/reconcile-control-api-surface/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/reconcile-control-api-surface/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/remove-list-graph-renderer/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/render-polish-and-ledger-tests/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/render-redesign-core/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/render-redesign-core/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/render-redesign-geometry/plan.mdis excluded by!projects/**projects/migration-graph-rendering/slices/render-redesign-geometry/spec.mdis excluded by!projects/**projects/migration-graph-rendering/slices/status-db-overlay/spec.mdis excluded by!projects/**projects/migration-graph-rendering/spec.mdis excluded by!projects/**projects/migration-graph-rendering/trace.jsonlis excluded by!projects/**
📒 Files selected for processing (6)
docs/architecture docs/ADR-INDEX.mddocs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.mddocs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.mddocs/architecture docs/research/read-command-consistency-audit.mddocs/architecture docs/subsystems/12. Migration Graph Rendering.mddocs/architecture docs/subsystems/12a. Migration Graph Rendering — Visual Language.md
…e, no ticket refs Lead with a worked three-command example, state the decision up front, build the mechanism up bit by bit, move the dagre/merge rejections to alternatives, and strip Linear tickets + refactor-history framing (long-lived doc). Signed-off-by: Will Madden <madden@prisma.io>
…e, no ticket refs Open with a worked migration log (incl. a re-apply), lead with the decision, build the journal model up bit by bit, move collapsed-row/reconstruct rejections to alternatives, and strip Linear tickets, prototype-era framing, and the stale MongoDB reference (long-lived doc). Signed-off-by: Will Madden <madden@prisma.io>
The TML-2801 audit revalidation (verdict + remaining follow-ups) lives as a Linear ticket (TML-2877) rather than a committed doc — actionable backlog, not long-lived reference. Signed-off-by: Will Madden <madden@prisma.io>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/architecture` docs/adrs/ADR 227 - Migration read commands share one
graphical renderer with command-specific annotations.md:
- Around line 43-114: The ADR currently mixes high-level decisions with
implementation mechanics; extract the implementation details (e.g., the
mergeMigrationEdgeAnnotations description and the
RenderMigrationGraphSpaceTreeInput/interface-level usage, renderer
execution-path details, and step-by-step annotation behavior such as how
status/path/annotation keys compose) out of this ADR and into a new "migration
rendering subsystem" engineering doc, leaving this ADR to state only the durable
decisions and constraints (that annotations are sparse/additive, the trunk
anchors to liveContractHash, reserved node markers `@contract/`@db, per-space
rendering, and JSON vs tree policy); update ADR 227 to remove the blocks that
describe the merge function behavior, renderer internals, and per-command
implementation notes and add a short link/note pointing to the new subsystem doc
that contains the moved details.
- Around line 13-21: The fenced code block showing the three-column command
output beginning with "migration graph migration list migration status" is
missing a language identifier; update its opening fence from ``` to ```text (or
```bash) so the block is tagged (e.g., add "text" after the opening triple
backticks) to satisfy MD040 and doc-maintenance rules.
In `@docs/architecture` docs/adrs/ADR 228 - Migration apply ledger is a
per-migration journal.md:
- Around line 11-17: The fenced code block containing the migration timeline
example is unlabeled; add a language tag (e.g., text) to the opening
triple-backtick so the block becomes ```text and satisfies the MD040 lint rule;
update the example fenced block at the start of the displayed timeline (the
APPLIED AT / MIGRATION table-like block) accordingly.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
Run ID: deff15f1-ef3d-4724-8d39-4e189aa203ac
📒 Files selected for processing (2)
docs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.mddocs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.md
…ription Recast '12. Migration Graph Rendering' from a redesign rationale (why-we-rewrote, before/after, open-questions, as-implemented addendum) into a steady-state description of the renderer as it stands. Fixed the inverted plane/z-order in the data-structure section and aligned the types to the shipped model. Signed-off-by: Will Madden <madden@prisma.io>
The visual-language doc isn't a subsystem (the '12a.' prefix implied a sub-subsystem tier that doesn't exist) — it's reference material. Move it to docs/reference/ and repoint the link from the renderer subsystem doc. Signed-off-by: Will Madden <madden@prisma.io>
The migration-graph renderer is a CLI formatter, not a peer subsystem of Migration System / CLI / Data Contract — and its content is a design decision (line/plane/occlusion model, single-owner cells, occlusion over blended glyphs) with a rationale and rejected alternatives, which is ADR-shaped. Convert subsystems/12 into ADR 229, cross-link it with ADR 227 (the command-level renderer-sharing decision), and index it. The glyph/layout vocabulary stays in docs/reference/. Signed-off-by: Will Madden <madden@prisma.io>
6112003 to
1e7337e
Compare
The hand-drawn example had fabricated glyphs and wrongly showed the forward line and back-arc sharing a column — the renderer routes the arc on its own lane precisely so they don't. Replace it with the rollback-arc:flat golden verbatim and correct the surrounding prose. Signed-off-by: Will Madden <madden@prisma.io>
- Tag the worked-example fenced blocks in ADR 227/228/229 with `text` (MD040). - Drop the transient 'TML-2773, slice lane-colors-and-legend' reference from the visual-language reference doc; durable docs carry no project-slice nomenclature. Signed-off-by: Will Madden <madden@prisma.io>
Close-out: migration-graph-rendering
Closes the
migration-graph-renderingproject (TML-2746). It began as a redesign ofmigration graph's renderer and broadened into a revamp of the whole interrogative migration read-command family (list/graph/status/log) on a shared renderer + ledger foundation. All work has shipped; this PR migrates the durable knowledge intodocs/and deletes the transient project scaffolding.Definition of Done — verified
list/status/logrevamped on the shared renderer; dagre +list --graphretiredmigration-list/status/log/graph.tsuse the shared renderer; nodagre/tree-render/layoutrenderers remainmainNo unmet acceptance criteria. External-reference scan for
projects/migration-graph-rendering/is empty (reference-strip step was a no-op).Durable knowledge migrated to
docs/docs/reference/Migration Graph Visual Language.md— the glyph/layout vocabulary the renderer draws from (was the project'smockups.md).The read-command consistency audit was re-validated against current code (verdict: largely accomplished — 4/7 findings resolved, 2 partial, 1 open) and captured as a Linear follow-up ticket (TML-2877, related to TML-2801) rather than a committed doc, since what remains is actionable backlog, not long-lived reference.
Transient artefacts (spec, plan, slice specs/plans/reviews,
decisions.md— now ADR'd,learnings.md, the followups draft,trace.jsonl, prototype, the audit doc) deleted with the folder / moved to Linear.Follow-ups (tracked, not in this PR)
--spacepolicy, log unscoped-semantics doc, check see-also, show/check decoration flags, + a parity-test extension).Retro — lessons
toMatchSnapshot()self-certifies whatever the renderer emits; the hand-authoredgolden-pipelineoracle caught a convergence regression the snapshots happily recorded as "correct."showcasegraph surfaced four distinct layout/colour bugs (disconnected-component interleave, asymmetric-diamond merge lane, trunk-continuation, greedy-colour wraparound) that the simple scenarios never hit.@prisma-next/cliruns vitest withisolate: false— "passes locally" ≠ passes in CI (parallel state pollution). Candidate for a durable testing note.fixtures:emitcan emit an integrity-failing fixture — the emitter andmigration checkdisagreed (a hash-collapse produced a no-op self-edge). Landed an offline demo integrity guard (fix(demo): remove collapsed no-op bookend migrations + integrity guard #773).🤖 Generated with Claude Code