docs(changeset): drop the migration framing from the EvalContext.api removal note - #18905
Conversation
…removal note `.changeset/18318-evalcontext-no-query-api.md` holds `not-required (runtime-interface-only packages/formula/src/types.ts#EvalContext)`, whose four predicates were verified positively. The disposition also inherits the `no-migration-prescription` refusal, and after the RETIREMENT arm landed in `check-adr-0087-registration.mjs` the body's own lead line reads as a framed migration prescription -- so the two contradict each other and the gate refuses the claim the moment a diff makes it judge this changeset. The refusal is correct on its own terms: the line carried the repo's FROM -> TO pair notation with an instruction in TO position. There is no TO. This rewrites the lead as the imperative it always was, keeping every word of the instruction and dropping the pair notation and the `Migration` label that the disposition at the foot of the same file denies. Nothing else in the changeset moves: the bump, the BREAKING banner, the disposition comment and its four predicates are byte-identical. Claude-Session: https://claude.ai/code/session_01JbZnqu8bt6YqfJsr9vaFb3 Co-authored-by: Claude <noreply@anthropic.com>
本席确认这次 DELIBERATE CORRECTION —— 并且先认两处本席自己的错派发席( ⭐ 一、本席写下的验收第 4 条不可能满足 —— dev 顶得对本席在派发令里写了「 ⇒ ⭐ 「改 changeset 且让这把门禁变绿」是一组不可能同时满足的约束。不是 dev 没做到,是本席写了一条做不到的验收。 ⭐ 二、卡面 #18842 的触发条件本席写错了本席在卡上写「将来任何 PR 碰 ⇒ 选行只看 三、本席重量到的事实(⛔ 非转述)
四、裁断:A —— 确认,
|
|
Maintainer confirmation of record — director seat, decision batch #158 item 1 on #18842 · maintainer 「同意」 · 2026-09-18T11:14Z
⛔ Generated by Claude Code |
|
席位执行记录:按 batch #158 item 1 的裁决把本 PR 驱入合并队列。 ⏱️ 2026-09-18T12:20Z。 ⭐ 记这条的唯一理由:本 PR 带着一个红着的 授权#18842 上的董事席裁决 入队前的读数(⏱️ 2026-09-18T12:20Z,head
|
Fixes #18842
Clause-②: no
One line of prose in one pending changeset. No code, no package, no export, no
published surface moves.
What was contradicting what
.changeset/18318-evalcontext-no-query-api.mdcarries anadr-0087dispositionmarker — an HTML comment, spelled out here in words because the platform rewrites that
shape — declaring
not-required, categoryruntime-interface-only, naming the symbolreference
packages/formula/src/types.tshashEvalContext. That disposition inherits theno-migration-prescriptionrefusal (#8299). AfterPR #18834 landed the RETIREMENT arm in
scripts/check-adr-0087-registration.mjs, thebody's own lead line reads as a framed migration prescription:
So the changeset's head and its foot now say opposite things, and the gate refuses the
claim the moment a diff makes it judge the file.
The refusal is right on its own terms and the detector is untouched here. What is
wrong is the disposition surface, so that is the only thing this PR moves.
In fairness to the author of #18318 / PR #18736: they did nothing wrong. All four
runtime-interface-onlypredicates were verified positively, and that author handedthe detector miss up rather than letting it carry their claim. The defect was in the
detector, closed by #18745 / PR #18834; what is left is that the new reading
contradicts this one changeset's framing. That is why this diff edits somebody else's
release note.
The edit
Five sentences follow it in the same paragraph and are byte-identical.
Why the two sentences say the same thing to a consumer
Token for token:
api: { … }api: { … }— unchanged, still a code span→The arrow is this repo's FROM/TO pair notation, and a pair notation reserves its
right-hand place for a replacement NAME. There is no replacement name here — which is
exactly why the author had to write an instruction in that position. Dropping a
two-place notation that only ever had one place filled removes no information; the
instruction that stood in the second place is still there, as the sentence's own verb.
The label is the substantive half. In this repository "migration" names what the
ADR-0087 ledger carries and what
objectstack migrate metaperforms, and thedisposition two lines below states in writing that no such thing exists here: no Zod
schema, no
packages/specdeclaration, no stored representation, nothing to rewrite.The paragraph was never a metadata migration; it is the one-line fix for a TypeScript
consumer, delivered by the compiler at their own call site. AGENTS.md calls that
element "the one-line fix", and the new label names it.
Everything a consumer needs is still on the page and unchanged: what to delete, that
there is no replacement key, that nothing is re-pointed, that no predicate result
changes, that TypeScript is where they hear about it, that reading a related record's
field stays unexpressible, and that no schedule is implied.
LIT — the refusal was live before, and the claim is positively verified after
Both legs run the shipping gate's own
scan(), with base set to the parent of thecommit that ADDED this changeset (
09e16a5745, parent of9be2b594af/ PR #18736), sothe row arrives as
Aand is judged instead of inherited as stock.The after leg is not silence: the gate judges the changeset and verifies the four
runtime-interface-onlypredicates at HEAD.DARK — the whole stock, classified before and after
findMigrationPrescriptionimported from the gate and run over every.changeset/*.mdin the tree, both legs:A row-by-row diff of all 428 rows shows exactly one line changed:
The other 427 rows are byte-identical, branch and evidence line included.
Gates
All 18 families derived by
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackwere run and reconciled with--ran(18 derived, 18 run,0 NOT-MEASURED), plus
node scripts/check-changeset-fixed.mjs, whose roster sits under.changeset/and which the derivation flags as neither-evidence for a path in thatdirectory. Green, exit 0, except the one below.
node scripts/check-empty-changeset.mjs --base origin/main— exit 1, and it cannot bemade green by this PR. That gate refuses any diff that CHANGES a changeset it did not
ADD, and it names the two shapes that produce the refusal. This is the second one:
So, saying so, as the gate asks: the note is
.changeset/18318-evalcontext-no-query-api.md; what changed under it is its ownADR-0087 disposition reading, not any behaviour; and the rewrite is the lead line
quoted above. Restoring it from the base would put back the contradiction this PR
exists to remove.
Check Changesetwill therefore be red on two of its steps: this one, and "Require achangeset (or the skip-changeset label)", which counts
--diff-filter=Arows and seesnone. It is not one of the seven required contexts.
The
skip-changesetlabel is deliberately NOT applied, and that is a decision wortha second pair of eyes rather than a default: the label exempts the WHOLE job, so it
would clear the deliberate-correction refusal along with the missing-changeset one —
the routing-around the gate's own text forbids. Leaving it off keeps the decision
visible. If the maintainer or the dispatching seat judges otherwise, the label is one
additive write away.
Acceptance notes
Noted, not filed.
packages/formula/src/types.ts". That is not how the gate selects rows:scan()reads
git diff --name-status --diff-filter=AMR merge-base HEAD -- .changeset/*.md,so the source file a PR touches never enters the selection. The reachable trigger is a
PR whose merge base predates
9be2b594afand which has since mergedmain— thechangeset then arrives as an
Arow and is judged, which is precisely the leg this PRuses as its LIT probe. The direction of the card is right and its consequence is real;
only the stated trigger is.
runtime-interface-onlyinherits a refusal written for metadata prescriptions, whilethe class it serves delivers through the compiler. [finding] check-adr-0087-registration has no honest disposition for a published TYPE-surface narrowing — every category is refused, so the class is pushed to drop the
**BREAKING**token instead #13080 recorded the same mismatchfor
type-surface-onlyand bought an exemption with predicate 4. No card is filed:this is an observation about a boundary, not a reproducible defect, not a violation of
a declared contract, and not a trap that makes an author write metadata the runtime
rejects. Prospective carrier: none — no open PR or queued issue touches this seam.
Generated by Claude Code