You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(#4704 已修复接线,所以 env 现在确实是 live 的;本 issue 针对的不是那个键的状态,而是得出该状态的方法。)
为什么值得单独记
这正是 AGENTS.md Prime Directive #10 结尾那句话所警告的形态 —— 「A case label is not enforcement; check the call site」(#3106 的教训)。liveness 台账如果按「消费端是否存在读取该键的代码」来判定 live,那么任何「消费端写好了、但没有任何生产者传值」的键都会被判成 live,并且在所有 gate 全绿的情况下长期存活。Seed.env 就是被这样掩护了若干个版本。
同族佐证:packages/runtime/src/seed-loader.test.ts:327 一直有一个 should handle environment filtering 测试并且长期通过 —— 因为它显式传了config.env: 'prod'。消费端机制一直是对的,坏的只有接线,而单测和台账都只看了消费端。
发现于 #4704 的修复过程,与该 issue 本身无关,故按 Prime Directive #10 单独记录、不在那个 PR 里顺手改。
现象
packages/spec/liveness/seed.json把Seed.env标为:"status": "live""evidence": "packages/metadata-protocol/src/seed-loader.ts:91"而在 #4704 修复之前,这句话是不成立的:第 91 行确实存在
filterByEnv(request.seeds, config.env),但全仓六处构造SeedLoaderRequest的调用点没有一处传env,于是config.env恒为undefined、filterByEnv第一行直接返回全量、dataset.env一次都没被读到。台账给的证据行是消费端,而这个键失效的原因在生产者/调用点。(#4704 已修复接线,所以
env现在确实是 live 的;本 issue 针对的不是那个键的状态,而是得出该状态的方法。)为什么值得单独记
这正是 AGENTS.md Prime Directive #10 结尾那句话所警告的形态 —— 「A
caselabel is not enforcement; check the call site」(#3106 的教训)。liveness 台账如果按「消费端是否存在读取该键的代码」来判定 live,那么任何「消费端写好了、但没有任何生产者传值」的键都会被判成 live,并且在所有 gate 全绿的情况下长期存活。Seed.env就是被这样掩护了若干个版本。同族佐证:
packages/runtime/src/seed-loader.test.ts:327一直有一个should handle environment filtering测试并且长期通过 —— 因为它显式传了config.env: 'prod'。消费端机制一直是对的,坏的只有接线,而单测和台账都只看了消费端。建议
packages/spec/liveness/下其它条目:凡是证据行指向「消费端读取处」而该值来自某个 optional config 的,都需要补一条「谁来填这个 config」的核对。风险最高的是带默认值的 optional 配置项 —— 它们在类型上永远「有值」,在运行时却可能永远是undefined。_note里强制要求写明生产者),让「消费端存在」与「生产者确实传值」成为两条独立证据。seed.json里env那条的 evidence/note 可顺手改为指向调用点(Seed.envis authorable but never enforced: the app seeding path never setsSeedLoaderConfig.env, soenv: ['dev']seeds into production too #4704 之后是SeedLoaderService.load内的环境解析)。未指派 —— 仅作记录。判断第 1 条的工作量与优先级需要维护者定夺。
Generated by Claude Code