从 #4471 拆出的独立事项(#4471 的正文里明确说这条"值得单独定一条",#4631 只做了声明契约的强制,这条未实现)。
问题
当一个 best-effort 降级的后果是静默丢数据/丢持久性——系统看起来正常运行,实际上写入不落盘——它就不该记 warn。#4420 正是这个形态:durable suspended-run store 挂在不存在的表上,每次写失败进 warn,没人读,重启丢光在途审批。#4460 在 service-automation 这一处把它提到了 error,但只是点状修复,没有形成可依循的规则。
期望
定一条日志级别约定(建议落在 AGENTS.md 或相关 ADR 的 addendum):
可以顺带盘点现有 catch { logger.warn(...) } 形态里还有哪些属于第二类(#4631 的 check:init-service-contract --list 输出可作为盘点起点——init 期 best-effort 消费 manifest 注册 sys 表的插件都是候选)。
参考
从 #4471 拆出的独立事项(#4471 的正文里明确说这条"值得单独定一条",#4631 只做了声明契约的强制,这条未实现)。
问题
当一个 best-effort 降级的后果是静默丢数据/丢持久性——系统看起来正常运行,实际上写入不落盘——它就不该记
warn。#4420 正是这个形态:durable suspended-run store 挂在不存在的表上,每次写失败进 warn,没人读,重启丢光在途审批。#4460 在 service-automation 这一处把它提到了error,但只是点状修复,没有形成可依循的规则。期望
定一条日志级别约定(建议落在 AGENTS.md 或相关 ADR 的 addendum):
warn/info合理;error,且首次降级时一次性说清后果与修复动作(参考 fix(automation,approvals): 审批决策不能在流程原地不动的情况下"成功" (#4420) #4460 后service-automation/src/plugin.tsstart() 里的 error 文案)。可以顺带盘点现有
catch { logger.warn(...) }形态里还有哪些属于第二类(#4631 的check:init-service-contract --list输出可作为盘点起点——init 期 best-effort 消费manifest注册 sys 表的插件都是候选)。参考