Skip to content

[Decision] 平台自带的四个定时示例流一个都声明不了组织 —— 而新规则要求它们必须声明 #17396

Description

@os-tesla

⚠️ 重建卡。 原卡 #17150os-trump 账号被停用一起销毁。⛔ 原卡上的选项字母(A′ / B / C)与其正文已经不存在,本席不复原它们——下面的选项是重新写的,⛔ 不要把它们当成原卡那三个。若你记得原来的裁定倾向,请直接说,本席照办。

PR #17334 的四处源码注释与 changeset 都写着这张卡"正在重建"(grep 'is being re-filed'),⇒ 这个号是欠代码库的。

一句话问题

我们自己发的示例应用里有四个定时流。新规则要求每个定时流声明它代表哪个组织,而这四个流一个都声明不了 —— 于是要么它们在启动时全部不再运行,要么规则对它们网开一面。

背景

#16659 的维护者裁决(2026-09-08,逐字):

多组织定时任务本来只能在组织内运行,应该带组织ID,不允许跨组织的定时任务

PR #17334 实现了它:一个 schedule / time_relative 流若不声明 organization启动时就不再 armed,并打出一条点名该流与该键的拒绝。

⚠️ 问题在于组织 id 是运行时才存在的值(一个 sys_organization.id,部署自己铸的)⇒ 示例应用的作者写不出它。四个流是:showcase_task_due_remindershowcase_scheduled_digest,以及另外两个(PR #17334 的文档段落列全)。

⭐ 已经被这一轮回答掉的那一半(⛔ 不再是本卡的问题)

原卡曾把「validate-flow-trigger-readiness 能不能学会这条规则」列为待决之一。它学会了,而且严重度是测量出来的,不是选的:

  • 定为 warningobjectstack buildexamples/app-showcaseexample-todo通过
  • 承接席做了一次一次性变异探针把它翻成 errorobjectstack build 直接失败,点名 showcase_task_due_remindershowcase_scheduled_digest,⛔ 而作者没有任何可写的修法

⇒ 这条探针把本卡的真问题量了出来:规则本身没错,是我们自己的示例满足不了它。

选项 × 真实代价(⛔ 重新写的,不是原卡那三个)

做什么 客户能感知到什么
A 让示例流声明组织:给一个可授权的引用形式(例如指向"本部署的唯一组织"或一个具名种子组织的记号),示例照写 示例能跑;⚠️ 代价是新增一个已声明的键或记号 ⇒ 永久义务,且它必须在多组织装机上有明确语义,否则就是把"跨组织"从后门放回来
B 承认示例是单组织场景,给单组织装机一条明确的、声明式的豁免 示例照跑;⚠️ 但豁免一旦存在,多组织装机的第一天就是它失效的那天——正是 #16659 要修的缺陷"晚一步复现"
C 示例流不再自带定时触发,改成文档里说明"你自己加上 organization 之后再启用" ⛔ 示例失去一个能跑起来的能力;但规则不被稀释,⇒ 也没有新增永久面
D 维持现状:四个示例流在启动时静静地不 armed,lint 报 warning ⛔ 我们自己发的示例带着一个警告,且它演示的能力实际上不工作

业务含义直译

  • A =「给示例发一张通用工牌」——能进门,但要想清楚这张工牌在有很多扇门的大楼里意味着什么。
  • B =「单间办公室不用刷卡」——今天成立,搬进写字楼的第一天失效。
  • C =「示例只演示怎么装门,不演示开门」。
  • D =「门装好了,钥匙没发,门口贴张纸条」。

四棱

os-decision-facets

项目长远合理性 —— C 不新增任何永久面,最省;A 新增一个必须在多组织下也说得通的记号,⇒ 它是唯一可能扩大契约的;B 造一个"今天成立、明天失效"的条件豁免,⚠️ 那正是 #16659 的缺陷形状(在单组织装机上合法、第二个组织出现当天静默失效)。

实际业务拉动 —— 撞上的是照示例学的人:示例是新用户第一眼看到的东西,而它现在演示一个不工作的能力。⛔ 但本席没有实测有多少人真的在跑这四个流,⇒ 拉动强度未知。

防 AI 犯错 —— 出错时谁看到什么:D 最坏——AI 照示例写一个定时流,os validate 过,启动时不 armed,只有一行 boot 日志。⭐ 而这正是 #17123 那张卡的形状(跑了、报告健康、什么都没送达)。A / B / C 都把它变成作者写下时就知道的东西。

创业阶段不扩散 —— C remove 优于 declare-and-maintain,最符合;A 是 declare-and-maintain,每个已声明的键都是永久义务;B 是一条要长期维护的条件豁免。

推荐:⛔ 本席不推荐。 四棱在此分歧:①④ 指向 C,③ 指向"任何一个都好过 D",② 数据缺失。⇒ 按纪律分歧即升级,交你拍板。

⛔ 置信缺口 —— 本分析看不见:有多少人真的在用这四个示例流(②轴没有实测);objectui / cloud 里有没有同形状的示例(⛔ 声明为未知,不是"没有");以及 A 的那个"记号"具体能不能在多组织下定义清楚——⚠️ 若定义不清,A 就等于把跨组织从后门放回来,而那是裁决明令禁止的。

关联

Activity

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:specpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions