docs(releases): v17 页补齐 rc.0 → rc.1 窗口(元数据/协议变更 + 平台功能) - #4418
Merged
Conversation
The v17 release page stopped at the rc.0 cut. 334 changesets have landed on main since (40 major-class), plus five objectui pin moves, and none of it was in the layer-3 curated page the releases-maintenance playbook makes mandatory for a major. Adds a "Landed since 17.0.0-rc.0" section written for the two audiences the release actually strands: 1. **Metadata-app developers** — what changed in the metadata they author and the protocol they call: the actions route's HTTP contract, list queries that apply-or-fail, the one alias fold across every engine method, `query.having` becoming real, flow-node config enforcement and the ADR-0087 alias graduations, blank hook targets, stored-metadata conversion replay, Studio forms that saved nothing, view-filter operator parity, the temporal storage/bounds campaign, and ADR-0111 sharing authority. 2. **System administrators** — what changes about operating the platform: honest 501s naming the package to install (the fabricated-session auth mock and the RLS-free analytics shim are deleted), `HonoServerPlugin` reduced to a transport adapter, memory-driver persistence back to opt-in, `os migrate` writing nothing before confirmation and refusing a busy database, boot-log visibility, platform-objects infrastructure, cron jobs that finally fire, and the four fail-opens closed this window. The largest post-rc.0 landings (ADR-0110/0104-D2/0113/0114, the #4001 strictness clicks, the seven protocol-17 retirements, the #4212 family, the #3896 sweep) are already documented in place in the sections above — this section names them and points there rather than duplicating, then covers the rest of the window. Also extends the upgrade checklist with the new consumer-facing actions and the References list with this window's ADRs and PRs. Console (objectui) half follows in the next commit. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MevuZ96T3E9yivS8QvghcR
The five objectui pin moves since rc.0 (`4a4829d0ef39 → 7d9734d5e321`, 79 commits, released as objectui 17.1.0) had no entry on the curated page. Sourced from the five `console-*` changesets `scripts/bump-objectui.sh` writes on every bump. Leads with the release-critical one: the rc.0 pin predates the ADR-0110 D1 client fix, so the Console it builds still posts `action.target` to the actions route — against a v17 server, which resolves the declaration by `name` and refuses an unresolvable one, every target-bound script action would 404 from the shipped Console. Then the rest grouped by what a user of the Console actually feels: action feedback that stops lying, filters/sorting/export agreeing with the server, safer edits (If-Match + 409 surfacing), per-record bulk actions, approvals and notification surfaces, the Studio designers, types that stop forking the spec, and the resilience fixes. Also scopes the existing Console section to the rc.0 window it documents, so `4a4829d0ef39` no longer reads as the shipping pin. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MevuZ96T3E9yivS8QvghcR
main advanced while this branch was being written. Three of the four new changesets are consumer-facing and belong on the page: - #4363's second half — the background walks seek instead of counting. The page already carried the single-read half; the walk half is the one with teeth, because `rebuildApproverIndex` deleted index rows for requests its offset-paged scan skipped, and `scanValueShapes` could open the value-shape migration gate on evidence it never fully read. Both land beside the paged- read entry they complete. - `SqlDriver.findOne(object, id)` removal + `bypassTenantAudit` becoming a declared `DriverOptions` member, with the limit the declaration states. - react page props joining the reference-integrity suite, so `os lint` / `os compile` stop passing metadata `os validate` rejects — noted where the authoring lints are described, with the CI consequence called out. The fourth (`driver-conformance-gate`) is a CI gate that releases nothing consumer-visible and is deliberately left off. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MevuZ96T3E9yivS8QvghcR
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
…ixes the bump missed Two things the `Check Changeset` gate and a verification pass turned up. **This PR declares itself.** An empty-frontmatter changeset — the sanctioned "releases nothing" declaration the gate documents — for the docs-only v17 page work. **The Console window was under-enumerated, and the page would have inherited that.** Cross-checking the five `console-*` changesets against objectui's own history found `console-bebaebd39ace.md` covers only the tail of its range: 94 first-parent commits, 40 enumerated, oldest entry #3026. The other four ranges reconcile exactly. Everything that merged earlier inside that one range is in neither the release history nor the curated page — the same failure `console-c6cfdf1288b6-backfill.md` records, now for the second time. Adds the backfill (patch; all 27 are `fix`, none `feat`, so the bump script's own typing rule applies) declaring no SHA move. Several are data-loss fixes an upgrading Console user feels on contact: a tabbed modal or split form silently dropping the values of every pane but the active one, a `defaultValues` change discarding what the user was typing, no unload guard on a dirty modal, and a flow or action that failed under HTTP 200 still reporting success. Also fixes the `check:role-word` failure this branch introduced — the ADR-0090 D3 vocabulary is permission sets and positions, so the upgrade-checklist entry now says which permission sets carry `manage_sharing` rather than "roles". Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MevuZ96T3E9yivS8QvghcR
The backfill changeset records the 27 unenumerated objectui fixes in `@objectstack/console`'s changelog (the detail layer). The curated page is the layer that has to tell an upgrading user what they will feel, so the user-visible half lands here too rather than being left to a changelog nobody reads before upgrading. Two additions: a "forms stop losing what you typed" group — the tabbed-modal and split-form value loss, `defaultValues` discarding in-progress input, the missing unload guard, the stale record after a `recordId` swap — and a "spec values render instead of failing three different ways" group covering the three spec-parity tiers, the FilterBuilder operator table, the chart series/category fixes, the empty-KPI analytics case, legacy string row actions, and the HTTP-200 failure reporting as success. The section header now states the real window size (143 commits) and names the backfill, so the 79-PR enumeration is not mistaken for the whole of it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MevuZ96T3E9yivS8QvghcR
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.
背景
计划发布
17.0.0-rc.1。v17 发布页停在 rc.0 切点上,而自那以后main上已积压 334 个 changeset(其中 40 个major级),外加 objectui pin 前进五次(4a4829d0ef39 → 7d9734d5e321,79 个提交,已发布为 objectui 17.1.0)。这些都没有进入docs/releases-maintenance.md规定的 layer-3 策展页 —— 而 major 版本的这层是强制的,因为迁移指引无法生成。改了什么
content/docs/releases/v17.mdx新增 Landed since 17.0.0-rc.0 章节,按任务要求的两类读者组织:1. 元数据应用开发者关注的元数据/协议变更
/actions路由改说 HTTP:单层包裹的 200、业务拒绝 400(带details.fields)、崩溃 500;按声明type分派,flow action 以调用者身份执行(runAs: 'user'终于按调用者判 RLS)filter从「返回整张表的干净 200」变成400 INVALID_FILTER;sort/select/expand/groupBy/aggregations/searchFields里的未知字段一律 400update({filter, multi:true})会改写整表、delete会清空表);query.having真正生效registerFlow拒绝未声明键、CEL 槽校验、ADR-0031 region 全覆盖),以及若干别名毕业进 ADR-0087 转换层2. 系统管理员关注的平台功能升级
HonoServerPlugin回归纯传输适配器;memory driver 恢复 opt-in 持久化os migrate兑现承诺:确认前零写入、占用检测(fd 探针)、就地改写工作量带行数进 plansys_migration/sys_secret)、cron job 终于真的触发、run summary 的 unmeasured 语义另有 Console 小节(以 ADR-0110 lockstep 那条发布关键项开头:rc.0 的 pin 会让每个 target-bound script action 从已发布 Console 打出 404),升级清单新增 13 条动作项,References 补齐本窗口的 ADR 与 PR。
取舍说明
rc.0 之后最大的几批落地(ADR-0110 / ADR-0104 D2 / ADR-0113 / ADR-0114、#4001 严格化后续、七项 protocol-17 退役、#4212 家族、#3896 清扫)此前已随各自 PR 就地写进上方章节。新章节点名并指向它们,而不是重复一遍,再覆盖窗口内其余内容 —— 否则同一页会出现两份互相漂移的叙述。
验证
node scripts/check-release-notes.mjs通过</{(脚本核对,代码 span 已排除)origin/main(含期间新落的四个 changeset,其中三个消费者可见的已写入页面;纯 CI 的driver-conformance-gate有意略去)仅文档改动,不发布任何包。
Generated by Claude Code