Skip to content

docs(spec): the unresolvable-column entry states MySQL's reach after #8926 — envelope and recoveries both (#9060) - #9136

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-9060-mysql-reach-addendum
Aug 16, 2026
Merged

docs(spec): the unresolvable-column entry states MySQL's reach after #8926 — envelope and recoveries both (#9060)#9136
os-zhuang merged 1 commit into
mainfrom
claude/issue-9060-mysql-reach-addendum

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes#9060

Text amendment to an already-registered ADR-0087 entry. The entry id, surface
and replacement prescription are unchanged and no accept/reject behaviour
moves — what changes is the reason, which is upgrader-facing documentation
(the data source for objectstack migrate meta, spec-changes.json and the
generated upgrade guide).

Premise verified on the merged tree first

The card claims the entry's "Reach, stated rather than assumed" paragraph became
false when #8926 merged. Verified against origin/main at 24206416a rather
than taken from the card:

So the triage re-pricing holds as written: #9061 delivered full parity, not
the envelope alone. Both halves are stated in the addendum.

What this PR does

Appends a dated addendum to the entry's reason. The historical paragraph is
kept verbatim as the state at registration — it is not rewritten — and the
addendum amends it, stating both halves of what one shared predicate did on
MySQL:

  1. The envelope — an unresolvable WHERE column refuses with the same
    INVALID_FILTER / 400 naming the column, instead of travelling out as the
    raw ER_BAD_FIELD_ERROR with the statement's bound literals inlined.
  2. The recoveries — MySQL also gained the fix(sharing): 共享规则新建页 — 自定义 widget 未国际化,且「接收方」永远无可选项 #3821 projection and ORDER-BY
    recoveries it never had, so those clause positions now return recovered rows
    where they used to throw.

Both arrive together because ER_BAD_FIELD_ERROR spells every clause position
with one sentence, so all three ride one arm of the predicate — cited to the
widened sweep above. The addendum also records what the ruling did not
change: a dotted filter key is still classified per dialect (Postgres raises
undefined_table, which neither arm matches), the axis #8371 owns.

registry.ts regenerated with gen:migration-registry — never hand-edited.

Measured: two of the four assumed artifacts do not move, and that is correct

The dispatch assumed the chain entry edit ⇒ gen:migration-registry
gen:spec-changesgen:upgrade-guide. Only the first link produces a diff
here. Both generators were run anyway and rewrote their files byte-identically:

  • PROTOCOL_VERSION is 17.0.0, so spec-changes.json folds the floor-10 to
    major-17 range (measured: the majors present in the committed manifest are
    11-17).
  • This entry is registered under major 18, so it is not projected into
    spec-changes.json or docs/protocol-upgrade-guide.md yet.

check:spec-changes and check:upgrade-guide both pass ("up to date"), which
is synchrony holding rather than a skipped step. Nothing to hand-fix; recorded
so the empty diff is not read as a missed regeneration.

Verification — union run at ad1f96e88 (the final commit)

Build closure first: pnpm --filter '@objectstack/spec^...' build matches no
projects (spec has no workspace deps), so pnpm --filter @objectstack/spec build
was run instead; the working tree stayed clean afterwards, so gen:schema moved
no anchor.

gateresult
spec test406 files / 10785 tests passed
spec typecheckpass (tsc --noEmit, scripts project, test-typecheck)
check:migration-registryregistry.ts is current (100 semantic, 30 retired-key, 54 retired-def)
check:spec-changesspec-changes.json is up to date.
check:upgrade-guideprotocol-upgrade-guide.md is up to date.
check:generatedAll 13 generated artifacts are up to date.
check:nul-bytesOK, 5990 files, no raw control bytes
check-adr-0087-registrationself-test 206 assertions; this PR adds no declared-breaking changeset
check:changeset-gate-self-testspass
check:merge-driverpass
check:spec-parsed-aliaspass
check:type-source-resolutionpass
check:cross-package-test-inputspass
check:doc-formula-expressionspass

Gates beyond the dispatch list were re-derived from the actual changed paths with
node scripts/pm/dispatch-gates.mjs, which added the last eight rows above.

Two of them failed first on an unbuilt worktree, not on this diff:
check:doc-formula-expressions could not resolve
@objectstack/formula/dist/index.mjs, and check-dev-prereqs reports 66 of 67
packages have no dist/. Building @objectstack/formula turned the first green
(24 self-test cases, 22 formula examples, 9 spec TSDoc examples). check-dev-prereqs
still reports the unbuilt workspace — it is a whole-workspace precondition
("run pnpm build"), unrelated to this change and not something a text amendment
can satisfy locally.

Changeset: patch on @objectstack/spec, non-breaking, so no ADR-0087
disposition marker is required (the gate confirms).

Generated by Claude Code


Generated by Claude Code

…usal AND the #3821 recoveries (#9060)
The ADR-0087 entry driver-sql-unresolvable-where-column-refused stated MySQL
was outside the refusal's reach. True at registration (#8790); false since
#8926 landed via PR #9061. The historical paragraph is kept verbatim as the
state at registration and a dated addendum states both halves of the parity:
the INVALID_FILTER / 400 envelope, and the #3821 projection / ORDER-BY
recoveries MySQL never had. registry.ts regenerated via gen:migration-registry.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01225pUjnCKWqxcc1PeqKFUq
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

106 hand-written doc(s) reference the affected code — list omitted above 15 rows. Re-derive: node scripts/docs-audit/affected-docs.mjs --json origin/main.

7 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails.

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tooling labels Aug 16, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review August 16, 2026 13:55
@os-zhuang
os-zhuang added this pull request to the merge queueAug 16, 2026
Merged via the queue into main with commit 8bee54bAug 16, 2026
27 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-9060-mysql-reach-addendum branch August 16, 2026 14:13
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/stooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spec: the ADR-0087 entry driver-sql-unresolvable-where-column-refused states a MySQL reach gap that #8926's parity change retires

2 participants

@os-zhuang@claude