Found while upgrading objectstack-ai/hotclm from @objectstack/* 17.3.0 to 17.4.0 (hotclm#35 / hotclm PR #37). Filed at the destination per that repo's AGENTS.md rule for platform gaps — report, never patch. Not triaged: no domain:*, no priority, no assignee.
Symptom
On a clean single-tenant SQLite dev database, every boot after the first logs, at ERROR level:
[sql-driver] DATABASE_ERROR ... SELECT "tenant_id" FROM "_objectstack_sequences" WHERE 1 = 0
- no such table: _objectstack_sequences
WHERE 1 = 0 is the shape of a column-existence probe — a query written to return no rows and answer only "does this column exist". The probe runs against a table that has not been created yet, the driver raises, and the raise is logged at error severity rather than being handled as the negative answer the probe was asking for.
Nothing downstream breaks: the boot completes, capabilities are not degraded, and no application data is touched.
Why it is worth a card even though nothing breaks
Consumers are told to read their boot log. objectstack-ai/hotclm's AGENTS.md says, verbatim:
A boot that logs warnings is not a passing boot. Read the startup banner. System started with degraded capabilities, no such table, or a plugin that failed to load each mean the app is running as something other than the product.
That rule now fires on a healthy boot. An app author following the documented discipline must either ignore an ERROR line — which trains them to ignore the next one, the one that matters — or chase a platform-internal probe they cannot fix. A probe's negative answer should not be indistinguishable from a real driver failure.
Version boundary
- 17.3.0 — line absent.
- 17.4.0 — line present.
Measured on the same application, same worktree, same clean .objectstack/data, both boots read at seeder quiescence rather than at the ready banner.
Reproduce
git clone https://github.com/objectstack-ai/hotclm && cd hotclm
pnpm install # resolves @objectstack/* 17.4.0
rm -rf .objectstack/data
pnpm demo # boot 1
pnpm demo # boot 2 — the ERROR line appears here
Expected
A column-existence probe against a table that does not exist yet answers "no" without a DATABASE_ERROR at error severity — either by checking table existence first, or by classifying no such table from a WHERE 1 = 0 probe as the negative result rather than a failure.
Related
Sibling finding from the same boot, different root cause, filed separately: the sys_oauth_resource bootstrap re-insert now surfacing as an ERROR.
Found while upgrading
objectstack-ai/hotclmfrom@objectstack/*17.3.0 to 17.4.0 (hotclm#35 / hotclm PR #37). Filed at the destination per that repo'sAGENTS.mdrule for platform gaps — report, never patch. Not triaged: nodomain:*, no priority, no assignee.Symptom
On a clean single-tenant SQLite dev database, every boot after the first logs, at ERROR level:
WHERE 1 = 0is the shape of a column-existence probe — a query written to return no rows and answer only "does this column exist". The probe runs against a table that has not been created yet, the driver raises, and the raise is logged at error severity rather than being handled as the negative answer the probe was asking for.Nothing downstream breaks: the boot completes, capabilities are not degraded, and no application data is touched.
Why it is worth a card even though nothing breaks
Consumers are told to read their boot log.
objectstack-ai/hotclm'sAGENTS.mdsays, verbatim:That rule now fires on a healthy boot. An app author following the documented discipline must either ignore an ERROR line — which trains them to ignore the next one, the one that matters — or chase a platform-internal probe they cannot fix. A probe's negative answer should not be indistinguishable from a real driver failure.
Version boundary
Measured on the same application, same worktree, same clean
.objectstack/data, both boots read at seeder quiescence rather than at the ready banner.Reproduce
Expected
A column-existence probe against a table that does not exist yet answers "no" without a DATABASE_ERROR at error severity — either by checking table existence first, or by classifying
no such tablefrom aWHERE 1 = 0probe as the negative result rather than a failure.Related
Sibling finding from the same boot, different root cause, filed separately: the
sys_oauth_resourcebootstrap re-insert now surfacing as an ERROR.