Skip to content

decision: ADR-0131 C5 — 17.x honours a public form's withdrawal saved at the organization layer. When that layer retires, are those withdrawals carried to the environment layer, dropped, or kept as a special read? #22008

Closed

Description

@objectstack-fleet

Ruled: 6020151485 · 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: #15206 (ADR-0131 C5, target:v18). Security-adjacent: anonymous intake. Classes, positions and functions only.

维护者速读

17.x 里,管理员在组织层把某张公开表单"撤下"后,匿名提交入口会拒收(17.7 的安全修复)。v18 取消组织层之后,这些已经撤下的表单怎么办?

  • A:升级时把每条组织层的撤回转成环境层的撤回。表单继续是关的,只会关得更宽,不会重新打开。
  • B:组织层的撤回直接作废。升级后这些表单会重新对外开放,除非管理员重新撤回。
  • C:只为"撤回"这一件事保留读组织层的特殊路径。

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

四棱(os-decision-facets)

  • ① 项目长远合理性:A 撤回只剩环境层和包层两种来源,不留组织层特例;C 保留特例;B 无特例但会出错。
  • ② 实际业务拉动:凡是在组织层撤回过公开表单的部署都涉及(17.7 才刚发布这项修复)。
  • ③ 防 AI 犯错:B 的失败是无声的,表单在升级当天重新开放,没人察觉;A 只会关得更多,不会开得更多。
  • ④ 创业阶段不扩散:A 是一次迁移,不新增键;C 要长期维护一条特殊读取路径。

Prior rulings read: anonymous form intake, withdrawal, organization layer → #21835 (ruled; the maintainer accepted one known limit, 6005722623), #21934, #21967, #21980; ADR-0131 D6, D10; thread: #15206.

一句话问题

组织层被取消后,那些在组织层撤下的公开表单,升级后还关着吗?

选项 × 代价

选项 做什么 后果
A 迁移仪式把每条组织层撤回转为环境层撤回;多组织时,按"任一组织撤回即撤回"处理 表单保持关闭;多组织部署里可能多关一些(安全方向)
B 丢弃组织层撤回 升级当天这些表单重新开放(安全回退)
C 保留"撤回"一项的组织层读取 组织层退役不彻底,长期维护两条路径

推荐 + 回退 + 置信缺口

  • 推荐 A。 两年后,表单的开放与撤回只在环境和包两层判断,升级永远不会重新打开一张已撤下的表单。这和 Salesforce 站点或 Experience Cloud 的公开访问在站点级配置一致。
  • 回退 C。 ⛔ B 不推荐。
  • 置信缺口: 多组织部署里"多关"的那部分表单数量看不到,迁移计划会列出。
  • 只看①选 A;②③④ 是否翻转:否。

裁后执行


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:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guards
    on Oct 6, 2026
  2. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Ruling: batch #282 item 3 · letter A · maintainer 「同意」 2026-10-06T15:55Z

    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), #15206, ADR-0131 D6 / D10 / D13 and the #21835 ruling 6005722623 were re-read before this record. Thread-read: none on this card.

    The ruling

    A. At the v18 upgrade the migration ceremony (C7, #15211) carries every organization-layer withdrawal of a public form to the environment layer. Conflict rule, fail-closed: on a deployment with more than one organization, a form any organization withdrew is withdrawn at the environment layer. A withdrawal is customer-written state, not a mirror, so D10 sanctions no deletion of it; and the organization layer retires whole (D13), so no special read survives for it. Withdrawals are view-type organization-scoped overlay rows, so this is the fail-closed sub-case of batch #282 item 4 (#22011) inside the same promotion.

    Pin owed with C7: a public form withdrawn before the upgrade is refused at the anonymous intake doors after it, on both kernels.

    Not taken: B (the organization-layer withdrawals lapse and the forms reopen on upgrade day, silently; a security regression); C (a kept organization-layer read for withdrawals alone, which leaves the retirement incomplete).

    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

    area:accessPermissions that actually hold — RLS/FLS, sharing model, write-path guardsdomain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they landpriority:p1High: required for production / M2securitytarget:v18

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions