Repository navigation
docs(releases): 18.3.0 names the fail-closed type-mismatch refusal it shipped without a CHANGELOG entry, and the cut runbook regenerates the version PR first - #30041
Merged
Conversation
… shipped without a CHANGELOG entry, and the cut runbook regenerates the version PR first The 18.3 page lists #29923's narrowing under 需手动处理 with the refusal it serves (type-mismatch + params.outcome 'fail-closed', 18.2.0 warned then refused every write -> 18.3.0 refuses at publish) and the rename on main (#29953). docs/releases-maintenance.md gains a numbered cut order: list the changesets main gained since the version PR's branch point and refresh before merging; confirm zero pending changesets after the cut and name any leak in the curated page. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WGufziWtqgnT2f4C6ThaSM
Contributor
Author
|
domain:devx#1 · os-support-ai · session_01WGufzgBDcBNVmSmo7VFHpj Stamp: 2026-11-04T10:12Z 维护者速读
席位核对
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Yibo Wang · project thread
Fixes #29957
维护者速读
type-mismatch+params.outcome: 'fail-closed',以及 main 上 fix(lint)!: a type mismatch in a record-triggered flow condition or an advisory validation rule is served a verdict that says what really happens #29953 已把它改名为type-mismatch-fail-closed。docs/releases-maintenance.md加三步编号的发版顺序:合并 Version Packages PR 前列出 main 在其分叉点之后新增的 changeset 并刷新;发布后确认版本提交留下的 pending changeset 为零,不为零就写进发布页。40a35ded生成后,14:44Z 合并时没有再刷新,落后 main 5 次合入,4 个 changeset(其中 1 个是破坏性的 fix(lint)!: publish refuses a text-vs-number comparison in a validation rule (or another fail-closed predicate) instead of warning, then refusing every write #29923)的代码进了 18.3.0,但 CHANGELOG 没有它们。发布页的「Release facts」里已经点名了这 4 个,但破坏性那条不在需手动处理列表里,也没写出实际的拒绝码。scripts/release-pending-publish.mjs里 release(next): 18.0.0-next.2 shipped 11 changesets with no CHANGELOG entry (the version PR merged behind main; #21361's class, in pre mode) #23818 已测量过 main 约每 20 分钟一次带 changeset 的合入,拒绝过期 PR 的检查几乎会拦住每次发版,所以选运行手册步骤。回滚 = revert。content/docs/releases/v18/18-3.mdx新增的那条(约第 283 行起),以及docs/releases-maintenance.md的「The cut, in order」三步。node scripts/release-pending-publish.mjs unconsumed --version-commit 83d7e4ae --version 18.3.0,预期列出 4 个 changeset;第 1 步的命令换成git merge-base 72d7db03 b1c4119e(chore: version packages #26517 的 head)后同样列出这 4 个文件。skip-changeset)。Clause-②: no
Metadata-protocol: none
What changes
content/docs/releases/v18/18-3.mdx. Under 需手动处理 › Metadata the build, lint and save doors now refuse, the count line now says "8 entries, and one more that 18.3.0 ships with no entry in its CHANGELOGs", followed by a bullet for fix(lint)!: publish refuses a text-vs-number comparison in a validation rule (or another fail-closed predicate) instead of warning, then refusing every write #29923: the sites (validation rulecondition/when,requiredWhen,readonlyWhen, optionvisibleWhen, hookcondition), the before and after (18.2.0 published with anexpression-invalidwarning and then refused every write it could not evaluate; 18.3.0 refuses atos validate,os build, the object save door and publish atseverity: error), the refusal it carries (type-mismatchwithparams.outcome: 'fail-closed', the same on MCPvalidate_expressionforsite: 'validation'), the remedy, the upgrade-guide entryvalidation-type-mismatch-refused, and thatmainserves it astype-mismatch-fail-closedsince fix(lint)!: a type mismatch in a record-triggered flow condition or an advisory validation rule is served a verdict that says what really happens #29953. The Release facts note that already named the four leaked changesets now points to that bullet. The counts the page takes from the CHANGELOGs (8, 264, 1,379) are unchanged, because the entry is not in them.docs/releases-maintenance.md. Cutting a GA release gains "The cut, in order": (1) list the changesetsmaingained since the Version Packages PR's branch point, with the command, and refresh until the list is empty; (2) the existing wait for a nearerCIrun; (3) confirm the version commit left zero changesets pending (the Release run'sChangesets:summary, orunconsumedon a full clone), and name any leak in the curated page, a breaking one under 需手动处理. It says why this is a step and not a check, with the 18.3.0 measurement. The stale "chore: version packages (rc) #4935" in the First, check paragraph becomes "the Version Packages PR".Why
The CHANGELOG question
docs/releases-maintenance.mdsays the per-packageCHANGELOG.mdfiles are generated and never hand-edited, and that the curated page is where the platform narrative lives. The CHANGELOG half of the erratum is already automatic: the rootversionscript runsrelease-pending-publish.mjs annotate-shippedbeforechangeset version, so the next cut renders each of these four entries with a lead line**Shipped in 18.3.0**, whose CHANGELOG missed this entry; listed here one release late.(as 18.3.0 did for four of 18.2.0's). So this PR edits no CHANGELOG and no pending changeset.Every changeset 18.3.0 skipped
Measured with
git log --diff-filter=A --format=%H -1 origin/main -- <f>andgit merge-base --is-ancestor <sha> 83d7e4aeover all 43 pending.changeset/*.mdonmainatc618e890. Four are ancestors of the cut.node scripts/release-pending-publish.mjs unconsumed --version-commit 83d7e4ae --version 18.3.0(full clone) names the same four:29904-type-mismatch-fail-closed.md4c2cd29a(#29923)29903-base-export-without-pair-extension.md5f474102(#29930).custompair's extensionpassword-reset-revocation-trail.md7b2bb668(#29921)sys_sessionrows (revoke_reason: password_reset) instead of deleting themorg-admin-removal-caller-read.md72d7db03(#29932)The three non-breaking ones need no further line: each is a fix that declares no breaking change and no protocol kind, which the page's 其他修复 section counts but does not list, and the Release facts note already names each with its commit. None of them is in the 其他修复 counts, which come from the CHANGELOGs.
Why #26517 merged stale
83d7e4aeis the squash of #26517 onto72d7db03. The PR's headb1c4119e(committed 13:39Z) has parent40a35ded(#29922, 13:07Z).git log --first-parent 40a35ded..72d7db03is five landings:7b2bb668(#29921),4c2cd29a(#29923),242665f1(#29931, a checklist edit),5f474102(#29930),72d7db03(#29932).git diff --name-only --diff-filter=A 40a35ded 72d7db03 -- .changeset/lists exactly the four changesets above. The PR was merged at 14:44Z without another refresh. The runbook already said to check the PR is current, but gave no command; the Release run'sunconsumedreport did warn "Name them in the 18.3.0 release notes", and #29938 named them, but only in the facts note.Guard or runbook step
Runbook step.
scripts/release-pending-publish.mjs(underannotate-shipped, #23818) records why refusing a stale Version Packages PR is not the remedy:maintook a changeset-bearing landing about every twenty minutes (77 of 111 landings in 24 h), so such a check would refuse nearly every cut. The repo answers the leak withunconsumed(report) andannotate-shipped(next CHANGELOG). The order allows a guard only if it would not block the release flow on false positives; this one would block on true positives almost every time, so this PR adds no check and no.github/workflows/**edit.Verification
Gates from
node scripts/pm/dispatch-gates.mjs --commandsfor this change set, run atd7feeed3after aturbo run buildof@objectstack/formula,@objectstack/lintand@objectstack/spec: 51 derived, 51 run, all exit 0;dispatch-gates --ran: "51 derived, 51 run, 0 NOT-MEASURED, 0 UNRUN", exit 0. One family,check:skill-examples, exited 3 on the first pass (packages/client-react/distnot built, nothing measured); afterturbo run build --filter=@objectstack/client-react...it exited 0 (283 examples). Among them:check:doc-anchors,check:doc-authoring,check:release-section-coverage(plain,--strict,--self-test),check:closed-ceremony-text,check:issue-citations,check-adr-links.The step-1 command, replayed on 18.3.0 (
origin/main→72d7db03,origin/changeset-release/main→b1c4119e): merge base40a35ded, four files listed. Anti-no-op: the same diff from72d7db03to itself lists zero.content/docs/releases/is release-owned (AGENTS.md); this is the dedicated docs-only PR AGENTS.md prescribes for a factual gap on a releases page, with no code riding along. Changeset: none (skip-changeset), docs only.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm linthas nothing new to judge.main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/. Editscontent/docs/releases/v18/18-3.mdxas a docs-only erratum PR, per AGENTS.md's "factual error on a releases page → dedicated docs-only PR".🤖 Generated with Claude Code
https://claude.ai/code/session_01WGufziWtqgnT2f4C6ThaSM