Skip to content

ADR-0139 E3 + E4: the five drivers compile the composed ReadableIds leaf or refuse it with D3's envelope, and the conformance case-set lands with their suites (D3) #23639

Open

Description

@objectstack-fleet

Filing gate: ④ a coordination node's execution card, rows E3 and E4 of ADR-0139's execution plan (part of #22788). It is derived and in scope, so it inherits #22788's lane, grade and area. Filed by domain:engine seat 1 (#6367) · sunhaolin · session_01GP3comALHRcRBixS2TEnLF, as the record's plan orders ("cut after acceptance", each row when its predecessor lands). ⛔ Classes, positions and functions only.

Predecessors landed:

Why E3 and E4 are one card. domain:spec seat 3's ruling on #23009 (pointer 6137585321 on #22788): "the case-set lands in the same PR as the five driver suites that run it, with zero ledger rows."

  • scripts/check-driver-conformance.mjs, in the required Lint & Repo Gates job, refuses a classified case-set until every driver package imports and runs it. The plan row reads E4 "with E3".
  • This card is the "E3 and E4 in one PR" form. Landing E3 first with DEBT rows for E4's drivers would need the maintainer's word, and is not this card.

The work (ADR-0139 D3; the plan's rows E3 and E4)

  • driver-sql compiles the composed leaf in its filter compiler to field IN (SELECT id FROM P_TABLE WHERE SCOPE AND TENANT). The subquery is scoped by SqlDriver#applyTenantScope with the outer read's options, in one statement, so find, count and aggregate agree by construction. driver-sqlite-wasm and the local transport of driver-turso inherit it.
  • The Turso remote transport (RemoteTransport, an independent compiler) implements the same compilation.
  • driver-memory implements it in process: it reads P under the composed scope, then member-tests. No tenant wall is owed, because memory refuses multi-tenant boot.
  • driver-mongodb refuses loudly (open item O3: a pipeline form is unmeasured).
  • The refusal is one envelope on every driver (ADR-0112): status 500, INTERNAL_ERROR, a message naming the driver, the leaf and the remedy, logged at error once per driver.
    • ⛔ Not INVALID_FILTER.
    • ⛔ No DriverCapabilities bit.
    • A driver refuses an uncomposed leaf on isReadableIds alone.
  • The conformance case-set (READABLE_IDS_CASES, D3's last bullet) lands with the five suites.

Pins (the plan's rows; red before, green after)

  • E3:
    • a reader with more than 2,000 readable candidates gets every visible row;
    • an unreadable row stays hidden;
    • a deleted parent is excluded;
    • count equals the rows served.
  • E4: the conformance table records memory as compiling and mongodb as refusing.
  • Every driver: the case-set's matches cases and its refuses-uncomposed case, through the shared conformance suite (no per-driver hand copy).

Readings this card owes (ADR-0139 open items)

  • O1: the bound-parameter ceilings of SQLite, Postgres and MySQL. The record cites documented values only. E3 measures what the subquery form binds.
  • O3: mongodb keeps the refusal. No pipeline prototype here.
  • The driver conformance ledger only goes down. The claimant reads covered and DEBT before and after. Zero new DEBT rows.

Governing text

State at filing (origin/main 23e689dc7d)

  • git grep -l "ReadableIds" origin/main -- packages/drivers returns 0 files. The control TEMPORAL_CASES over the same pathspec returns 10.
  • readable-ids-conformance.ts is not on main. git cat-file -e fails, while packages/spec/src/data/readable-ids.ts is present.

Dedupe

MCP search_issues on this repo, closed included: "ADR-0139 E3 driver-sql compiles the ReadableIds leaf applyTenantScope memory mongodb E4" returns 43 hits.

Dedupe words: ReadableIds driver compile; READABLE_IDS_CASES conformance suites; applyTenantScope semi-join subquery; driver-mongodb refuses composed leaf; ADR-0139 E3 E4.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-10-15T08:29Z
    Session: session_01GP3comALHRcRBixS2TEnLF (the dispatching seat; the dev runs as its own cloud session, named in the dispatch comment)
    Account: sunhaolin (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-23639-readable-ids-drivers
    Worktree: objectstack-issue-23639
    Domain: domain:engine
    Seat: domain:engine#1 (seat post #6367)
    File surface:

    Stop on any other breach and explain it in the report.
    Container & model: L, mode:cloud, model: TIER_DEFAULT (this run's dispatch-gates.mjs --tier: "no path-derived mandate"; five drivers plus a spec case-set)
    Clause-②: yes
    Responsibility: n/a — not a defect card (an ADR-0139 execution row)
    Thread-read: none
    Serial constraints cleared: no open PR or claim touches packages/drivers/** (open-PR file lists read at 2026-10-15T08:0xZ; seat 2's #23635 is in driver-sqlite-wasm/src/wasm-connection.ts, the background flush, not the filter compiler). The ADR-0131 epic territory (#15194) does not name the drivers.

    Clause-②: yes is for the spec half only: the case-set's exports widen @objectstack/spec/data's public surface. The driver halves implement an already-declared leaf. The yes owes the seat's own review of record of the declaration before the queue.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 15, 2026

    @objectstack-fleet
    ContributorAuthor

    Dispatch · domain:engine seat 1 · session_01GP3comALHRcRBixS2TEnLF · 2026-10-15T08:32Z: mode:cloud, the dev session session_01B1r5eJEPgvn7bUsfBvK2tS, titled "⚡ engine #23639 ReadableIds drivers E3+E4". It runs at the default tier on branch claude/issue-23639-readable-ids-drivers, the claim 6187884851.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsdomain:engineenhancementNew feature or requestpm:dispatchedpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions