TML-2503: plan complete Supabase contract + extension-aware contract infer#899
TML-2503: plan complete Supabase contract + extension-aware contract infer#899wmadden-electric wants to merge 1 commit into
Conversation
…Supabase) Operator scope decision: `contract infer` in a Supabase environment must write a meaningful contract.prisma that omits every element the Supabase extension owns. That makes brownfield adoption a launch requirement and requires the extension to ship a complete/faithful contract (the ownership source of truth). - plan.md: mark Slice D done (#845); add Slice F (complete Supabase contract via introspection — gated on native enums) and Slice G (extension-aware contract infer — subtracts pack-owned elements; gated on F + CLI work); Slice E gate -> B-G. - decisions.md: C16 (brownfield infer omits extension-owned elements; infer is not extension-aware today; ownership from the pack complete contract). - deferred.md: un-defer introspection-emit + adopt-from-database (now Slices F/G). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Signed-off-by: willbot <w.a.madden+machine@gmail.com>
|
Important Review skippedReview was skipped due to path filters ⛔ Files ignored due to path filters (3)
CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including ⚙️ Run configurationConfiguration used: Path: .coderabbit.yml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ 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 |
Linked issue
Refs TML-2503. Planning-doc update for the extension-supabase project. Docs-only.
Summary
Records an operator scope decision:
contract inferin a Supabase environment must write a meaningfulcontract.prismathat omits every element the Supabase extension owns. That makes brownfield adoption a launch requirement — and requires the extension to ship a complete, faithful contract as the source of truth for what it owns.What changed
plan.md— mark Slice D done (TML-2503: Supabase-internal namespaces via a secondary db.supabase root (slice D) #845); add:auth/storagetables + native enum types + roles, via introspection per C8). Gated on native enums (in flight) — Supabase'sauthschema uses native Postgres enum types. It's the ownership source of truth for verify, thedb.supabaseadmin surface, and Slice G.contract infer— writes an app-onlycontract.prismaomitting pack-owned elements. Gated on F + framework/CLI changes.decisions.md— C16: brownfieldcontract infermust omit extension-owned elements. Records that infer is not extension-aware today (no contract → introspectspublic, emits everythingmanaged, blind to pack ownership), and that making it extension-aware (subtract the stack packs' owned set) is a launch requirement, not a follow-up.deferred.md— un-defer "introspection-based emit" and "adopt --from-database" (now Slices F/G).Reviewer notes
contract inferlearns the pack's owned set + the subtraction rule (G) are non-trivial framework/CLI design still to be shaped; this PR represents the deliverables + gates, not the mechanism.externalverify suppresses extra tables/columns/drift and only fails ondeclaredMissing; the app's ownpublicstaysmanaged(per-contractdefaultControlPolicy);contract infersets no control policy and consults no extension pack.Testing performed
n/a — documentation only.
Skill update
n/a — internal planning docs; no user-facing surface change.
Checklist
git commit -s).TML-NNNN: <title>form — Linear-prefixed below.