You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit cf68d5e
Browse filesBrowse the repository at this point in the historyBrowse files
Addresses the /code-review high findings on the TS reference (Tasks 4-6):
- [1, correctness] The default OFFLINE `meta migrate` generate path (planOffline)
never threaded the @Unmanaged name set, so an @Unmanaged table captured into the
snapshot by a `baseline --from-db` was proposed for DROP. planOffline now threads
collectUnmanagedNames(args.metadata) into its diff internally (parity with the
online + verify paths). Regression test added.
- [own-source parity] expected-schema's @Unmanaged writable-source detection now uses
ownChildren() to match collectUnmanagedNames — so the "skip the descriptor" half and
the "suppress the drop" half agree exactly. This converts a theoretical split-brain
(a table not created yet still proposed for destructive drop, for an @Unmanaged source
inherited via extends) into consistent treat-as-managed. collectUnmanagedNames now
takes MetaData (not MetaRoot) so planOffline can call it without a cast.
- [6, cleanup] The DDL-ownership classification block was duplicated verbatim across the
projection and write-through loops in build-projection-views. Factored into a shared
classifyReadOnlySource() returning skip | sql | derive, so the ownership rules can
never diverge between the two host kinds (the emit tail was already shared).
Deferred/intended (documented in Task 11, NOT bugs): an @SQL view's dependsOn is
derived from extends-anchors only (D7 / §11 YAGNI — the @dependsOn escape is deferred
until an adopter hits an undeclared-dependency alter); an @Unmanaged view is not
drop/recreated around a managed dependency's column ALTER (the tool has no body for an
external view — it cannot recreate it) and an FK into an @Unmanaged table has no ordering
guarantee vs the external tool (both documented adopter caveats, spec §7).
migrate-ts 588 pass; codegen-ts 120 projection; cli 375; view-lifecycle-pg 16/16;
typechecks clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGQ7oSuNcjhsMHWwZzhBwr
0 commit comments