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
driver-turso remote detectManagedDrift() diffs against the dummy :memory: Knex connection remote mode is given — drift is always empty, so the artifact boot migration gate reads a remote Turso database as never drifted #19845
Filing gate: ① a defect with a named landing site: TursoDriver in remote mode inherits SqlDriver.detectManagedDrift, which introspects through the Knex connection. For the remote transport, TursoDriver.toKnexConfig supplies a placeholder { filename: ':memory:' }. Finding class (a): a driver-level reproduction.
Filed by the domain:engine execution seat 1 (session_01TEhopqrWQYBycZzyJHpAZr) from the out-of-scope findings of its #19823 dev (report 5793283754 on #19823, PR #19842). The seat re-read the code on origin/main; ⛔ it did not re-run the repro. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.
What the tree says (origin/main, read this act)
TursoDriver.toKnexConfig(config, mode) gives the Knex half a connection: { filename: ':memory:' } for the remote transport, which carries no real tables.
SqlDriver.detectManagedDrift is not overridden by TursoDriver, so on a remote driver it diffs the declared schema against that empty in-memory database.
In the dev's measurement, remote syncSchema also leaves the managed-object set empty. That is a second reason the diff has nothing to compare.
The dev's reproduction (on the libsql SQLite test double)
Table t carries an extra physical column legacy that the declaration omits. The local driver reports unmapped_column / drop_column. The remote driver reports [], even with explicit objects passed.
Why it matters
The dev reports this is reachable from os serve: runArtifactBootMigrationGate (packages/cli/src/commands/serve.ts, fed by findSqlDriverForKernel) reads remote drift as none. A remote Turso deployment therefore passes a gate whose job is to stop a boot on schema drift. ⚠️NOT MEASURED by this seat: the serve.ts call chain end to end; a taker confirms it first.
Suggested shape (⛔ not a ruling)
Either implement remote drift detection through RemoteTransport introspection, or make remote detectManagedDrift refuse loudly (the transport's existing NOT_IMPLEMENTED / 501 envelope) so the gate says it cannot judge rather than answering "no drift". The refusal is the smaller, honest first step, the same shape PR #19842 takes for deferred DDL.
Filing-gate answers
Class: ① (defect, named landing site); finding class (a).
Acting reader: the seat that owns packages/drivers/driver-turso after triage routes it (domain:engine). The CLI gate is read-only context unless the refusal route needs its message.
Filing gate: ① a defect with a named landing site:
TursoDriverin remote mode inheritsSqlDriver.detectManagedDrift, which introspects through the Knex connection. For theremotetransport,TursoDriver.toKnexConfigsupplies a placeholder{ filename: ':memory:' }. Finding class (a): a driver-level reproduction.Filed by the
domain:engineexecution seat 1 (session_01TEhopqrWQYBycZzyJHpAZr) from the out-of-scope findings of its #19823 dev (report5793283754on #19823, PR #19842). The seat re-read the code onorigin/main; ⛔ it did not re-run the repro. ⛔ Filed bare: routing and grading are triage's. ⛔ Not a claim.What the tree says (
origin/main, read this act)TursoDriver.toKnexConfig(config, mode)gives the Knex half aconnection: { filename: ':memory:' }for the remote transport, which carries no real tables.SqlDriver.detectManagedDriftis not overridden byTursoDriver, so on a remote driver it diffs the declared schema against that empty in-memory database.syncSchemaalso leaves the managed-object set empty. That is a second reason the diff has nothing to compare.The dev's reproduction (on the
libsqlSQLite test double)Table
tcarries an extra physical columnlegacythat the declaration omits. The local driver reportsunmapped_column/drop_column. The remote driver reports[], even with explicit objects passed.Why it matters
The dev reports this is reachable from⚠️ NOT MEASURED by this seat: the
os serve:runArtifactBootMigrationGate(packages/cli/src/commands/serve.ts, fed byfindSqlDriverForKernel) reads remote drift as none. A remote Turso deployment therefore passes a gate whose job is to stop a boot on schema drift.serve.tscall chain end to end; a taker confirms it first.Suggested shape (⛔ not a ruling)
Either implement remote drift detection through
RemoteTransportintrospection, or make remotedetectManagedDriftrefuse loudly (the transport's existingNOT_IMPLEMENTED/ 501 envelope) so the gate says it cannot judge rather than answering "no drift". The refusal is the smaller, honest first step, the same shape PR #19842 takes for deferred DDL.Filing-gate answers
packages/drivers/driver-tursoafter triage routes it (domain:engine). The CLI gate is read-only context unless the refusal route needs its message.closedincluded:turso remote detectManagedDrift drift empty memory knex migration gate→ 12 hits, none this defect. The nearest are driver-turso remote mode ignores deferred DDL —os migrate planagainst a remote Turso datasource performs the DDL and the canonical backfill it was meant to preview, and prints no pending work #19823 (open; deferred DDL, a different method), [schema-drift] Fresh DB boots "drifted": detector can't read COALESCE index columns, then tells the operator to --allow-destructive away a legitimate unique index #4884 (closed; fresh-DB false drift, a different mechanism), and drivers(turso): remote 模式补 canonical backfill 通道(@libsql/client,分批、可恢复、完成标记)—— cloud#1005 移交,维护者已裁方案 1 #5770 / drivers(turso): remote 模式没有继承 #5146 的$notNULL-safe —— 同一个 TursoDriver,local 返回 NULL 行、remote 不返回(实测,origin/main) #5903 / drivers(turso): RemoteTransport 条件层的$-算子键被当列名编译成静默空集 —— SqlDriver 已按 #5348 拒收,remote 是唯一剩余面(cloud#1077 移交) #5769 / drivers:undefined比较数被发射器读作 null、却被守卫/校验读作「值」—— turso local 抛裸 knex 错、remote 静默答 IS NULL(实测,origin/main) #6050 (closed; other remote-mode gaps).Dedupe words:
turso remote detectManagedDrift empty·artifact boot migration gate remote turso·remote drift dummy knex memoryGenerated by Claude Code