Skip to content

decision: ADR-0131 §6 Q1 — at the v18 upgrade, do customer-edited email templates become environment-level Studio templates, stay as the Default Organization's overrides, or get dropped? #22005

Closed

Description

@objectstack-fleet

Ruled: 6020178017 · letter C · 2026-10-06T16:06Z

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: #15205 (ADR-0131 C4, target:v18). The question is the ADR's last open one (§6 Q1). Triage's pre-opening re-verification (6018661841) found its population has grown.

维护者速读

v18 起,邮件模板统一从代码或 Studio 读取,组织管理员暂时不能再单独改模板。问题是:客户已经改过的模板怎么办?现在"改过的模板"有两种:数据库里标了"已定制"的行,以及单租户下 Studio 每次保存产生的组织级覆盖(10 月 5 日 #21818 之后,它们会进入发信)。

  • A:保留成"默认组织的覆盖版本",继续可读。要保留一条按组织读模板的特殊路径。
  • B:接受丢失,写进发布说明。客户的改动会回到默认文案。
  • C:在升级仪式里把它们提升为环境级的 Studio 模板。单租户下含义不变;多组织下撞名的,在迁移计划里列出,由运维逐条选。

推荐 C。回一个字母:A / B / C。

四棱(os-decision-facets)

  • ① 项目长远合理性:C 让模板只有"代码 + 环境级 Studio"一种来源,不留按组织读模板的特例;A 留下特例;B 没有特例,但丢客户数据。
  • ② 实际业务拉动:单租户下凡是在 Studio 改过模板的客户都涉及;有多少部署改过,看不到,迁移计划会列出。
  • ③ 防 AI 犯错:C 和 B 只有一种模板来源,AI 不会写到一条已退役的路径上;A 让 AI 面对两套来源。
  • ④ 创业阶段不扩散:C 不新增键,复用环境级覆盖;A 要长期维护按组织解析的读取路径。

Prior rulings read: email template, customized, overlay, Default Organization → ADR-0131 §6 Q1 (open), D6 (the per-organization overlay axis retires; environment overlays stay), D10 (only fate 2 deletes, after a verified rewrite); #21818 (08adfeade8); thread: #15205.

一句话问题

客户已经改过的邮件模板,升级到 v18 后是保留、搬到环境级,还是丢掉?

选项 × 代价

选项 做什么 客户感受到的后果
A 按 (组织, 名称, 语言) 解析模板;sys_email_template 和它的组织级唯一索引保留;改过的行归默认组织,C7 里属第 3 类处置 改过的文案不变;平台多维护一条按组织读模板的路径
B 退役 sys_email_template(ADR-0087 登记);删除改过的行(要你明确授权,超出 D10 只允许第 2 类删除的范围);去掉 #21818 的组织覆盖投影;QA 项"改过的行永不被覆盖"退役 客户改过的文案回到默认,需要重新在 Studio 里改
C 升级计划把每条改过的模板(两种都算)提升为环境级 Studio 模板;同名冲突列入计划,由运维选择 单租户:无感;多组织撞名:运维逐条选

推荐 + 回退 + 置信缺口

  • 推荐 C。 两年后,模板只有"代码 + 环境级 Studio"两层,客户在 Studio 里改,升级不丢。这与 Salesforce 的经典邮件模板是组织(即环境)级元数据、在设置里编辑的建模一致。
  • 回退 A。
  • 置信缺口:
    • 看不到有多少部署改过模板;
    • 通知模板没有元数据类型,所以本题只管邮件模板。通知模板只退役它的种子,不新增类型。
  • 只看①选 C;②③④ 是否翻转:否。

裁后执行


Generated by Claude Code

Activity

  1. added
    priority:p1High: required for production / M2
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    domain:servicesRetired 2026-10-22, alias of domain:server (services surface); in-flight cards keep it until landed
    on Oct 6, 2026
  2. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #282 item 5 · letter C · maintainer 「同意」 2026-10-06T15:57Z

    Director seat, summon #35, session_01VYToj6PQehTEKNrjGM9akg (GitHub os-zhuang; written as objectstack-fleet[bot] via the relay). Batch #282 was presented in chat with this card's options A / B / C; the maintainer answered 「同意」, which takes the recommendation. Freshness gate: the body (no comments), #15205 and its re-verification 6018661841, #21818 and ADR-0131 §6 Q1 / D6 / D10 / D13 were re-read before this record. Thread-read: none on this card.

    The ruling — ADR-0131 §6 Q1 is answered

    C. At the v18 upgrade the migration ceremony (C7, #15211) promotes every customer-edited email template to an environment-level Studio template: both populations, the sys_email_template rows stamped customized: true and the organization-scoped email_template overlays Studio saved under single (#21818). Under single the meaning is unchanged; on a deployment with more than one organization a name conflict is listed in the plan and the operator chooses per row (D10 fate 4, never guessed). After a verified promotion the sys_email_template customized rows carry no information the registry does not, so they are mirrors (D10 fate 2) and the row table retires under D13 with an ADR-0087 entry, as #15205 already foresees for the retirement case.

    Not taken: A (a kept (organization, name, locale) resolution and the organization-level unique index: the half-open door D6 closed, 「我宁可先不让他编辑」); B (deleting customer rows, which D10 does not sanction and which would need the maintainer's separate authorization).

    Scope note: notification templates have no metadata type (6018661841); this ruling covers email templates only, and for notification templates the seed retires with no new type (new surface defaults to no).

    Execution


    Generated by Claude Code

  3. removed
    needs-user-decisionBlocked on a maintainer decision — do not dispatch; decision cards only, never on a PR
    on Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:servicesRetired 2026-10-22, alias of domain:server (services surface); in-flight cards keep it until landedpriority:p1High: required for production / M2target:v18

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions