docs(target-extensible-ir-namespaces): consolidate umbrella + replan S1#549
Conversation
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (22)
📒 Files selected for processing (4)
📝 WalkthroughWalkthroughAdds two drive-plan-project trial findings (boundary and win) to drive/retro/findings.md, rewrites drive-discussion's invocation description, and removes disable-model-invocation flags from two skill metadata files to enable orchestrator-driven invocation. ChangesTrial Findings and Orchestration Skill Refinement
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 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)
Comment |
@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/extension-cipherstash
@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/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/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: |
…personas, github-review-iteration
Remove disable-model-invocation gate on three skills that already had clear
trigger language but were unnecessarily blocked from auto-invoke.
drive-discussion gets a rewritten description that names legitimate
auto-trigger contexts (pre-spec, mid-spec, falsified-assumption, obstacle,
explicit operator request) and the cases where it must NOT fire (simple
clarifying questions, implementation work, pressure-testing finished
artefacts). The old "Use ONLY when the user explicitly invokes this skill /
Never auto-invoke" line was contradicted by the body's own trigger list,
which already named pre-spec / mid-spec / mid-flight as legitimate
auto-trigger contexts and noted that workflow skills route here on
triggers 3/4.
drive-agent-personas: persona library is a load-time resource for other
skills; nothing about it requires gating on explicit invocation.
github-review-iteration: description already names the trigger phrases
("address PR review", "triage review comments", "iterate until review is
clean"). The manual gate added no value.
Signed-off-by: Will Madden <madden@prisma.io>
… branch Pull the existing project spec + ADR 0001 from origin/contract-ir-planes onto the planning branch so the S1 design (TML-2584) can be rewritten in-place rather than coordinated across two branches. The contract-ir-planes branch will be deleted after the rewrite lands. The imported content is not the final state — scope-cuts agreed in this planning round move enums out of the framework-shared types slot and defer RLS / TML-2537 substrate work to separate projects. Rewrite happens next under drive-discussion + drive-specify-project + drive-plan-project. Signed-off-by: Will Madden <madden@prisma.io>
…tity coordinate Rewrite of projects/contract-ir-planes/spec.md absorbing the design discussion (architect + principal-engineer lenses) that pressure-tested the target-pack-contributed entity-kind mechanism and sized the structural refactor against drive's slice budget. Key decisions captured: - D1-D4 kept from the previous spec (two-plane shape, uniform indexing, domain/storage names, object-pair cross-references) - D5 rewritten to front-load the descriptor mechanism: target packs contribute new entity kinds via AuthoringContributions.entityTypes; framework-shared storage.<ns>.types slot deleted as a load-bearing surface; framework-known built-ins (tables, collections) stay hardcoded as deliberate paid debt - D6 new: entity coordinate (namespaceId, entityKind, entityName) becomes the canonical addressing primitive across migration disjoint calculation, planner diffing, validator collision checks, and cross-plane references - D8 new: Tier 1 scope discipline. First-class user affordances (typed Role.member references, db.enums.X surface, codec value-narrowing) live in postgres-enum-finishing; this project ships only the structural relocation that satisfies PDoD3 Added to align with the modern drive-specify-project template: - Functional + Non-Functional Requirements - A1-A7 load-bearing assumptions named for I12 falsification - OQ1-OQ5 implementer degrees of freedom Predecessor PR #534 (TML-2520, namespace exemplar) is now merged at commit 66da80f; spec updates the predecessor framing accordingly. Linked tickets unchanged: subsumes TML-2579, TML-2580, TML-2582; sibling TML-2537 explicitly out of scope; follow-ups TML-2581/TML-2550, TML-2583 unchanged. Signed-off-by: Will Madden <madden@prisma.io>
…ack mechanism Tighter rewrite focusing on the durable architectural decisions: - Decision 1: Two planes (domain, storage) - kept, lightly trimmed - Decision 2: Uniform <plane>.<ns>.<entityKind>.<entityName> shape - kept, updated example to include pack-contributed postgresEnums slot - Decision 3 (new): Canonical entity coordinate (namespaceId, entityKind, entityName) as the addressing primitive; explains the migration disjoint-calc dependency - Decision 4: Object-pair cross-references - kept - Decision 5 (new, was implicit): Pack-contributed entity-kind mechanism via AuthoringContributions.entityTypes; explicitly names the dual-surface (built-ins hardcoded + contributed kinds via descriptor) as deliberate paid debt - Decision 6: Narrowed framework Namespace interface - kept, trimmed Dropped: - Process-meta sections (D6 ADR-worthy, D7 scope-cleavage from PR #534) - these are project-shaping decisions, not architecture decisions; live in spec.md - "How the structural shape was chosen" narrative - chronology of design discussion doesn't belong in a durable architecture record - "Cleanup work absorbed by this project" section - this is project-scope detail; spec.md owns it Added alternatives G/H/I/J/K to cover the new design space the descriptor mechanism and entity-coordinate decisions opened up (hardcoded-per-pack, single generic entities slot, retrofit built-ins, pair-coordinate, string coordinate). This ADR is the durable artifact - migrates to docs/architecture docs/adrs/ at project close-out per PDoD9. The spec.md retains project-scope details (Tier 1 scope discipline, A1-A7 assumptions, OQ1-OQ5 degrees of freedom). Signed-off-by: Will Madden <madden@prisma.io>
Six slices structured as substrate → migration → propagation: Stack (sequential): - Slice 1 — Two-plane IR primitives + entity-coordinate primitive - Slice 2 — Pack-contributed entity-kind descriptor mechanism - Slice 3 — Migrate Postgres enum off framework-shared types slot (PDoD3 satisfied here; project-specific grep gate enforces) Parallel group A (after stack): - Slice 4 — Cross-reference encoding migration (object pairs) - Slice 5 — On-disk contract regeneration + migration replay verification Final: - Slice 6 — Delete subsumed surfaces + close subsumed Linear tickets (grep gate enforces deletion completeness) Each slice is ≤ 1 PR per drive sizing. Realistic budget ~10-12 days. Slice 3 carries the project's single most-likely re-scope trigger: if assumption A6 (no external consumers pinning shape) is falsified during execution, Slice 3 splits into 3a (deprecation shim) + 3b (hard-cut). Plan's working position is hard-cut. Project-DoD coverage map shows every PDoD has at least one delivering slice. Risks register names A4, A6, A7 falsification scenarios as discussion-mode re-entry triggers per invariant I12. Six Linear tickets need creating before slice pickup begins — folded into the Linear audit pass that's coming up at the umbrella level. Tickets intentionally not auto-created here because the umbrella's Linear audit will resolve duplicate/stale tickets in the same pass. Signed-off-by: Will Madden <madden@prisma.io>
…ect spec Scaffold projects/target-extensible-ir-namespaces/ as the drive-project umbrella for the target-extensible IR + first-class namespaces work. The umbrella composes three units: - S1: contract-ir-planes sub-project (TML-2584) — pre-EA - S2: runtime-qualification slice (TML-2605) — pre-EA - S3: explicit-namespace-dsl slice (TML-2550) — post-EA S1 absorbs the Postgres-enum-as-exemplar migration that earlier framings had as a separate S4 — it's exactly the load-bearing proof of S1's descriptor mechanism, not a separately trackable unit. The spec's load-bearing properties: - Pre-EA scope (S1 + S2) ships zero user-facing query-API breakage. The D8 default-namespace family-façade fallback is the EA-protection mechanism: existing single-default-namespace consumers write the same query code they wrote before this umbrella. - S1's substrate makes future pack-contributed entity kinds cheap. RLS policies, roles, sequences, materialised views — every Postgres-only feature the downstream Supabase initiative needs to ship is one descriptor registration through AuthoringContributions.entityTypes. Honest estimate (A2): ~12-15 days for S1 (6 slices) + S2 = pre-EA slip vs. the "few days" framing. Working position is to accept the slip rather than ship breaking IR changes into EA. Scaffold includes the drive-convention dirs (specs/, plans/, slices/, assets/, adrs/) with .gitkeep files. specs/ and plans/ likely stay empty — the umbrella delegates per-slice specs to slices/<slice>/spec.md and per-sub-project specs/plans to the sub-project's own folder. Signed-off-by: Will Madden <madden@prisma.io>
Single stack thread S1 → S2 → S3. No parallelisation at umbrella level — each unit gates the next on substrate, not just convention. S1 (sub-project, contract-ir-planes) decomposes internally into 6 slices per its own plan; the umbrella plan delegates that detail rather than duplicating it. S2 (slice, runtime-qualification, TML-2605) gets a slice spec when picked up via drive-specify-slice, lands at slices/runtime-qualification/. S3 (slice, explicit-namespace-dsl, TML-2550) same pattern. EA cut sits between S2 and S3 — pre-EA must-ship is S1 + S2; S3 is post-EA additive on S2's default-namespace fallback. PDoD coverage map shows every umbrella PDoD has a delivering unit. Risks register names the EA-timeline slip (A2) as the load-bearing project-level conversation; S1 falsification cascade as the most likely re-sequencing trigger; A4 (default-namespace fallback sufficiency) as the EA-protection-mechanism failure mode. Close-out includes archiving the rolled-up sibling project folders (target-extensible-ir/, namespace-exemplar/, contract-ir-planes/) per drive's projects/ transient-folder discipline. Signed-off-by: Will Madden <madden@prisma.io>
…o-ship falsifier Applied the co-ship falsifier (drive/retro/findings.md 2026-05-20 boundary entry) to the contract-ir-planes plan mid-flight, before locking the slice composition into Linear tickets. Plan changes: - Previous Slice 1 (framework primitives) + Slice 2 (descriptor mechanism wiring) → S1.A "Substrate" (2 dispatches). The previous Slice 1 description literally contained the co-ship falsifier: "no behavioural change yet because nothing consumes the new shape." Collapsed. - Previous Slice 3 (enum migration) + half of Slice 5 (fixture regen) → S1.B (3 dispatches). Fixture regen is forced by the slot change, not a deliberate planning step; it's a dispatch within the slice that causes it. - Previous Slice 4 (cross-references) + other half of Slice 5 → S1.C (2 dispatches). Same rationale. - Previous Slice 6 → S1.D (4 dispatches). Stays separate — reviewers can focus on deletion correctness without conflating with structural changes; grep gate is its own quantitative PDoD check. Total budget unchanged (~10-12 days); slice count drops 6 → 4; dispatch count holds at ~11. Retro entry (drive/retro/findings.md) captures the catch as a win — the falsifier was named in the prior boundary finding; operator surfaced the finding mid-discussion; agent re-read its own plan against the rule rather than defending the original framing. The mechanism (operator attaches prior finding → agent applies falsifier → plan revises before mutation) is itself a reusable pattern worth promoting upstream. Group C in the Linear audit proposal now creates 4 tickets (S1.A through S1.D) instead of 6. Signed-off-by: Will Madden <madden@prisma.io>
Linear audit completed 2026-05-20. On-disk plans updated to reference the actual ticket IDs created during the audit (were "TBD" before): - TML-2622 = S1.A (substrate: primitives + descriptor mechanism) - TML-2623 = S1.B (enum migration off framework-shared types slot — PDoD3) - TML-2624 = S1.C (cross-reference encoding migration) - TML-2625 = S1.D (cleanup + close subsumed tickets) All four created with relatedTo TML-2584 (graph link, not sub-issues). Umbrella plan's external dependencies section updated with full audit outcome: mainline tickets refreshed, subsumed tickets noted (close on slice PR merge via GitHub integration), out-of-umbrella tickets left in project with explanatory comments. Signed-off-by: Will Madden <madden@prisma.io>
…-exemplar Both folders are superseded by the consolidated umbrella: - projects/target-extensible-ir/ — substrate predecessor, now rolled into projects/target-extensible-ir-namespaces/ (umbrella spec) + projects/contract-ir-planes/ (S1 sub-project) - projects/namespace-exemplar/ — TML-2520 / PR #534 shipping artifacts, now merged into main at commit 66da80f Their decision content is captured in the umbrella + sub-project specs and ADR. The transient working artifacts (slices/, reviews/, learnings, plans) live in wip/archived-projects-2026-05-20/ on this worktree only (wip/ is gitignored) for local reference if needed. Resolves the "consolidate the projects into one directory" motivation from the planning conversation: the on-disk projects/ tree now has one umbrella + one sub-project for this work, not five overlapping folders. Signed-off-by: Will Madden <madden@prisma.io>
700a7f6 to
15f6159
Compare
Why
Consolidates the target-extensible-ir-namespaces umbrella work into a single coherent on-disk project + replans its S1 sub-project (contract-ir-planes) with the descriptor mechanism + entity coordinate decisions from the 2026-05-20 planning conversation. Resolves the "multiple overlapping project folders" problem flagged at the start of the planning session.
Planning only — zero implementation work lands in this PR. Demo apps, package code, fixtures all untouched. No ticket attachments intended: planning PRs should not auto-link to the tickets they plan against (which would auto-close them on merge as if implementation work was completed).
What lands
New umbrella project:
projects/target-extensible-ir-namespaces/spec.md— purpose, scope (substrate + runtime qualification + explicit DSL surface only — no PSL substrate, no RLS), PDoD, A1-A5 assumptionsplan.md— single stack thread S1 → S2 → S3; pre-EA scope = S1 + S2; post-EA = S3slices/,adrs/,specs/,plans/,assets/) per drive conventionRewritten S1 sub-project:
projects/contract-ir-planes/spec.md— D1-D8 decisions (two planes, uniform shape, plane names, object-pair refs, descriptor mechanism, entity coordinate, ADR-worthy, Tier 1 scope discipline), A1-A7 assumptions, OQ1-OQ5 implementer degrees of freedomadrs/0001-contract-planes.md— durable architecture decisions (D1-D6, migrates todocs/architecture docs/adrs/at close-out)plan.md— 4-slice composition (substrate → enum migration → cross-references → cleanup); each slice ≤ 1 PR with internal dispatchesLinear audit executed
Archived
projects/target-extensible-ir/andprojects/namespace-exemplar/removed from the tracked tree; content preserved atwip/archived-projects-2026-05-20/on local worktrees (wip/is gitignored)Drive retro
winstanza indrive/retro/findings.mddocumenting the mid-flight application of theco-shipfalsifier from a priorboundaryfinding. Caught a 6-slice composition that should have been 4 slices before locking it into Linear tickets.Bonus: skills frontmatter fix
drive-discussion,drive-agent-personas,github-review-iterationcarrieddisable-model-invocation: truedespite their bodies listing legitimate auto-trigger contexts. Removed the gate; updateddrive-discussion's description to enumerate when it should fire vs. when it should NOT.What does NOT land
Reviewer focus
Where the value is, in order of return-on-attention:
projects/target-extensible-ir-namespaces/spec.md— does the umbrella's purpose + scope + PDoD match what you think we're shipping? Especially: pre-EA scope (S1 + S2 only) honest about the timeline implications.projects/contract-ir-planes/spec.md§ Approach + § Decision log — the descriptor mechanism (D5) and entity coordinate(namespaceId, entityKind, entityName)(D6) are the load-bearing new decisions. The Tier 1 scope discipline (D8) names what's deferred topostgres-enum-finishingso the boundary stays sharp.projects/contract-ir-planes/plan.md§ Composition — 4 slices, each ≤ 1 PR, with internal dispatches. The 4-slice carving was originally drafted as 6 slices and collapsed mid-flight per the co-ship falsifier (seedrive/retro/findings.mdwin entry); re-eyes welcome.projects/contract-ir-planes/adrs/0001-contract-planes.md— durable architecture decisions. Migrates todocs/architecture docs/adrs/at project close-out per PDoD9.Commit history note
The history shows a draft 6-slice plan superseded by a 4-slice rewrite rather than squashing. The messy history is intentional — the retro stanza references it as a worked example of catching the co-ship falsifier in real time.
Linked tickets
The umbrella and its slices are tracked in Linear under Target-Extensible IR + Namespaces. This PR is planning work and does NOT close any of those tickets; their execution PRs will close them individually.
Summary by CodeRabbit
Documentation
Improvements