Skip to content

[Decision] 18.0.0 release scope: publish before or after step 7b-1+7b-2 (the COALESCE index form) #24847

Closed

Description

@objectstack-fleet

Ruled: 6289274285 · no letter, the maintainer reserves the call · 2026-10-20T10:55Z

一句话问题: 18.0.0 要不要等"唯一索引从 COALESCE 写法换成普通写法"(第 7 步的 7b-1+7b-2)做完再发?这一块对用户不可见,却是第 7 步里改动风险最大、也最晚完成的一块。

背景: 维护者已裁定 18.0.0 等第 4–7 步全部合并后再发(6282882793,原话「还是等你全部完成」)。第 7 步实测拆成 8 块,其中 7 块要么改变对外行为,要么改变全新安装的表结构,属于该进大版本的改动。7b-1+7b-2 只改两件事:一是表结构比对工具把两种索引写法视为等价,二是新建表时用普通写法。它在驱动那条线上要排在 7b-0 后面。

  • 读到的既有裁决:6282882793(发版时机)、6285122667(7b-0 / 7a-3 的执行记录)、ADR-0131 D1/D8、ADR-0120 D3(COALESCE 写法的来源)。

Governing text: 6282882793 — 「还是等你全部完成」(18.0.0 publishes after steps 4–7). This card asks whether to amend it for one part.

前提(带复核命令):

选项:

选项 做什么 客户能感知的后果 工作量
A(推荐) 18.0.0 不等 7b-1+7b-2,它放到 18.0.x / 18.1 没有可见差别。18.0.0 的库仍是 COALESCE 索引,功能完全正常;以后那块落地时,比对工具把旧写法视为等价,不删索引、也不用迁移 省 2 小时左右;发版里少一块碰索引 DDL 的高风险改动
B 照原裁决,全部做完再发 同 A,只是 18.0.0 新建的库直接用普通写法 多等 2 小时左右;这块碰的是唯一索引的 DDL,紧贴着发版合入

业务含义: A 相当于先上线一辆功能完整的车,内饰换件留到第一次保养;B 是换完内饰再交车。两者开起来没区别。

os-decision-facets

  • ① 项目长远合理性:两者终态相同(新 DDL 普通写法,旧写法永远读得懂),A 不留迁移债,也不留特例。
  • ② 实际业务拉动:今天没有客户因为 COALESCE 写法受影响,零拉动。
  • ③ 防 AI 犯错:A 让紧贴发版的改动更少;索引 DDL 出错会删了重建唯一索引,属于破坏性操作。
  • ④ 创业阶段不扩散:A 不新增任何面,只是推迟一块纯内部改动。
    Prior rulings read: release scope,18.0.0,coalesce,index → 11 hits; ADR-0120 D3, ADR-0131 D13; thread: 6282882793 on [epic] ADR-0131 — total organization ownership: no NULL organization_id (v18 line) #15194

推荐: A。只看①时选 A;②③④ 都不翻转。回退方案是 B。

  • 置信缺口:7b-1+7b-2 的实际工作量还没实测,"省 2 小时"是按 7b-0 的进度估算的。

会不会留下迁移债: 不会。原因有两点:

  • 比对工具读旧写法的能力无论如何都要保留,已有库上的 COALESCE 索引必须能读懂;
  • 7b-0 让租户列在全新安装上从建表起就不可为空,在不可为空的列上,COALESCE 索引与普通索引语义相同。

裁后执行:

Blocks: none (the release check waits on this answer only if B).

Activity

  1. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Director delta, batch #377 item 1 — director seat, summon #46, session_013414Vtz3Z8PrXFetUziHoh, 2026-10-20T10:29Z. Read on objectstack origin/main 41646a5788f5, fetched in this act. Thread: no comments. Only what this seat re-checked or adds is below.

    Premises, re-run

    Director increments

    1. On ①, the two letters tie. The end state is identical: new DDL in the plain form, and the COALESCE form readable forever. v17 databases upgraded through the ceremony carry COALESCE indexes under either letter, so 7b-1's equivalence reading is owed in both. A adds no new kind of database state. With ① tied, ③ breaks the tie: A takes a unique-index DDL change out of the window right before release.
    2. A's "no migration debt" argument rests on 7b-0. The equivalence holds because a NOT NULL tenant column makes the COALESCE index and the plain index mean the same thing. That NOT NULL is 7b-0's. No mainline commit names 7b-0 yet (read in this act). So under A, 7b-0 stays an 18.0 gate: only 7b-1+7b-2 leave the gate list. This is an execution parameter of the letter.
    3. The card's "about 2 hours saved" is an estimate, not a measurement. The card says so in its confidence gap. The choice does not turn on it: the gain under A is a smaller release-proximate diff, not the time.

    Facets: ①②③④ agree (① tie; ③ decides).
    Recommendation: A — unchanged. 只看①:平局;②③④ 是否翻转:否(③ 打破平局向 A)。Workload of A: zero extra; the step-7b-1+7b-2 PR is dispatched as planned and recorded on #24583 as part of 18.0.x.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #377 item 1 · no letter, the maintainer reserves the call · maintainer 「24847 我会自己判断,你正常开发」 2026-10-20T10:54Z

    Director seat, summon #46, session_013414Vtz3Z8PrXFetUziHoh. Presented in this session's chat as batch #377 item 1, from this card's analysis and the director delta 6288880877, which recommended A. The maintainer chose neither letter: 「24847 我会自己判断,你正常开发」 ("I will judge 24847 myself; develop normally"). Thread read through 6288880877 at this write.

    Governing text: the release-timing ruling 6282882793 on #15194 (「还是等你全部完成」).

    What the ruling binds

    1. No amendment of 6282882793 is recorded. Whether the stable 18.0.0 publish waits for step 7b-1+7b-2 is the maintainer's own call, made at publish time. The seat does not decide it, re-ask it, or treat either letter as taken.
    2. Development proceeds normally. 7b-1+7b-2 is dispatched, reviewed and landed as planned, behind 7b-0 on the driver line. It is not deferred out of the 18.x line, and it is not rushed or held for the release.
    3. The release check reports, the maintainer judges. When the epic seat runs its release check, it states plainly whether 7b-1+7b-2 has landed (and whether 7b-0 has, which A's equivalence argument rests on: delta 6288880877, item 2). The maintainer publishes. ⛔ The seat never releases (unchanged).

    Workload: none beyond the plan already on #24583.

    Execution: needs-user-decision leaves this card; the assignee (os-steve, the epic seat) keeps it. The epic seat records this on #24583 and then closes this card.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions