Blocked-by: #8926
What
packages/spec/src/migrations/entries/semantic/18.driver-sql-unresolvable-where-column-refused.ts — the entry #8790 / PR #8927 registered — carries this in its reason (last "Reach" paragraph):
Reach, stated rather than assumed: the refusal fires on the wordings the ladder has always recognised — SQLite (no such column: x) and Postgres (column "x" does not exist). MySQL spells it Unknown column 'x' in 'where clause', which neither arm matches, so on MySQL this condition still travels out as the raw dialect error; widening that predicate would also hand MySQL the #3821 recoveries it has never had, which is an accept-set change in the opposite direction and is filed separately.
That was true when registered. The moment #8926's PR merges (maintainer ruling on #8926, option A: full dialect parity on the shared predicate), it becomes a false statement in an upgrader-facing document: ledger entries are the data source for objectstack migrate meta, spec-changes.json and the generated upgrade guide, and a MySQL user reading "on MySQL this condition still travels out as the raw dialect error" would conclude the migration does not apply to them — exactly wrong after parity.
Why it was not amended in #8926's own PR
The implementing card's declared file surface is packages/drivers/driver-sql plus its refusal test only. Amending a spec migrations entry pulls in the spec artifact regeneration family (gen:spec-changes, gen:upgrade-guide, and their gates) — a different verification surface, so it is filed instead of ridden along (AGENTS.md Prime Directive #10).
Suggested fix
Append a dated addendum to the entry's reason (do not rewrite the historical paragraph): MySQL joined the same refusal and the #3821 recoveries via #8926 (ruled 2026-08-16), so the reach is now all three dialects. Then regenerate the ADR-0087 artifacts (pnpm --filter @objectstack/spec gen:spec-changes && … gen:upgrade-guide, or check:generated --fix after a build) and let check:spec-changes / check:upgrade-guide verify synchrony. The entry id and prescription are unchanged — this is a text amendment, not a new migration.
Generated by Claude Code
Blocked-by: #8926
What
packages/spec/src/migrations/entries/semantic/18.driver-sql-unresolvable-where-column-refused.ts— the entry #8790 / PR #8927 registered — carries this in itsreason(last "Reach" paragraph):That was true when registered. The moment #8926's PR merges (maintainer ruling on #8926, option A: full dialect parity on the shared predicate), it becomes a false statement in an upgrader-facing document: ledger entries are the data source for
objectstack migrate meta,spec-changes.jsonand the generated upgrade guide, and a MySQL user reading "on MySQL this condition still travels out as the raw dialect error" would conclude the migration does not apply to them — exactly wrong after parity.Why it was not amended in #8926's own PR
The implementing card's declared file surface is
packages/drivers/driver-sqlplus its refusal test only. Amending a spec migrations entry pulls in the spec artifact regeneration family (gen:spec-changes,gen:upgrade-guide, and their gates) — a different verification surface, so it is filed instead of ridden along (AGENTS.md Prime Directive #10).Suggested fix
Append a dated addendum to the entry's
reason(do not rewrite the historical paragraph): MySQL joined the same refusal and the #3821 recoveries via #8926 (ruled 2026-08-16), so the reach is now all three dialects. Then regenerate the ADR-0087 artifacts (pnpm --filter @objectstack/spec gen:spec-changes && … gen:upgrade-guide, orcheck:generated --fixafter a build) and letcheck:spec-changes/check:upgrade-guideverify synchrony. The entry id and prescription are unchanged — this is a text amendment, not a new migration.Generated by Claude Code