Skip to content

driver-turso remote: generate auto_number values on the RemoteTransport — the #6944 appetite door now has measured demand (a hosted HotCRM environment cannot create an account: 501) #21113

Description

@objectstack-fleet

Category ① — a product defect with a named landing spot; reach measured on a public door.
Reader: the domain:engine lane (drivers), which dispatches it. Filed by the repo:cloud seat (repo:cloud#1, session session_01Wxo1xhh2bU66T73q23jzE4). The objectstack triage seat (#6015) is vacant, so this seat applied the routing labels as a stand-in, and says so on #6015. ⛔ Not a claim.

What a customer hits

objectstack-ai/cloud#2531 (p1) records it from the 2026-10-01 pre-release staging check (cloud main 97784232, HotCRM 3.1.0 installed into a fresh environment):

  • POST /api/v1/data/crm_account {name} answers 501 {"code":"NOT_IMPLEMENTED"}. A hosted tenant cannot create a HotCRM account through the UI or the API.
  • The SeedLoader log reads: Object "crm_account" declares auto_number field(s) [account_number] left empty for this create, and the Turso REMOTE transport does not generate record numbers … remote writes go through RemoteTransport, which builds its own INSERT and never enters SqlDriver.fillAutoNumberFields.
  • The sample data then lands only in leads. Accounts, contacts and opportunities are all 0, because contacts need an account.

Every hosted tenant database is on the remote transport. So any object that declares an auto_number field cannot get a new record on the hosted product. This is not a regression: production's pin already carries the refusal (objectstack#7089).

Why this is not re-litigating #6944

#6944 was triaged on 2026-08-09 to disposition B, explicit refusal (PR #7089). It explicitly left A, "implement autonumber on remote", behind the appetite door "for want of measured demand". Its seat also recorded that supports.autonumber stays knowingly true on the remote face until A ships, "that bit flips with the implementation, not before it". The demand is now measured: a published app (HotCRM's crm_account.account_number) on the hosted product, in a release check. ⇒ The door's own condition is met. The base principle applies: a declared capability the runtime does not honour is an implementation gap, closed by implementing it, not by narrowing on the consumer side.

Where (anchored by symbol)

Acceptance (from cloud#2531, framework half)

  1. On the remote transport, a create that leaves an auto_number field empty gets a generated value with the same format and sequence semantics as SqlDriver.
  2. Numbers stay unique and gap-tolerant-monotonic under two concurrent writers in different processes: the hosted runtime runs several containers against one tenant database. Generation therefore has to be atomic in the database, ⛔ never an in-process counter. TursoDriver remote 面根本不生成自增号:RemoteTransport.create 自建 INSERT,auto_number 只是个 TEXT 列 #6944's discussion names the engine in-memory fallback as the worst path.
  3. supports.autonumber on the remote face stays true and becomes true. The fix(driver-turso): refuse auto_number writes on the remote transport (#6944) #7089 refusal test is converted to a generation test, not deleted.

The cloud side (pin move, then HotCRM sample data and account create on a hosted environment) stays on objectstack-ai/cloud#2531, Blocked-by: this card.

Dedup


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    priority:p1High: required for production / M2
    area:recordsBusiness objects, records, the views that show data, usable forms, search
    and removed on Oct 1, 2026
  2. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 (queue-jump by the maintainer's order in seat 2's chat: 「21113 插队 p1 优先」)
    Session: session_01Ujdtvqs7ree7WyQmEDwEnG
    Account: os-litant (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-21113-turso-remote-autonumber
    Worktree: objectstack-issue-21113
    Domain: domain:engine
    Seat: domain:engine#2
    File surface: the card body's Where and Acceptance (disposition A of #6944, behind its appetite door, now opened by measured demand: cloud#2531).

    • packages/drivers/driver-turso/src/remote-transport.ts: the create, bulkCreate and upsert legs issue auto_number values for an empty slot.
    • packages/drivers/driver-turso/src/turso-driver.ts: the refusal PR #7089 added becomes generation, and the upsert leg's post-write report (#7099) is re-read.
    • packages/drivers/driver-sql/src/sql-driver.ts: only to share, not copy, the format and sequence semantics (resolveAutonumberFormat, the _objectstack_sequences key shape and its bootstrap from the data-table MAX). This means its sequence region near :7528–:8030 at 53ed3d109, ⛔ nothing else in the file.
    • Tests in driver-turso: the fix(driver-turso): refuse auto_number writes on the remote transport (#6944) #7089 refusal test is converted to a generation test, ⛔ not deleted, plus a cross-writer concurrency pin.
    • .changeset/21113-*.md.

    Stop on breach and explain in the report.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 21113,
      "status": "done",
      "branch": "claude/issue-21113-turso-remote-autonumber",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/21160",
      "head_sha": "2c9d2985a067984cfb97997d73757e9f38835315",
      "session": "session_01Ujdtvqs7ree7WyQmEDwEnG",
      "premise_still_valid": true,
      "summary": "Premise held on origin/main 99398542b: the remote face refused every empty auto_number slot (the #7089 suite's 9 refusal pins went red the moment generation landed, through 'expected the remote face to refuse, but it resolved'). Disposition A executed: TursoDriver.getNextSequenceValue routes by transport; the remote face moves the shared _objectstack_sequences counter in one atomic statement (warm: UPDATE ... RETURNING last_value; cold: scan the data table's MAX by the shared reading, then INSERT ... ON CONFLICT (key_hash) DO UPDATE SET last_value = last_value + 1 RETURNING), bootstraps and re-seeds (#5495) through SqlDriver members lifted into the sequence region (resolveSequenceTenantId, defineSequencesTable compiled to text by the connection-less Knex, maxAutonumberCounter, escapeLikePrefix, sequencesTableName, autoNumberCollisionRetries), and fills the slots by calling the inherited fillAutoNumberFields before the transport builds its INSERT; create, bulkCreate (now per row through the driver's own create, which is what RemoteTransport.bulkCreate always was underneath) and upsert all generate, upsert naming the autonumber columns insert-only to the transport so a merge keeps its number (#7011) and the #7099 leg gets one. A pre-key_hash sequences table is refused DATABASE_ERROR/500 with the remedy (the remote face has no Knex connection to migrate it and a raw-SQL rewrite would be a second copy); supports.autonumber stays true and is now honoured. H2 falsified on one point and reported: the seed is not folded into the statement as a SQL MAX because the bootstrap reading strips a declared suffix (#6468) and a dialect expression would be the second copy H3 forbids; no Hrana batch needed. H6 holds: Clause-②: yes (widening); changeset driver-turso minor + driver-sql patch. Merged origin/main twice (last 1bd14c984 at 40dddd069); 14 files changed, 1592 insertions(+), 840 deletions(-) vs the merge base, 14 paths. One incident: turbo 2.11.5 (merged from main) rewrote AGENTS.md during a build and a blanket git add carried it into 20a25d847 (pushed); restored to the merge-base blob e9e211fc9 in 78fea1334, AGENTS.md is absent from the PR diff, staging has been by explicit path since, and the PM's heads-up names #21146 / PR #21151 as the fix.",
      "tests": "Head 2c9d2985a, every run under scripts/pm/os-verify-lock.sh. Build closure `pnpm --filter '@objectstack/driver-turso^...' build` exit 0 (Tasks 21 successful on the final rebuild). Typecheck: driver-sql exit 0, driver-turso exit 0. driver-turso `vitest run`: `Test Files 82 passed (82)`, `Tests 2218 passed | 33 skipped (2251)`. driver-sql `vitest run` in two halves of 108 files on 52ab7ad76 (the second merge touched neither driver package nor the lockfile): `103 passed | 5 skipped`, `1389 passed | 100 skipped`; `102 passed | 6 skipped`, `1914 passed | 88 skipped`; its nine autonumber-named suites again on the final tree: `66 passed | 2 skipped`. Converted suite turso-remote-autonumber-generation.test.ts 27 cases (generation on every leg incl. the #7099 leg; caller-supplied kept; merge keeps CASE-00042 and the next create is 00044; two-face block on ONE file with a local Knex face and a remote native-libsql face: 1,2,3,4 on one key_hash row equal to the local face's sequenceKeyHash, per-tenant buckets, #6468 suffix seed read as 5 not 52026, the {field} refusal is the same sentence on both faces and writes nothing; #5495 re-seed: CASE-00031 after rows 2..30 land by bypass, batch 11/12; the caller's own 409 untouched; legacy shape DATABASE_ERROR/500 twice, nothing written; local and replica still issue; RemoteTransport.prototype has no autonumber member, create.length 2, supports.autonumber true). Resync and batch-resync REMOTE pins rewritten: surface probe verbatim + generation + re-seed. Cross-process pin turso-remote-autonumber-concurrency.test.ts: two tsx child processes, each its own @libsql/client native file: connection and remote-mode TursoDriver, file barrier, 2 x 200 creates per round: 400 distinct, exactly 1..400, strictly increasing per writer, zero failed writes, table and counter row agree (hard pins every round); overlap evidence (at least two writer changes in the global order) ends the loop, three rounds without it skip with a NOT MEASURED note; final-tree runs 3/3 green standalone measuring 31, 21, 23 writer changes, 9 inside the full-package run; one earlier loaded run (another seat's full driver-turso run on the box) measured 1 change, which is why rounds exist. Said plainly: no sqld in this container; measured on two processes over libSQL's engine under its write lock, not an HTTP server. Ablations (scripts/ablation-replace.mjs, anchor hit 1 to 0, blob hash before/after, restore proven blob == HEAD and git diff HEAD empty; trap-guarded scripts): (1) merge-set exclusion dropped: predicted exactly the two #7011 merge pins red; measured `2 failed | 25 passed`, `expected 'CASE-00043' to be 'CASE-00042'` and `'CASE-00099'`. (2) warm path made read-then-write: predicted distinct count below N; measured direction REVERSED and kept: generation suite stayed green (27 passed, the stub serialises) and the concurrency pin went red on its no-failed-write assertion with `SQLITE_CONSTRAINT: UNIQUE constraint failed: index 'uniq_crm_case_organization_id_case_number'` (2 of 3 runs with no gap, 3 of 3 with a 1 ms gap) because the unique index refuses the duplicated number before duplicate rows appear; recorded in the pin's docblock. (3) shared bootstrap reading zeroed in driver-sql (dist): rebuilt, ablation-dist-preflight marker present in 2 built files exit 0; predicted bootstrap/re-seed pins red on both faces; measured `10 failed | 25 passed` (generation 5, resync LOCAL+REMOTE, batch-resync LOCAL x2 + REMOTE); restore rebuilt, preflight --absent exit 0; a first attempt was a null operation (the tool refused a replacement that restated the anchor; the preflight reported the marker absent and that green is void) and was redone. Gates on the final tree: dispatch-gates --commands --repo objectstack-ai/objectstack at 2c9d2985a derives 73; 72 exit 0 (incl. driver-conformance identical before/after: 50 covered, 0 debt, 0 exempt, no autonumber cell; query-options-erasure holds after retyping one as-any find() query the first head added; lean-entry-closure measured after building objectql; type-check-debt 399.5 s none above record; pm-skill-ratchet 0 with AGENTS.md restored); check:dts-closure exit 1 on its first final-tree run naming plugin-email and plugin-security (outside this diff and its closure, dist mid-rewrite by concurrent turbo activity), 0 after a forced rebuild of the two (71 packages, 167/167 declarations); NOT MEASURED 1: check:dual-build-cjs-loads exit 3 PREREQUISITE NOT MET (78 packages without dist locally). `dispatch-gates --ran`: 73 derived, 72 run, 1 NOT-MEASURED claimed, 0 UNRUN, exit 0; seven families derived only while the turbo block sat in AGENTS.md were run anyway, all 0. pnpm lint narrowed as a measurement: population = the lint script's eslint . --no-inline-config under one eslint.config.mjs; --format json over the 9 changed source files: 0 errors 0 warnings; invariance: no type-aware linting for any file, so no untouched file's verdict moves. check:nul-bytes 0 before the first push. Not run locally and declared to CI: the artifact-roster, wide-population and path-scheduled CI families the derivation lists.",
      "mcp_calls": "0 — no MCP tool of any kind. Reads: the public issue-page payload tier (curl) for #21113, #6944, #7099, #19772, PR #7089, #19787; one `gh api` GET of PR 21160 after creation. objectstack-ai/cloud#2531 was not readable from this session (gh: repository not enabled, HTTP 403; with-fleet --read refused a command on the relay route) and is used only as the card quotes it.",
      "api_writes": "3 REST writes, all through the fleet-write relay (`POST /repos/objectstack-ai/objectstack/dispatches`, executed by the relay run as objectstack-fleet[bot]): (1) pr_create → POST /repos/objectstack-ai/objectstack/pulls, draft forced → #21160, run 36851919250, body read back 16489 bytes identical; (2) label-write assign → POST /repos/objectstack-ai/objectstack/issues/21160/assignees os-litant, run 36851984589, read back MATCHES (the labeler's documentation/size-xl/dependencies/tests/tooling were on the PR already and were preserved); (3) this report → POST /repos/objectstack-ai/objectstack/issues/21113/comments via post-stamped.mjs. No label writes beyond the assign (the dispatch named none; a real changeset is written so skip-changeset does not apply), no PATCH, no issue creation. git pushes to the branch: 6 (empty-branch probe, feat, docs+changeset, retype+merge, AGENTS.md restore, rounds+merge).",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: a · reach: public door, create on a local-SQLite datasource (`POST /api/v1/data/OBJECT`), named failing probe only, no end-to-end run · SqlDriver.scanMaxNumericTail escapes backslash, `%` and `_` with a backslash (now `escapeLikePrefix`) and builds `where field like ?` through Knex, which emits NO `ESCAPE` clause on the sqlite and pg dialects (measured: the compiled `like ?` with binding `SO\\_%`); SQLite's LIKE has no escape character unless declared, so on the local faces a format whose rendered prefix contains `_` or `%` matches nothing (measured on better-sqlite3: pattern `SO\\_%` without ESCAPE returns [] against a stored `SO_0007`, with `ESCAPE '\\'` returns it) and the cold counter seeds from 0; the collision re-seed scans the same way and cannot move it. Postgres and MySQL default to backslash escaping, so only the SQLite faces (driver-sql on better-sqlite3, turso local/replica) are affected. The remote statement in this PR declares `ESCAPE '\\'`. Dedupe words: scanMaxNumericTail LIKE ESCAPE sqlite · autonumber prefix underscore seeds zero · escapeLikePrefix no ESCAPE clause · knex like no escape",
        "carrier: none (承接者:无) · noted, not filed · RemoteTransport.upsert with caller-supplied conflictKeys keeps `id` in its merge set (updateCols = columns minus mergeKeys, and toUpsert.id is always set), i.e. `\"id\" = excluded.\"id\"` — the #8622 re-keying the local face excluded ('id is insert-only'). Read from the code, not executed. Seam: spec:IDataDriver.upsert → runtime:RemoteTransport.upsert (remote-transport.ts, merge set) | renderer: none. Dedupe words: remote upsert conflictKeys id excluded re-key · 8622 remote face",
        "carrier: none (承接者:无) · noted, not filed · RemoteTransport.bulkCreate is a per-row loop (one INSERT and one read-back per row), never one statement, so a remote batch was never all-or-nothing while SqlDriver.bulkCreate is one statement; the old turso-driver comment claiming 'all-or-nothing on this transport too' was false and is corrected in this PR. Observation of a face divergence, no contract text found promising batch atomicity. Dedupe words: RemoteTransport bulkCreate per-row loop partial batch · remote batch not all-or-nothing",
        "already tracked (#21146 / PR #21151 per the PM): turbo 2.11.5 from the merged dependabot bump appends a turborepo-agent-rules block to AGENTS.md on agent-detected invocations; it rewrote this worktree's AGENTS.md twice (objectql build, closure rebuild) and reddened check:pm-skill-ratchet (3 lines over 120 bytes, 1119 lines over the 1116 ceiling) until restored. Not filed again.",
        "noted, not filed · check:dts-closure read plugin-email and plugin-security as missing dist/index.d.ts on one run while another process in the same tree was rebuilding (their dist listing seconds later showed the files); a forced rebuild and rerun exit 0. The #15042 shape the gate's own text names; no capture taken. Dedupe words: dts-closure transient missing d.ts concurrent build"
      ]
    }
  4. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    Patch round 1 on PR #21160 — the seat's decision on review FAIL 5930100091

    domain:engine#2 (seat post #20966) · session_01Ujdtvqs7ree7WyQmEDwEnG · 2026-10-01T11:10Z. Same claim (5927179360), same branch.


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 21113,
      "status": "done",
      "round": "patch round 1 on PR #21160, review 5930100091 (FAIL on ② Semver only)",
      "branch": "claude/issue-21113-turso-remote-autonumber",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/21160",
      "head_sha": "5d09309a65a19d50631d0a349e0e002b1129d6b8",
      "session": "session_01Ujdtvqs7ree7WyQmEDwEnG",
      "premise_still_valid": true,
      "summary": "Blocking item closed on branch 1 of the seat decision, after measuring its premise: the root `type` re-export of `AutoNumberReservation` is dropped from `packages/drivers/driver-sql/src/index.ts` (now byte-identical to origin/main), and the two re-seed overrides in `turso-driver.ts` take their parameter types through `Parameters` indexed over `SqlDriver`'s protected members (`autoNumberValueExists`'s second parameter, `resyncSequenceToDataMax`'s first), the spelling the `autoNumberValueExists` override's first parameter already used. The premise — that the type is reachable from the subclass without the export — measured true: `driver-sql` typecheck exit 0 and `driver-turso` typecheck exit 0 on the retyped overrides, no structural copy anywhere. So `@objectstack/driver-sql` stays `patch` (no export added, six `protected` members, no behaviour change), and the changeset sentence that named the export now reads 'No export is added and no behaviour changes on any dialect'. Branch 2 (keep the export, bump to minor) was not taken. `origin/main` was merged once more (fde553c50, 10 commits, clean; it also lands the `agentGuidance: false` opt-out #21151, so turbo no longer rewrites AGENTS.md — AGENTS.md blob e9e211fc9 equals origin/main's and is absent from the diff; staged by name throughout). Finding (b) measured as asked: it reproduces on the remote face (details in out_of_scope_findings), no fix in this PR. Pushed fast-forward 2c9d2985a → 5d09309a6; PR diff is now 13 paths; PR body rewritten through post-stamped with --ack-through=5930100091 and read back identical. The worktree is removed after this comment is posted.",
      "tests": "Head 5d09309a6, fresh worktree on the branch (round 0's was removed), merged origin/main fde553c50 at 605a1d2b5; every run under scripts/pm/os-verify-lock.sh. Closure build `pnpm --filter '@objectstack/driver-turso^...' build` exit 0 (fresh tree, no dist before it; AGENTS.md untouched by turbo after #21151). `driver-sql` typecheck exit 0; `driver-turso` typecheck exit 0 — these two are the premise measurement for branch 1. `driver-turso` `vitest run` on the merged tree with the throwaway #8622 probe present: `Test Files 83 passed (83)`, `Tests 2219 passed | 33 skipped (2252)` (82 / 2218 without the probe, which was deleted before the commit); the concurrency pin inside that run measured `400 writes · 400 distinct · 5 writer change(s)`. `driver-sql` autonumber-named suites: `9 passed (9)` files, `66 passed | 2 skipped (68)`. Gates asked for, on the final tree (exit codes): `node scripts/check-adr-0087-registration.mjs --base origin/main` 0 · `node scripts/check-empty-changeset.mjs --base origin/main` 0 · `node scripts/check-changeset-no-major.mjs --base origin/main` 0 · `node scripts/check-changeset-fixed.mjs` 0 · `pnpm check:changeset-gate-self-tests` 0 · `pnpm check:nul-bytes` 0 · `pnpm check:published-files` 0. Not re-run this round (unchanged by it: no test file, no runtime path moved): the round-0 gate set (73 derived, 72 run, 1 NOT-MEASURED `check:dual-build-cjs-loads`) and `driver-sql`'s full suite; CI's Test Core shards carry them on the new head.",
      "mcp_calls": "0 — no MCP tool. Reads: `gh api` GET of comment 5930100091 (the review, whole), of PR 21160's comment list (newest id) and state, of the PR body after the write, and of the report comment after posting.",
      "api_writes": "2 REST writes this round, both through the fleet-write relay (`POST /repos/objectstack-ai/objectstack/dispatches`, executed by the relay run as objectstack-fleet[bot]): (1) post-stamped --body=21160 --ack-through=5930100091 → PATCH /repos/objectstack-ai/objectstack/issues/21160 (issue_patch), run 36854519082, 17984 bytes sent and stored identical, 2 comments newer than the body acknowledged through 5930100091; (2) this round-1 os-dev-report → POST /repos/objectstack-ai/objectstack/issues/21113/comments via post-stamped. No label, assignee or PR-state writes. git pushes: 1 (fast-forward 2c9d2985a → 5d09309a6, carrying the merge 605a1d2b5 and the fix 5d09309a6).",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: b · reach: measured on the driver door of the remote face (throwaway probe, not committed; `TursoDriver.upsert(object, data, ['email'])` on the libsql-sqlite stub harness), the public producers that hand `conflictKeys` down were not enumerated this round · REPRODUCES: an object with `email: { unique: 'global' }`; rows `row-a` (a@example.com) and `row-b` (b@example.com) created; `upsert({ id: 'row-NEW', email: 'a@example.com', title: 'edited' }, ['email'])` on the remote face answered `merged.id = \"row-NEW\"` and the STORED row read `{ id: 'row-NEW', email: 'a@example.com', title: 'edited' }` — the primary key of an existing row replaced by the payload's; and with NO payload id, `upsert({ email: 'b@example.com', title: 'edited too' }, ['email'])` re-keyed the stored row to the freshly minted nanoid `VC0JOyn9ADHMdv3Y` (one row, new primary key — the #8622 shape verbatim). LOCAL control, same calls: the stored row keeps `row-a`. Contract text: `SqlDriver.upsert`, '[#8622] `id` is insert-only for the SAME argument at its strongest … the moment `conflictKeys` names a business key the merged row's identity is silently replaced … dangles every one of them with no error on any dialect'. Seam: spec:IDataDriver.upsert → runtime:RemoteTransport.upsert (remote-transport.ts: the merge set is every column that is neither a merge key nor an insert-only column, and the driver names only the autonumber columns insert-only, while the local face's `insertOnlyUpsertColumns` also names `id` and `created_at`) | renderer: none. Dedupe words: remote upsert conflictKeys id excluded re-key · 8622 remote face · RemoteTransport upsert merge set id · insertOnlyUpsertColumns remote",
        "noted, not filed · carrier: the seat's card for the finding above (承接者: that card) · observation from the same probe's LOCAL control: `SqlDriver.upsert` keyed on `['email']` with payload `id: 'row-NEW'` keeps the stored id `row-a` (correct) but the RETURNED row carries `id: 'row-NEW'` — the answer names an id that no stored row has. Read off one probe run on better-sqlite3; not measured on PG/MySQL. Dedupe words: local upsert returned id payload not stored · conflictKeys merge return row id",
        "class: a (round 0, escalated by the review) · unchanged · `scanMaxNumericTail` on the local SQLite faces compiles `like ?` without `ESCAPE`, so a rendered prefix containing `_` or `%` bootstraps from 0; the remote statement in this PR declares an explicit backslash ESCAPE. Dedupe words: scanMaxNumericTail LIKE ESCAPE sqlite · autonumber prefix underscore seeds zero"
      ]
    }
  6. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #21160 @ 5d09309a (the remote transport issues auto_number values from the shared persistent sequence; #6944's disposition A) · Fixes #21113

    domain:engine#2 (seat post #20966) · session_01Ujdtvqs7ree7WyQmEDwEnG · 2026-10-01T11:42Z. Judged against GitHub, not the reports (5929937746, round 0; 5930264607, round 1). p1, queue-jumped by the maintainer's order (claim 5927179360).


    Generated by Claude Code

  7. objectstack-fleet commented on Oct 1, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed — PR #21160 as e35c40a52 · #21113 closed (completed): the hosted remote face issues auto_number values

    domain:engine#2 (seat post #20966) · session_01Ujdtvqs7ree7WyQmEDwEnG · 2026-10-01T13:24Z. p1, queue-jumped by the maintainer's order.


    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:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:enginepriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions