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
Converging driver-turso's two transports onto one physical column type for Field.json — and the measured reason VALUE_ROUNDTRIP cannot adjudicate it #12738
While pinning the declared Field.json column-type asymmetry for #12586 (local json, remote TEXT), the pin's ablation performed a convergence — RemoteTransport.mapFieldTypeToSQL's JSON arm changed from TEXT to json, so both transports declare the same physical column — and ran the named instrument against it.
Result, measured on driver-turso at commit db8db7c7:
⇒ The VALUE_ROUNDTRIP case-set cannot distinguish a converged driver from today's driver. Every value in the shared table round-trips faithfully either way. The only thing that moved was the new asymmetry pin, which is measuring the declaration and the storage class rather than the round trip.
Why that is a reason to card it, not a reason to do it
The charter on #12586 deferred convergence because the question "why did remote choose TEXT?" is un-measured. This result does not answer that question, and it should not be read as "convergence is safe":
Converging the other way (local emits TEXT) is not exercised by anything here and would change what knex declares for every SqlDriver dialect, not just SQLite.
Either direction changes what new columns are physically declared as on existing deployments, which is a migration question no test in the tree asks.
So the useful content of this card is the negative result: whoever takes convergence on must bring an instrument other than VALUE_ROUNDTRIP, because that one is green on both sides of the decision.
Why a separate card
Disposition 1 was recorded in the triage comment on #12586, and that card is being closed by the PR that lands the declaration and the pin. Without a card of its own the convergence option has no home once #12586 closes. #12586 is not addressed by this card and this card does not supersede it; #11535 tracks the class and is already closed.
Where the pin is
packages/drivers/driver-turso/src/turso-json-column-type-asymmetry.test.ts. Its header carries the instruction this card is the other half of: when convergence is genuinely taken on, delete or invert that pin as part of the change — never edit its expectations to match new output.
Filed unassigned by the os-dev seat that implemented #12586, recording only — not claimed.
The measurement
While pinning the declared
Field.jsoncolumn-type asymmetry for #12586 (localjson, remoteTEXT), the pin's ablation performed a convergence —RemoteTransport.mapFieldTypeToSQL's JSON arm changed fromTEXTtojson, so both transports declare the same physical column — and ran the named instrument against it.Result, measured on
driver-tursoat commitdb8db7c7:⇒ The
VALUE_ROUNDTRIPcase-set cannot distinguish a converged driver from today's driver. Every value in the shared table round-trips faithfully either way. The only thing that moved was the new asymmetry pin, which is measuring the declaration and the storage class rather than the round trip.Why that is a reason to card it, not a reason to do it
The charter on #12586 deferred convergence because the question "why did remote choose
TEXT?" is un-measured. This result does not answer that question, and it should not be read as "convergence is safe":json) gives the remote transport NUMERIC affinity it does not have today. Measured: with the mutation in place, a bare'0123'written into the remote column by raw SQL comes back as the integer123; today it comes back as the string'0123'. That is the remote half acquiring the exact exposure [finding] driver-sql's SQLite json codec is not round-trip faithful for a string whose content is valid JSON — '123' reads back as a number, and Postgres does not agree #12380 had to defeat on the local half — plausibly the wrong direction.TEXT) is not exercised by anything here and would change what knex declares for everySqlDriverdialect, not just SQLite.So the useful content of this card is the negative result: whoever takes convergence on must bring an instrument other than
VALUE_ROUNDTRIP, because that one is green on both sides of the decision.Why a separate card
Disposition 1 was recorded in the triage comment on #12586, and that card is being closed by the PR that lands the declaration and the pin. Without a card of its own the convergence option has no home once #12586 closes. #12586 is not addressed by this card and this card does not supersede it; #11535 tracks the class and is already closed.
Where the pin is
packages/drivers/driver-turso/src/turso-json-column-type-asymmetry.test.ts. Its header carries the instruction this card is the other half of: when convergence is genuinely taken on, delete or invert that pin as part of the change — never edit its expectations to match new output.Filed unassigned by the
os-devseat that implemented #12586, recording only — not claimed.Generated by Claude Code
Generated by Claude Code