Filed unassigned by the domain:engine PM seat (session session_019yDEhPBC3tcGkW9bkce1HM) after two rounds on #9350. ⛔ Recording only — not claimed, not queued, ungraded. Backlinks: #9350, PR #10381.
Why this is a separate card and not part of #9350
Two rounds on #9350 established that a Error: Test timed out in 5000ms. in packages/drivers/driver-sql is not one phenomenon:
⚠️ Earlier in the same round I endorsed the argument against splitting: "splitting one mechanism's evidence across two issues is invisible to every gate." That argument was right and no longer applies — it is now measured to be two mechanisms, one of which is structurally incapable of being the other.
Measured
adr0120-three-posture-conformance.test.ts is SQLite-only: better-sqlite3, connection: { filename: ':memory:' } plus a mkdtemp file, and zero references to OS_TEST_POSTGRES_URL / OS_TEST_MYSQL_URL or to live-dialect-matrix.testkit.ts.
⇒ Contention on a shared conformance database cannot make an in-memory SQLite test time out.
Negative-case control, so the classification is a measurement rather than a reading: the same predicate applied to #9350's own file, sql-driver-datetime-mysql-storage.test.ts, returns LIVE (it read OS_TEST_MYSQL_URL directly). The predicate discriminates; it does not answer "not live" for everything.
The occurrence itself, from CI logs (run 32261173585, job 96094597183):
FAIL src/adr0120-three-posture-conformance.test.ts > … > a posture flip by itself emits ZERO drift ops (the transition smoke)
Error: Test timed out in 5000ms.
❯ src/adr0120-three-posture-conformance.test.ts:382:5
Test Files 1 failed | 105 passed (106)
Duration 48.50s (… import 72.06s, tests 62.44s …)
⭐ In that same run, #9350's own file was green at 7538ms — the file whose 12843ms run was once read as a hard stall. Same suite, same runner, one file green at 7.5s and another timing out at 5s.
The shape of the remaining question
The surviving hypothesis, and it is a hypothesis with a mechanism, not a finding — nobody has measured it:
A 2-core runner executing ~107 vitest files in parallel workers alongside two database service containers is a CPU/IO-starvation shape. That fits an in-memory SQLite test timing out, and it fits the measured 13× spread on one file (971 / 7538 / 12843 ms, with the 7538ms run fully green) better than database contention does.
⛔ Nobody has access to the runner from an agent seat, so this cannot be measured the way the database half was. Naming what would settle it is the useful part: runner CPU/IO under the real parallel load, versus a server-side wait.
Fences carried from #9350's rulings — all still binding
Priority context, stated plainly
Maintainer's standing input: 「目前也没有相关的真实用户」 / 「objectstack cloud 还没有正式上线,简化开发」. The customer-facing worry that started #9350 — an order-dependent os migrate plan — was excluded on evidence; no customer capability is at stake here. The cost is queue trust, which is real but bounded: four occurrences in three days, and none in the several days since.
⇒ This is filed so the second mechanism has a home and a reader, ⛔ not as a claim that it should be worked now. Grading is the triage seat's.
Filed unassigned by the
domain:enginePM seat (sessionsession_019yDEhPBC3tcGkW9bkce1HM) after two rounds on #9350. ⛔ Recording only — not claimed, not queued, ungraded. Backlinks: #9350, PR #10381.Why this is a separate card and not part of #9350
Two rounds on #9350 established that a
Error: Test timed out in 5000ms.inpackages/drivers/driver-sqlis not one phenomenon:adr0120-three-posture-conformance.test.tsshows the identical bare timeout and cannot be explained by it.Measured
adr0120-three-posture-conformance.test.tsis SQLite-only:better-sqlite3,connection: { filename: ':memory:' }plus amkdtempfile, and zero references toOS_TEST_POSTGRES_URL/OS_TEST_MYSQL_URLor tolive-dialect-matrix.testkit.ts.⇒ Contention on a shared conformance database cannot make an in-memory SQLite test time out.
Negative-case control, so the classification is a measurement rather than a reading: the same predicate applied to #9350's own file,
sql-driver-datetime-mysql-storage.test.ts, returns LIVE (it readOS_TEST_MYSQL_URLdirectly). The predicate discriminates; it does not answer "not live" for everything.The occurrence itself, from CI logs (run 32261173585, job 96094597183):
⭐ In that same run, #9350's own file was green at 7538ms — the file whose 12843ms run was once read as a hard stall. Same suite, same runner, one file green at 7.5s and another timing out at 5s.
The shape of the remaining question
The surviving hypothesis, and it is a hypothesis with a mechanism, not a finding — nobody has measured it:
⛔ Nobody has access to the runner from an agent seat, so this cannot be measured the way the database half was. Naming what would settle it is the useful part: runner CPU/IO under the real parallel load, versus a server-side wait.
Fences carried from #9350's rulings — all still binding
Priority context, stated plainly
Maintainer's standing input: 「目前也没有相关的真实用户」 / 「objectstack cloud 还没有正式上线,简化开发」. The customer-facing worry that started #9350 — an order-dependent
os migrate plan— was excluded on evidence; no customer capability is at stake here. The cost is queue trust, which is real but bounded: four occurrences in three days, and none in the several days since.⇒ This is filed so the second mechanism has a home and a reader, ⛔ not as a claim that it should be worked now. Grading is the triage seat's.