Repository navigation
decision: before the v18 line opens, does main publish one last 17.x release to npm? #22009
Description
Ruled: 6020116360 · letter A · 2026-10-06T16:04Z
Filing gate: ② a decision only the maintainer can make. Filed by the triage seat (objectstack-wide, seat post #6015, session_01AavokzJ5DndAwitDXvKy4U) at the maintainer's instruction 「需要我决裁的问题,立决策卡」. ⛔ Not a claim. The ruling is recorded on this card and on the parent, then this card closes.
Parent: #15193 (the v18 gate). Ruled already: v18 develops on main, and there is no 17.x line of any kind (6018207607). So npm's 17.x line ends at what main publishes before the opening.
维护者速读
v18 开线后,main 不能再发 17.x,npm 上的 17.x 停在开线前最后一个版本。现在 npm 上是 17.7.0,之后已经有几十个修复合进 main。开线前要不要再发一个 17.x?
- A(发):用现有的发布流程(刷新版本 PR → CI → 你批准发布)再发一个 17.x。把开线前合进 main 的修复带给 npm 用户,包括正在推进的安全修复,比如 security(spec, plugin-security): the AI tool contract says a context with no caller runs "RLS-on, sees-nothing", but plugin-security hands a principal-less context straight through, and on a hosted kernel it read and wrote more than a member may #21908 的拒绝(如果赶得上)。开线大约晚一天。
- B(不发):npm 的 17.x 停在 17.7.0,之后的修复只能等 18.0(要手工迁移)。
推荐 A。回一个字母:A / B。
四棱(os-decision-facets)
- ① 项目长远合理性:A 让 17.x 以一个干净的收尾版本结束,不用新流程;B 让 17.x 停在一个已知缺修复的版本。
- ② 实际业务拉动:npm 上的自建用户以及 objectui、hotcrm 这些下游,今天在用 17.7.0。
- ③ 防 AI 犯错:两者都不改协议;A 少一批"修了但发不出去"的修复。
- ④ 创业阶段不扩散:A 用现有流程,不新增运维,只多一次你的批准。
Prior rulings read: #15193 rulings 6017499711 / 6018081901 / 6018207607 (no npm publish lane; no branch); thread: #15193, #21993.
一句话问题
开线前,再从 main 发一次 17.x 吗?
选项 × 代价
| 选项 | 做什么 | 代价 |
|---|---|---|
| A | 刷新版本 PR、跑 CI、批准发布;开线等它发完 | 多一次你的批准;开线晚约一天 |
| B | 不发 | 17.7.0 之后合入的修复,npm 用户要等 18.0 并做手工迁移才能拿到 |
推荐 + 回退 + 置信缺口
- 推荐 A。 想带上的修复(security(spec, plugin-security): the AI tool contract says a context with no caller runs "RLS-on, sees-nothing", but plugin-security hands a principal-less context straight through, and on a hosted kernel it read and wrote more than a member may #21908 的拒绝、service-automation: a built-in node's config value its own contract refuses still registers, then fails every run — the built-in half of #21848's class #21898 及其 pin 升级 chore(objectui): bump the console pin past objectui
5ba255538a— it carries objectstack-ai/objectui#11670, which unlocks #21898 (PR #21974, ACCEPTed) #21996)尽量在发版前合入。两年后回看,17.x 以一个完整的收尾版本结束。这与 Node.js 在进入下一个大版本前给上一线发最后一个补丁版的做法一致。 - 回退 B。
- 置信缺口: security(spec, plugin-security): the AI tool contract says a context with no caller runs "RLS-on, sees-nothing", but plugin-security hands a principal-less context straight through, and on a hosted kernel it read and wrote more than a member may #21908 的拒绝能否赶上,取决于你对它那张决策卡的答复和之后的开发时间。
- 只看①选 A;②③④ 是否翻转:否。
裁后执行
- A: 等你点名的修复合入后,按现有发布流程发版(触发
refresh_version_pr→ CI → 合并 → 批准发布),发完再关 [gate] the v18 development line is not open — ADR-0131 execution cards are blocked on this card #15193。分诊在开线那一轮记下开线前的最后一个提交。 - B: 可以随时关 [gate] the v18 development line is not open — ADR-0131 execution cards are blocked on this card #15193。
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 6, 2026
Ruling: batch #282 item 2 · letter A · maintainer 「同意」 2026-10-06T15:54Z
Director seat, summon #35,
session_01VYToj6PQehTEKNrjGM9akg(GitHubos-zhuang; written asobjectstack-fleet[bot]via the relay). Batch #282 was presented in chat with this card's options A / A′ / B; the maintainer answered 「同意」, which takes the recommendation. Freshness gate: the body (no comments) and #15193's rulings 6017499711 / 6018081901 / 6018207607 were re-read before this record. Thread-read: none on this card.Readings corrected before the ruling
latestis 17.7.0, published 2026-10-06T12:22Z from the Version Packages PR chore: version packages #21352 the maintainer merged and approved today.4e4e88142)maincarries 9 commits, not the "几十个" the body says: 5 fixes (fix(plugin-approvals): Setup → Approvals → Requests opens the tenant-wide list, and a merged-app pin closes the caller-scoped first-view family #21991, fix(metadata-protocol): put and delete accept the version a checksum-less sys_metadata row is served as #21990, fix(metadata-protocol): the metadata door serves a code-defined datasource's code definition while a stored row exists #21985, fix(platform-objects): Setup identity pages open on the tenant-wide list; a caller-scoped list view is never first #21983, fix(metadata-protocol): another package's withdrawal of a form holds at the anonymous form endpoints, whatever packages' copies of a view container are saved #21979), 1 docs, 2 tests, 1 CI.mainbefore the opening.The ruling
A — one last 17.x release from
mainbefore the v18 line opens, through the existing lane (refresh the version PR, CI, the maintainer merges it and approves the release). Its list is fixes only:mainride along.feat(spec)!, PR feat(spec)!: the build doors refuse a builtin node config value its executor contract refuses, with its location #21974) is not on the list: a narrowing breaking change does not go into the closing release of a line whose users may never upgrade; it lands after the opening, in 18.0.No deadline was set by the maintainer. A′ (publish now without waiting for #21908) is the fallback if the maintainer sets one and #21908 misses it. B was not taken.
Execution
domain:devxseat triggersrefresh_version_pronce the listed fixes are onmain; CI; the maintainer merges the version PR and approves thereleaseenvironment (Prime Directive Add missing Field.phone() helper and factory methods for Action/Dashboard/Report #15: the release act stays the maintainer's).maincommit at the opening; the maintainer closes [gate] the v18 development line is not open — ADR-0131 execution cards are blocked on this card #15193 after the release is out.completedin this act.Generated by Claude Code