Skip to content

chore: close out migration-graph-rendering project (TML-2746)#775

Merged
wmadden-electric merged 14 commits into
mainfrom
close-migration-graph-rendering
Jun 9, 2026
Merged

chore: close out migration-graph-rendering project (TML-2746)#775
wmadden-electric merged 14 commits into
mainfrom
close-migration-graph-rendering

Conversation

@wmadden-electric

@wmadden-electric wmadden-electric commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Close-out: migration-graph-rendering

Closes the migration-graph-rendering project (TML-2746). It began as a redesign of migration 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 into docs/ and deletes the transient project scaffolding.

Definition of Done — verified

Outcome Evidence
Tier-3 renderer rebuilt (line/plane/occlusion) #762
Back-arc convergence, configurable geometry, greedy lane colouring, layout fixes #767
Ledger foundation (per-migration journal) #665
list/status/log revamped on the shared renderer; dagre + list --graph retired shipped; verified — migration-list/status/log/graph.ts use the shared renderer; no dagre/tree-render/layout renderers remain
Read-command consistency (TML-2801) re-validated this PR: 4/7 findings resolved, 2 partial, 1 open (4 small follow-ups noted below)
Showcase real-world golden on main

No 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/

  • ADR 227 — Migration read commands share one graphical renderer with command-specific annotations.
  • ADR 228 — The migration apply ledger is a per-migration journal.
  • ADR 229 — The migration graph renderer uses a line/plane/occlusion model (the renderer's internal design — lines as the primitive, single-owner cells, occlusion over blended glyphs). All three verified against shipped code.
  • docs/reference/Migration Graph Visual Language.md — the glyph/layout vocabulary the renderer draws from (was the project's mockups.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)

Retro — lessons

  • A wholesale rewrite obsoletes fine-grained bug-slices. Three glyph-bug slice specs (tee/marker bugs) were made moot by the line/plane/occlusion rewrite — they targeted deleted code. Re-triage the backlog after a rewrite; don't carry dead slices.
  • Hand-authored goldens beat auto-snapshots for correctness. toMatchSnapshot() self-certifies whatever the renderer emits; the hand-authored golden-pipeline oracle caught a convergence regression the snapshots happily recorded as "correct."
  • Real-world fixtures expose layout bugs unit fixtures miss. Validating against the showcase graph 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/cli runs vitest with isolate: false — "passes locally" ≠ passes in CI (parallel state pollution). Candidate for a durable testing note.
  • fixtures:emit can emit an integrity-failing fixture — the emitter and migration check disagreed (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

wmadden added 5 commits June 9, 2026 13:48
…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>
@wmadden-electric wmadden-electric requested a review from a team as a code owner June 9, 2026 11:56
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

@wmadden-electric, we couldn't start this review because you've reached your PR review rate limit.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Path: .coderabbit.yml

Review profile: CHILL

Plan: Pro

Run ID: a35c812f-a84d-4d92-ae36-fd04ec8f5f18

📥 Commits

Reviewing files that changed from the base of the PR and between aa84397 and 9398e47.

📒 Files selected for processing (5)
  • docs/architecture docs/ADR-INDEX.md
  • docs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.md
  • docs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.md
  • docs/architecture docs/adrs/ADR 229 - Migration graph renderer uses a line-plane-occlusion model.md
  • docs/reference/Migration Graph Visual Language.md
📝 Walkthrough

Walkthrough

This 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.

Changes

Migration System Architecture Decisions and Documentation

Layer / File(s) Summary
ADR 227: Unified read command renderer with per-edge annotations
docs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.md
Specifies a single graphical renderer shared by migration list, migration graph, and migration status. All three commands draw the same topology-derived tree while differing only through sparse, per-edge annotation inputs (e.g., operationCount for list, status overlay for status). Defines MigrationEdgeAnnotation interface, fixes trunk selection to the chain containing the live contract hash, documents node marker semantics, space rendering defaults, and separates human-facing graphical output from command-specific JSON formats.
ADR 228: Per-migration append-only ledger journal
docs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.md
Defines a redesigned migration ledger as an append-only per-edge journal. Specifies ledger entry schema (space, migrationName, migrationHash, from/to, appliedAt, operationCount), how migration status determines applied vs pending via readLedger(space), how migration log renders the full ledger in apply order, ordering/rendering rules, timestamp semantics, and cross-adapter signature expectations.
Architecture documentation index and subsystem spec alignment
docs/architecture docs/ADR-INDEX.md, docs/architecture docs/subsystems/12. Migration Graph Rendering.md, docs/architecture docs/subsystems/12a. Migration Graph Rendering — Visual Language.md
ADR index adds entries for ADR 227 and 228. Renderer subsystem doc replaces "design-of-record" framing with explicit "model" description, clarifies greedy lane colouring in normal mode, and expands "as implemented" section with concrete formatter modules and algorithm details. Visual language doc reframes from "hand-drawn mockups" to a formal glyph/layout contract companion to the architecture specification.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~4 minutes

Possibly related PRs

  • prisma/prisma-next#706: Implements the shared migration graph renderer and per-edge annotation plumbing (edgeAnnotationsByHash) formalized in ADR 227, extending renderMigrationGraphTree and integrating annotations into migration list output.

Poem

🐰 A rabbit hops through migration trees,
ADRs bloom like dandelion seeds,
One renderer to rule them all,
A ledger logs each apply and fall,
Architecture now crystal and clear!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically summarizes the main objective: closing out the migration-graph-rendering project and documenting completed work.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch close-migration-graph-rendering

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown

size-limit report 📦

Path Size
postgres / no-emit 150.65 KB (0%)
postgres / emit 119.44 KB (0%)
mongo / no-emit 76.67 KB (0%)
mongo / emit 70.96 KB (0%)
cf-worker / no-emit 179.98 KB (0%)
cf-worker / emit 145.5 KB (0%)

@pkg-pr-new

pkg-pr-new Bot commented Jun 9, 2026

Copy link
Copy Markdown

Open in StackBlitz

@prisma-next/extension-author-tools

npm i https://pkg.pr.new/@prisma-next/extension-author-tools@775

@prisma-next/mongo-runtime

npm i https://pkg.pr.new/@prisma-next/mongo-runtime@775

@prisma-next/family-mongo

npm i https://pkg.pr.new/@prisma-next/family-mongo@775

@prisma-next/sql-runtime

npm i https://pkg.pr.new/@prisma-next/sql-runtime@775

@prisma-next/family-sql

npm i https://pkg.pr.new/@prisma-next/family-sql@775

@prisma-next/extension-arktype-json

npm i https://pkg.pr.new/@prisma-next/extension-arktype-json@775

@prisma-next/middleware-cache

npm i https://pkg.pr.new/@prisma-next/middleware-cache@775

@prisma-next/mongo

npm i https://pkg.pr.new/@prisma-next/mongo@775

@prisma-next/extension-paradedb

npm i https://pkg.pr.new/@prisma-next/extension-paradedb@775

@prisma-next/extension-pgvector

npm i https://pkg.pr.new/@prisma-next/extension-pgvector@775

@prisma-next/extension-postgis

npm i https://pkg.pr.new/@prisma-next/extension-postgis@775

@prisma-next/postgres

npm i https://pkg.pr.new/@prisma-next/postgres@775

@prisma-next/sql-orm-client

npm i https://pkg.pr.new/@prisma-next/sql-orm-client@775

@prisma-next/sqlite

npm i https://pkg.pr.new/@prisma-next/sqlite@775

@prisma-next/extension-supabase

npm i https://pkg.pr.new/@prisma-next/extension-supabase@775

@prisma-next/target-mongo

npm i https://pkg.pr.new/@prisma-next/target-mongo@775

@prisma-next/adapter-mongo

npm i https://pkg.pr.new/@prisma-next/adapter-mongo@775

@prisma-next/driver-mongo

npm i https://pkg.pr.new/@prisma-next/driver-mongo@775

@prisma-next/contract

npm i https://pkg.pr.new/@prisma-next/contract@775

@prisma-next/utils

npm i https://pkg.pr.new/@prisma-next/utils@775

@prisma-next/config

npm i https://pkg.pr.new/@prisma-next/config@775

@prisma-next/errors

npm i https://pkg.pr.new/@prisma-next/errors@775

@prisma-next/framework-components

npm i https://pkg.pr.new/@prisma-next/framework-components@775

@prisma-next/operations

npm i https://pkg.pr.new/@prisma-next/operations@775

@prisma-next/ts-render

npm i https://pkg.pr.new/@prisma-next/ts-render@775

@prisma-next/contract-authoring

npm i https://pkg.pr.new/@prisma-next/contract-authoring@775

@prisma-next/ids

npm i https://pkg.pr.new/@prisma-next/ids@775

@prisma-next/psl-parser

npm i https://pkg.pr.new/@prisma-next/psl-parser@775

@prisma-next/psl-printer

npm i https://pkg.pr.new/@prisma-next/psl-printer@775

@prisma-next/cli

npm i https://pkg.pr.new/@prisma-next/cli@775

@prisma-next/cli-telemetry

npm i https://pkg.pr.new/@prisma-next/cli-telemetry@775

@prisma-next/emitter

npm i https://pkg.pr.new/@prisma-next/emitter@775

@prisma-next/migration-tools

npm i https://pkg.pr.new/@prisma-next/migration-tools@775

prisma-next

npm i https://pkg.pr.new/prisma-next@775

@prisma-next/vite-plugin-contract-emit

npm i https://pkg.pr.new/@prisma-next/vite-plugin-contract-emit@775

@prisma-next/mongo-codec

npm i https://pkg.pr.new/@prisma-next/mongo-codec@775

@prisma-next/mongo-contract

npm i https://pkg.pr.new/@prisma-next/mongo-contract@775

@prisma-next/mongo-value

npm i https://pkg.pr.new/@prisma-next/mongo-value@775

@prisma-next/mongo-contract-psl

npm i https://pkg.pr.new/@prisma-next/mongo-contract-psl@775

@prisma-next/mongo-contract-ts

npm i https://pkg.pr.new/@prisma-next/mongo-contract-ts@775

@prisma-next/mongo-emitter

npm i https://pkg.pr.new/@prisma-next/mongo-emitter@775

@prisma-next/mongo-schema-ir

npm i https://pkg.pr.new/@prisma-next/mongo-schema-ir@775

@prisma-next/mongo-query-ast

npm i https://pkg.pr.new/@prisma-next/mongo-query-ast@775

@prisma-next/mongo-orm

npm i https://pkg.pr.new/@prisma-next/mongo-orm@775

@prisma-next/mongo-query-builder

npm i https://pkg.pr.new/@prisma-next/mongo-query-builder@775

@prisma-next/mongo-lowering

npm i https://pkg.pr.new/@prisma-next/mongo-lowering@775

@prisma-next/mongo-wire

npm i https://pkg.pr.new/@prisma-next/mongo-wire@775

@prisma-next/sql-contract

npm i https://pkg.pr.new/@prisma-next/sql-contract@775

@prisma-next/sql-errors

npm i https://pkg.pr.new/@prisma-next/sql-errors@775

@prisma-next/sql-operations

npm i https://pkg.pr.new/@prisma-next/sql-operations@775

@prisma-next/sql-schema-ir

npm i https://pkg.pr.new/@prisma-next/sql-schema-ir@775

@prisma-next/sql-contract-psl

npm i https://pkg.pr.new/@prisma-next/sql-contract-psl@775

@prisma-next/sql-contract-ts

npm i https://pkg.pr.new/@prisma-next/sql-contract-ts@775

@prisma-next/sql-contract-emitter

npm i https://pkg.pr.new/@prisma-next/sql-contract-emitter@775

@prisma-next/sql-lane-query-builder

npm i https://pkg.pr.new/@prisma-next/sql-lane-query-builder@775

@prisma-next/sql-relational-core

npm i https://pkg.pr.new/@prisma-next/sql-relational-core@775

@prisma-next/sql-builder

npm i https://pkg.pr.new/@prisma-next/sql-builder@775

@prisma-next/target-postgres

npm i https://pkg.pr.new/@prisma-next/target-postgres@775

@prisma-next/target-sqlite

npm i https://pkg.pr.new/@prisma-next/target-sqlite@775

@prisma-next/adapter-postgres

npm i https://pkg.pr.new/@prisma-next/adapter-postgres@775

@prisma-next/adapter-sqlite

npm i https://pkg.pr.new/@prisma-next/adapter-sqlite@775

@prisma-next/driver-postgres

npm i https://pkg.pr.new/@prisma-next/driver-postgres@775

@prisma-next/driver-sqlite

npm i https://pkg.pr.new/@prisma-next/driver-sqlite@775

commit: ee55195

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between b5c38a0 and a0ccdb5.

⛔ Files ignored due to path filters (42)
  • projects/migration-graph-rendering/README.md is excluded by !projects/**
  • projects/migration-graph-rendering/decisions.md is excluded by !projects/**
  • projects/migration-graph-rendering/learnings.md is excluded by !projects/**
  • projects/migration-graph-rendering/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/prototype/gallery.md is excluded by !projects/**
  • projects/migration-graph-rendering/prototype/proto.mjs is excluded by !projects/**
  • projects/migration-graph-rendering/read-command-consistency-audit.md is excluded by !projects/**
  • projects/migration-graph-rendering/read-command-consistency-followups.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/check-single-target-multi-space/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/check-single-target-multi-space/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/check-single-target-multi-space/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/edges-on-plan/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/empty-origin-as-null/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/ledger-foundation/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/ledger-foundation/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/list-renders-tree/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/log-reads-ledger/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migrate-show-preview/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migrate-show-preview/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migrate-show-preview/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migration-fixture-audit/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migration-fixture-audit/reorg-spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migration-fixture-audit/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/migration-graph-space-flag/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-consistency/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-consistency/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-consistency/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-json-redesign/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-json-redesign/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/read-command-json-redesign/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/reconcile-control-api-surface/code-review.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/reconcile-control-api-surface/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/reconcile-control-api-surface/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/remove-list-graph-renderer/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/render-polish-and-ledger-tests/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/render-redesign-core/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/render-redesign-core/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/render-redesign-geometry/plan.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/render-redesign-geometry/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/slices/status-db-overlay/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/spec.md is excluded by !projects/**
  • projects/migration-graph-rendering/trace.jsonl is excluded by !projects/**
📒 Files selected for processing (6)
  • docs/architecture docs/ADR-INDEX.md
  • docs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.md
  • docs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.md
  • docs/architecture docs/research/read-command-consistency-audit.md
  • docs/architecture docs/subsystems/12. Migration Graph Rendering.md
  • docs/architecture docs/subsystems/12a. Migration Graph Rendering — Visual Language.md

Comment thread docs/architecture docs/research/read-command-consistency-audit.md Outdated
Comment thread docs/architecture docs/subsystems/12. Migration Graph Rendering.md Outdated
Comment thread docs/reference/Migration Graph Visual Language.md Outdated
wmadden added 3 commits June 9, 2026 14:11
…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>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between a0ccdb5 and aa84397.

📒 Files selected for processing (2)
  • docs/architecture docs/adrs/ADR 227 - Migration read commands share one graphical renderer with command-specific annotations.md
  • docs/architecture docs/adrs/ADR 228 - Migration apply ledger is a per-migration journal.md

wmadden added 3 commits June 9, 2026 14:33
…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>
@wmadden-electric wmadden-electric force-pushed the close-migration-graph-rendering branch from 6112003 to 1e7337e Compare June 9, 2026 12:54
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>
wmadden and others added 2 commits June 9, 2026 15:09
- 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>
@wmadden-electric wmadden-electric enabled auto-merge (squash) June 9, 2026 13:10
@wmadden-electric wmadden-electric merged commit d969acd into main Jun 9, 2026
20 checks passed
@wmadden-electric wmadden-electric deleted the close-migration-graph-rendering branch June 9, 2026 13:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants