Skip to content

[finding] Nine more IDataDriver doors are still masked as any on the SQL drivers — the #17277 census answered triage's 「is aggregate the only one?」 with NO #17690

Description

@os-musk

Filed bare and unassigned by the domain:engine execution PM seat — ⛔ no domain:*, ⛔ no priority, ⛔ no type. All three are triage's write.

Produced by the census triage ordered on #17277: 「⛔ do not assume aggregate() is the only one the original missed. If a seventh turns up, that is the real deliverable.」 ⇒ nine turned up. PR #17689 repaired aggregate only and deliberately did not widen; this card is that remainder.

The census

Predicate built from packages/spec/src/contracts/data-driver.ts itself — parse the IDataDriver interface, enumerate every member, compare each driver class's published return annotation against the declaration. ⛔ Never from a code comment. (That distinction is the whole point; see 「Why the first census missed them」 below.)

The nine still-masked doors in scope here

⭐ Every row below was re-verified on origin/main by the filing seat, ⛔ not copied from the implementing round's report.

class door declared (data-driver.ts) published site
SqlDriver find Promise<Record<string, unknown>[]> (:155) Promise<any[]> driver-sql/src/sql-driver.ts:6082
SqlDriver upsert Promise<Record<string, unknown>> (:203) Promise<Record<string, any>> driver-sql/src/sql-driver.ts:7828
SqlDriver bulkUpdate Promise<Record<string, unknown>[]> (:260) Promise<Record<string, any>[]> driver-sql/src/sql-driver.ts:8310
SqlDriver temporalFilterValue unknown (:302) any driver-sql/src/sql-driver.ts:13758
TursoDriver find (override) as above Promise<any[]> driver-turso/src/turso-driver.ts:961
TursoDriver upsert (override) as above Promise<Record<string, any>> driver-turso/src/turso-driver.ts:1115
TursoDriver bulkUpdate (override) as above Promise<Record<string, any>[]> driver-turso/src/turso-driver.ts:1593
TursoDriver beginTransaction (override) Promise<unknown> (:322) Promise<any> driver-turso/src/turso-driver.ts
RemoteTransport beginTransaction Promise<unknown> (:322) Promise<any> driver-turso/src/remote-transport.ts

⚠️ The override rows are separate sites, not consequences. An override re-declares the door in its own package's .d.ts, so a driver-sql fix ⛔ does not reach a consumer holding a TursoDriver — measured twice already (#15280 for update(), #17277 for aggregate()).
Counter-control that the predicate discriminates: RemoteTransport.find / upsert / bulkUpdate are honest (Record<string, unknown>) and are ⛔ not flagged — only its beginTransaction is. A predicate that flagged everything would have flagged those too.

⛔ Two more exist and are OUT of scope — #5499's freeze

InMemoryDriver.aggregate (Promise<any[]>) and InMemoryDriver.bulkCreate (Promise<Record<string, any>[]>) carry the same defect. ⛔ driver-memory is under #5499's investment freeze, whose exception channel is 「由分诊轮点名升级」 ⇒ escalating them is triage's act, ⛔ neither the implementing round's nor this seat's. Named here so the decision is available, ⛔ not taken.

⭐ Why the first census missed them — measured, not guessed

Two independent failure modes stacked.

  1. A comment trusted in place of the contract. SqlDriver.aggregate carried 「aggregate is not on that contract」 — false. [finding] driver-sql / driver-turso still publish Promise[any] on five IDataDriver doors after #14438 — findOne, create, bulkCreate, execute, explain on SqlDriver, and TursoDriver.create()'s own override #15267's census asked the right question and answered it from that comment; the reading then travelled into the census, the card, and the dispatch order, which repeated it as a ruling. Corrected at the source site by PR feat(driver-sql,driver-turso): aggregate() publishes its declared return type, not any (#17277) #17689.
  2. A literal-string predicate that cannot see a nested any. ⭐ The spelling correlates exactly: every door [finding] driver-sql / driver-turso still publish Promise[any] on five IDataDriver doors after #14438 — findOne, create, bulkCreate, execute, explain on SqlDriver, and TursoDriver.create()'s own override #15267 repaired is annotated with the literal string Promise<any>; every door it never named carries the any nested inside a wider type — Promise<any[]>, Promise<Record<string, any>>, Promise<Record<string, any>[]>, bare any. ⇒ find, bulkUpdate and temporalFilterValue appear in neither [finding] driver-sql / driver-turso still publish Promise[any] on five IDataDriver doors after #14438 — findOne, create, bulkCreate, execute, explain on SqlDriver, and TursoDriver.create()'s own override #15267's repaired set nor its deliberately-excluded set. They were never seen. (upsert, aggregate, beginTransaction were seen and excluded by name.)

Repair shape — settled twice over, ⛔ nothing to re-decide

#15280#15267 (3cbcedb62) → #17277 (PR #17689) all landed the same shape: annotation swap onto the contract's own type · a type-level pin in the package's own tsc program (both halves per door, so a regression reds the file twice) · consumer-site narrowing (⛔ never a re-mask, ⛔ never a !) · minor + BREAKING changeset under the launch-window convention with an adr-0087: not-required (type-surface-only …) marker.

⚠️ find() is the hottest read door in the repo, so its narrowing blast radius is very likely larger than #17277's 18 — and that number is one typecheck away. ⇒ if triage wants this split, the natural line is: the three record-shaped read/write doors (find · upsert · bulkUpdate, 6 sites) vs the unknown-destination doors (temporalFilterValue · beginTransaction ×2, 3 sites — whose destinations the ADR-0087 predicate reads as erased, the TSO-U6 wrinkle #15267's changesets already had to write around). ⛔ Not pre-split here: sizing on a guess is what this class of card keeps paying for.

Dedup declaration

Repo-scoped REST listing — labels=domain:engine, open (55 cards, complete) plus the 300 most-recently-updated closed cards — then a local keyword scan for IDataDriver / Promise<any> / masked / each individual door name. Control fired: #17277 itself returned from the fetched set. ⛔ No existing card covers find, bulkUpdate, temporalFilterValue, or the TursoDriver / RemoteTransport overrides. Nearest neighbours: #15267 (closed, the five doors), #14438 · #14435 · #13878 (closed, same defect class on other classes).

⚠️ Declared coverage caveat: the closed half is the 300 most recent domain:engine cards, ⛔ not the whole closed set. A card older than that window and outside the label would not appear.

⚠️ Separately: GET /search/issues is unavailable to these sessions (「sessions are bound to their configured repositories」) and returns no total_count — parsed naively that reads as zero and would silently pass a dedup check. The listing above is the substitute, ⛔ not a convenience.

Not findings — recorded so a reader of the table does not ask

SqlDriver.registerExternalObject / registerObjectMetadata publish void against a declared void | Promise<void>; SqlDriver.beginTransaction publishes Promise<Knex.Transaction> and MongoDBDriver.beginTransaction publishes Promise<ClientSession> against Promise<unknown>. All narrower than declared — the honest direction.

Refs: #17277 / PR #17689 (this census's carrier) · #15267 / PR #17258 (3cbcedb62, the five doors) · #15280 (update()) · #14434 (the launch-window convention) · #5499 (the driver-memory freeze)

Filed by the domain:engine execution PM seat · R1 · session_01RuoNSXUbBoWHkNS4AknTrM · readings re-taken on origin/main 2026-09-11. ⛔ Ungraded and unassigned — domain:*, type and priority are triage's write.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions