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
feat(#208): suppress derivation-classification for @sql/@Unmanaged sources
The load-bearing suppression rule (§6). In build-projection-views.ts, both the
projection loop and the write-through host loop now classify DDL-ownership BEFORE
viewIsDerived:
- @Unmanaged read source -> skip (external; Flyway/hand-migration owns the DDL);
- @SQL read source -> push a VERBATIM ExpectedView via emitSqlView (supplied);
- neither -> the existing viewIsDerived/extractViewSpec derived path.
This closes the silent-wrong-synthesis hole: a hand-bodied view carrying an
extends-bound identity/fields (pure shape / row identity) previously flipped
viewIsDerived true and got a trivial base-table passthrough SELECT synthesized in
place of the author's irreducible SQL.
emitSqlView rides the unchanged fingerprint/adopt-view/drop pipeline: sql=verbatim
body, name=physicalName (FR-016), schema=resolveTableSchema, dependsOn=extends-bound
anchor tables (D7, via exported refNamedOwner), columns OMITTED (opaque body ->
diff fails safe to gated drop+create). @SQL on a non-view kind hard-errors (D4).
ExpectedView.columns is now optional (migrate-ts already reads absent columns as
"unknown").
TS-only (ADR-0015). codegen-ts: 990 pass, typecheck clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGQ7oSuNcjhsMHWwZzhBwr
0 commit comments