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
环境变量按 Prime Directive [WIP] Create a new release version #9 收敛命名(翻转后主开关语义从 _ENABLED(opt-in)变成 opt-out,考虑用 OS_ALLOW_* / OS_SKIP_* 形式,并用 readEnvWithDeprecation 兼容一版旧名)。
Activity
[-]tracking: 翻转 ADR-0104 值形状/参数强校验为默认严格(D1 + D2 warn-first → error)[/-][+]翻转 D1/D2 值形态校验的 strict 默认值 —— ⚠️ 需按部署生效,不能按版本号全体翻转(见 #3617)[/+]feat(migrate): 平台形态的迁移门禁 —— 带自检的数据迁移 + 部署级标记 (#3617) (#3638)
os-zhuang commentedon Jul 27, 2026
这条 issue 需要拆成三条 —— 只有一条现在能做
#3617 落地后(#3638 已合并),我在实现本 issue 的过程中发现:这里打包的三件事,证据来源并不相同,不能一起翻。
部署级标记
adr-0104-file-references断言的事实是:本部署的文件字段值已迁移,且所有权账目已对过。它对
lookup的 id、location的载荷是否规范什么都没说;对 D2 的动作参数更是毫无关系。把后两者也挂在这个标记上,就是拿一个事实去给另一个不相干的事实背书——和 #3617 修掉的读解析器缺陷是同一个形状:让一个权威去回答没有问它的问题。file/image/avatar/video/audio)adr-0104-file-references标记lookup/user/location/address/repeater/vector…)第 1 条能做,是因为证据对得上:会被拒绝的遗留形态(inline
{url, name, …}blob、裸 URL)正是那个迁移负责转换的东西,所以跑过并通过的部署已被证明没有残留。第 2、3 条卡在哪
不是卡在机制上——按部署生效的门禁已经建好并在跑。卡在一个尚未有人回答的问题:
可能的路子(未决,列出来供讨论):
第 3 条(D2 动作参数)独立于上述所有讨论,可以单独评估。
环境变量:不需要改名了
本 issue 原来预期要把
OS_DATA_VALUE_SHAPE_STRICT_ENABLED从_ENABLED(opt-in)改名成 opt-out 形式,因为假设了全体翻转。按部署生效之后,这个变量的语义完全没变(仍是全类别 opt-in,也仍能在未迁移的部署上强制 media 严格),所以不需要改名,也不需要readEnvWithDeprecation兼容层。#3681 只新增了逃生阀OS_ALLOW_LAX_MEDIA_VALUES。建议:本 issue 保留为第 2、3 条的跟踪项(标题可改为「D1 非媒体类型 + D2 动作参数的 strict 翻转:先确定证据来源」),第 1 条由 #3681 关闭。
Generated by Claude Code
feat(objectql)!: 媒体值形态 strict 按部署生效 —— #3438 中标记真正覆盖的那一半 (#3681)
docs(adr): ADR-0104 addendum — evidence for the remaining #3438 stric…
os-zhuang commentedon Jul 30, 2026
证据来源已定(#4188 合并),但本 issue 不能关
ADR-0104 新增 2026-07-30 附录,回答了上一条评论里悬着的那个问题——「什么才算证据」。结论是两块的答案不同,因为两个事实的认识论触及范围不同:
adr-0104-file-references标记os migrate value-shapes扫描 +adr-0104-value-shapes标记第 2 条能建门禁,是因为存量数据可枚举——全量扫描就是完备证据,与 file-as-reference 的对账同级。第 3 条建不了,是因为调用方不可枚举(每月才跑的集成、无人记得的 cron、每次现构造调用的 AI agent):任何「静默 N 天」标记都在断言它不可能拥有的完备性,那正是 #3617 清除掉的「无处安放的门禁」错误在下一层的复现。所以 D2 明确认账为按版本翻转——但在 warn 窗口之后的大版本(18.0),配
OS_ALLOW_LAX_ACTION_PARAMS逃生阀。顺带修掉一个还没人提过的缺口:新建空库在创建时刻直接记两个标记。否则 ≥17 新生的部署永远从 lax 起步,warn 体制永不消亡。「此处不存在遗留值」在创建时刻是被观察到的事实,不是按版本推断,与 GC 门禁同一纪律。
为什么保持打开
附录只落地了决定,三件实现工作一件都没做:
os migrate value-shapes命令 + 引擎门禁接线 + 新库创建时记账(17.0 车次)actionParamsStrict()默认 true +OS_ALLOW_LAX_ACTION_PARAMS+ dogfood 对偶用例翻转第 2 项是本次 v17 发版窗口里唯一有时限的:它必须和 17.0 一起出门,否则第 3 项在 18.0 就失去了立足的前提。
标题已按上一条评论的建议改写(原标题的「不能按版本号全体翻转」现在只对第 2 条成立,对第 3 条恰好相反,留着会误导读者)。
Generated by Claude Code
[-]翻转 D1/D2 值形态校验的 strict 默认值 —— ⚠️ 需按部署生效,不能按版本号全体翻转(见 #3617)[/-][+]D1 非媒体类型的按部署扫描门禁(17.0)+ D2 动作参数的默认严格(18.0)—— 证据来源已定于 ADR-0104 2026-07-30 附录[/+]docs(adr): ADR-0104 addendum revision — D2 flips strict in 17.0; D1 s…
[-]D1 非媒体类型的按部署扫描门禁(17.0)+ D2 动作参数的默认严格(18.0)—— 证据来源已定于 ADR-0104 2026-07-30 附录[/-][+]D1 非媒体类型的按部署扫描门禁 + D2 动作参数 17.0 默认严格 —— 证据来源与载体已定于 ADR-0104 2026-07-30 附录(修订版)[/+]os-zhuang commentedon Jul 30, 2026
附录修订已合并(#4199 →
ea0cb39)——上一条评论中 D2 的载体作废维护者对 #4188 的评审意见成立(16→17 反正要升级,摊销到一次仪式),修订后的结论:
adr-0104-file-references标记os migrate value-shapes扫描 +adr-0104-value-shapes标记os migrate meta与 boot 日志接入升级路径18.0→ 17.0 默认严格(版本翻转,明确认账)OS_ACTION_PARAMS_STRICT_ENABLED(仅存在于 RC,从未上latest)在 GA 前直接删除,唯一开关变为逃生阀OS_ALLOW_LAX_ACTION_PARAMSD1/D2 分道的判据在附录里:D2 坏的是调用方(响亮 400、落在能修的人手上、R3 危险半边已被
ACTION_PARAM_BUILTIN_KEYS关闭),D1 坏的是记录(read-modify-write 回写多年前的畸形值,且部分脏数据源于我们自己曾导出的假LocationCoordinatesSchema——照文档写的 app 不该被版本翻转惩罚)。更新后的工作项(全部在 17.0 GA 之前,
changeset pre exit是硬截止)actionParamsStrict()默认 true、删OS_ACTION_PARAMS_STRICT_ENABLED、加OS_ALLOW_LAX_ACTION_PARAMS、dogfood 对偶翻转、breaking changeset + v17 发版说明段。latest,「直接删除不背弃用债」的窗口就关了。os migrate value-shapes:CLI 命令 + 扫描器(复用 files-to-references 的行走机械与sys_migration记账)+ 引擎门禁接线 +OS_ALLOW_LAX_VALUE_SHAPES+ 升级路径接线(os migrate meta尾部提示、boot 日志行)。Generated by Claude Code
feat(runtime)!: action params are enforced by default, and the opt-in…
feat(migrate): a datastore created from empty attests its data migrat…
docs: reconcile the value-shapes gate with the creation-attestation n…
feat(migrate): `os migrate value-shapes` —— 引用/结构化 JSON 值形态的按部署门禁(#3438…
feat(migrate,objectql): the upgrade path names the data migrations st…
test(dogfood): prove field-file collection end to end on a real boot (#…
fix(objectql): the open-gate announcement stops speaking where it is …
fix(objectql): the open-gate announcement stops speaking where it is …
fix(objectql): the open-gate announcement stops speaking where it is …
docs(adr): ADR-0104's meta advertisement clause records how it actual…
os-zhuang commentedon Jul 31, 2026
收尾:三个工作项全部落地,关闭本 issue
上一条评论(附录修订后)列出的三个工作项均已合并:
actionParamsStrict()默认 true、删OS_ACTION_PARAMS_STRICT_ENABLED、加OS_ALLOW_LAX_ACTION_PARAMS、dogfood 对偶翻转、breaking changeset + v17 发版说明段os migrate value-shapes:CLI 命令 + 扫描器 + 引擎门禁 +OS_ALLOW_LAX_VALUE_SHAPESos migrate meta尾部提示、boot 日志行)在 #4253;接线缺陷修正(已迁移/新建部署不再看到开门广告)在 #4284另有 #4299 把 ADR-0104 附录中广告位条款的表述修订为与实际落地一致。
原正文的勾选框反映的是最初「按版本全体翻转」的方案,已被本线程两次附录(
ea0cb39修订版为准)取代,不再逐项勾选。最终格局:adr-0104-file-references),feat(objectql)!: 媒体值形态 strict 按部署生效 —— #3438 中标记真正覆盖的那一半 #3681 已实现。os migrate value-shapes扫描 +adr-0104-value-shapes标记),随 17.0 发布;升级路径会点名未关闭的门禁。OS_ALLOW_LAX_ACTION_PARAMS。全部工作赶在 17.0 GA(
changeset pre exit)之前,opt-in 变量从未上latest。关闭为 completed。Generated by Claude Code