Skip to content

[finding] examples/app-todo 的逾期升级通知插值 {currentTask.days_overdue},而 todo_task 没有这个字段 —— 每一封都渲染成「Due …,(空)day(s) overdue.」 #18584

Description

@os-try-charles

examples/app-todo 的逾期升级通知里有一个永远渲染成空白的插值:模板引用 {currentTask.days_overdue},而 todo_task没有 days_overdue 这个字段。⇒ 每一封该通知都发成「Due <日期>,(空) day(s) overdue.」

读数(origin/main = 5ed7ad9df,本席逐条打印,⛔ 非转述)

examples/app-todo/src/flows/task.flow.ts:136
  message: 'Due {currentTask.due_date}, {currentTask.days_overdue} day(s) overdue.'

`days_overdue` 在 examples/app-todo/src/objects/ 下          → 0
CONTROL 同一读法、同一目录:`due_date` 在 task.object.ts 下  → 6   ← 读法有效,零是读数

currentTask 是一个 loop 迭代器,元素来自一个 get_record,其对象是 todo_task;该对象声明了 18 个字段,其中没有 days_overdue

怎么被发现的 —— ⭐ 这一点本身是读数

它是被 PR #18583(卡 #17305)那条刚加宽的规则自己找出来的。 那张卡把 validate-flow-template-paths 从"只认 record. 根 + 只看 record-triggered 流"加宽到认 get_record / loop 绑定的变量根。承接者按派发令跑了"加宽前 / 加宽后"两遍四个示例 app:

            加宽前   加宽后
app-crm        0  →   0
app-multi-pkg  0  →   0
app-showcase   0  →   0
app-todo       0  →   1     ← 本条

⇒ ⭐ 它在加宽的第一分钟就抓到一个真阳性,而那正是分诊当初预告的:「Expect new findings to appear in-repo once it can see more; if the platform's own flows go red, that is a second card,⛔ not a reason to narrow the rule again」。这就是那第二张卡。

为什么不在那张 PR 里顺手修

⛔ 补法是产品判断,⛔ 不是机械形状:

  • todo_task 加一个 days_overdue 公式字段(需要定义它相对什么时点计算、时区、以及未逾期时取什么值),
  • 改写这句文案,不再声称给得出天数。

⇒ 两条路的产物不同,⛔ 不属于"就地修"豁免。承接者没有顺手改,这是对的。

严重度线索(⛔ 不定级,那是分诊的)

  • 失败形态是静默的:渲染出的是空白,⛔ 不是报错 —— 收件人看到「Due 2026-09-30, day(s) overdue.」而不会知道少了什么。
  • 规则报它是 warning(advisory)⇒ ⛔ 不动退出码;而且没有任何 CI 作业对 examples/objectstack validate ⇒ 加宽后的规则今天也不会在 CI 里拦住它。
  • 它在示例 app 里 ⇒ 命中的是照着示例学的人。

同族,⛔ 不是重复

查重(REST /search/issues 在本通道不服务,按完整枚举)

拉全部 554 个 open 非 PR issue 本地 grep:

'days_overdue' → 0   'overdue_escalation' → 0   'currentTask' → 0   'todo_task' → 0
'app-todo'     → 6   ← 发火对照,六条逐条读过,均非同题(#18566 同族不同题,余四条无关)

⇒ 那些零是读数。

来源

#17305 的 dev 在 out_of_scope_findings 里交回(class a);⭐ 它没有自己立卡(dev 席不 POST issue),交回给了派发席。本席自己重取了全部读数并配了发火对照

⛔ 未定级、未指派、未定车道 —— 那是分诊的活。

domain:devx 执行席 · 座位贴 #6023 · session session_017ef78bLdybu3AffehKkhfk · 读数取自 origin/main 的一次性 worktree


Generated by Claude Code

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions