本贴是 domain:metadata 座位的唯一权威登记。 索引 = label:pm:seat,总入口 #4604 。本席由维护者 2026-08-07 批准自 domain:engine-core 拆出(PR #6370 )。
单写手规则 :只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论。活性判定(惰性):>24h 无产出可回收 —— ⚠️ 该阈值在维护者加急令面前不适用(注记 14)。
范围
packages/metadata*(含 metadata-fs、metadata-protocol、metadata-core)、packages/platform-objects。
红线:⛔ 元数据格式/接受面归 domain:spec(#6017 );ObjectQL 编译/查询执行/formula/core runtime 归 domain:engine-core;/meta 路由本体在 packages/rest 归 domain:cli;packages/lint 属 devx;⛔ content/docs/releases/ 恒不许碰。
⚠️ domain:spec(#6017 ) 与 domain:spec-surface(#6298 ) 不是一回事 :接受面变更(给响应 schema 加携带字段等)归 #6017 ;spec-surface 的第一条红线明确排除接受面。本席 08-10 在 #4717 上曾把 STOP 误指向 #6298 ,由 dev 更正。
当前 PM
os-zhuang · session_01W6bLax4KMrSfnE1ydFU8Dw · Seated 2026-08-08T08:35Z
姿态 :Round 10 在飞期(2026-08-10T05:3xZ)——在飞 1、决策箱 1、队列 2 张。
批次上限 5 ;常设指令「继续派发,优先 v17」——⚠️ v17 板持续为空 。
台账(os-zhuang 任期)
已 MERGED(28 卡 28 PR,零返工零升级)
v17 摘 7 张。派发 33 单 33 中 (28 落地 + 1 在飞 + 4 STOP 设计出口;另 1 张让位他席后落地)。
后继卡必读的落地事实 :
#4463 运行时发布门在 host-config 拓扑(environmentId 未绑定)上整体不跑——#5086 只把 code-only 拒绝移出了同一条短路 #6710 —— 发布门改读 authoringChannel。⚠️ 边界:它 settle 的是哪些 kernel 激活门,不是哪些 type 门 dispatch (后者是 [P2] 运行时授权门扩到 object 写入 + 全量 runtime-safe 规则快照(#4463 P1 之后) #4716 )。cloud control-plane-preset.ts:99 一行声明为实际欠账 。
Stop-the-bleed: tier-3 heal must not unregister a package-bound object — decide on the contributor's package binding, not isArtifactBacked (#6853 ruling C) #7012 —— tier-3 heal 改判 owner contributor 的 package binding;判据有证明。⚠️ Implement ADR-0029 D9 — register a tenant object overlay as its own contributor layer instead of splicing out the packaged owner #7277 落地后应复查它能否收窄/退役 。
assertSortFieldsExist's dotted-path SORT hint also prescribes an unmaterializable "formula or rollup" denormalization — same defect class as #6673, different axis #6924 + A non-dotted orderBy naming a formula field answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994 —— SORT 轴两半。⚠️ summary/rollup 有 真实列;COMPUTED_VALUE_TYPES 是写 契约不可用于 gate 排序。⚠️ 已知未覆盖 :engine.find() 直接调用方仍静默丢排序,套件内 RECORD OF A KNOWN HOLE pin 应在 engine.find() still drops a formula ORDER BY silently — decide whether the engine refuses or keeps its internal-caller tolerance #7095 落地时变红。
cli/metadata: os migrate plan still creates .objectstack/metadata/ on a fresh project (the residual half of #6743's dry-run write side effect) #7000 —— FileSystemRepository.start() 不再建目录。⚠️ 必须的补偿 :chokidar 无法 watch 不存在的路径,watcher 改为 root 出现时才装 —— 无此补偿会静默杀掉外部编辑检测 。⚠️ cli/driver-sql: os migrate plan 自称 dry-run,却仍会在全新项目上创建空数据库文件(#6469 的残余写副作用) #6743 的数据库半边(PR fix(cli,driver-sql): os migrate plan stops creating a database on a fresh project (#6743) #6997 )仍未合并 。落点是 packages/metadata-fs。
Plugin-registered metadata types can carry org-scoped rows that cold boot skips — neither refused nor reported #6992 —— 冷启动审计扫 live registry;拒绝区未动且分歧被测试钉死 。真正载体是 SchemaRegistry 。
[finding][drivers] DriverQuery 已经存在,但几处驱动调用方仍在用 as any / as QueryAST 兜住冗余的 object —— 连带把 where/orderBy/fields 的检查一起关掉 #6231 —— 根修复是把 database-loader.ts 三个读 helper 的参数改成 DriverQuery,在九个调用点 恢复检查。三个相邻 engine cast 被 EngineQueryOptionsSchema.search rejects the bare query string that ADR-0061 D1 calls canonical — so every engine caller that wants it must as any, losing the whole query's checking #7178 的 spec 分歧阻塞,保持原样 + 注释。
docs(adr-0029): amend D3 — a tenant object overlay is its own contributor layer (#6853) #7087 = ADR-0029 D9 已批准 :overlay 为第三种非拥有 kind,base = overlay ?? own,解析逐位不变 ;assertSingleOwnerPerObject 字面不变;base 选择按 kind 非 priority。
在飞(1 张)
决策箱(维护者)—— 1 张
队列(2 张)
本任期新立跨车道卡(⛔ 只记录不催)
#7150 (chokidar 监听在生产布局下疑似从未触发,立卡者未自行定级 因未测严重性输入)、#7177 (drivers:测试文件还有 10 个同形状站点,一个拼作 as never)、#7178 (spec:EngineQueryOptionsSchema.search 与 QueryAST.search/ADR-0061 D1 分歧,阻塞 #6231 三个 cast )、#7294 (spec:POST /meta/:type/:name/publish 是已服务的 REST 路由却零 spec 声明 )、#7095 (engine-core)、#6995 (被 D9 吸收,#7277 落地后应可关)、objectui#3950 。
运维注记(交接必读)
flip 定点 6-9 分钟核 job 结论 ;落地双读数是唯一抓手。AM 返回值常为空 (六次),但 docs(adr-0029): amend D3 — a tenant object overlay is its own contributor layer (#6853) #7087 返回非空 且报 method: MERGE(请求 SQUASH)——判准始终是队列分支出现或 main 上有 commit 。
⭐⭐ 继承来的状态句必须回源核实 (本任期三次实证,代价递增):cli/driver-sql: os migrate plan 自称 dry-run,却仍会在全新项目上创建空数据库文件(#6469 的残余写副作用) #6743 「已落地」(实为 open draft)、docs(adr-0005): amend the overlay-index section instead of rewriting it #6981 「未落地」(实为 17 小时前已合并,窗口 grep 之误 —— 查落地绝不可用 git log -N ,须无界/按日期/读 merged 字段)、[P2] 运行时授权门扩到 object 写入 + 全量 runtime-safe 规则快照(#4463 P1 之后) #4716 +[P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717 「被 [metadata-core] sys_view_definition 的"活跃行唯一"从未生效——归档视图仍占用 (name, organization_id, owner) 名额 #5839 阻塞」([metadata-core] sys_view_definition 的"活跃行唯一"从未生效——归档视图仍占用 (name, organization_id, owner) 名额 #5839 在本席上任前就已关闭,该阻塞整个任期从未成立) 。模式相同:把一句写下来的状态描述当成当前事实,不核实其依赖条件是否仍成立 。凡「X 被 Y 阻塞 / X 已落地 / 落点在 Z」,消费前一律回源。
裁决常由他席 PM 会话代记 —— 只认卡上评论。
session limit 灭批 ×3(11 人次):按 spawn 返回的 agentId 直发可复活,零丢失。
worktree footgun ×3:git checkout <ref> -- <path> 首提交前静默回退。复盘项:进 os-dev 定义。
派发令三分区 + 后继定价必答项:33 单 33 中零返工 。锚定函数名而非行号(engine.ts 一天漂 ~800 行;repository.ts 换了包)。
PR body 必须英文。
STOP / needs_decision 是设计出口而非返工 (本任期 4 次):#4463 运行时发布门在 host-config 拓扑(environmentId 未绑定)上整体不跑——#5086 只把 code-only 拒绝移出了同一条短路 #6710 、[finding] validateEmptyCombinators gates the runtime publish path for flow only — the other filter-carrying metadata types reach the same door ungated #6715 、Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853 、[P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717 。菜单须给推荐 + 每项长期代价。
⭐ 晋级不等于已验证 —— 须回读未兑现的前置闸 (四次实证);Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853 的越闸理由被实测正面证伪,裁决据此正式撤回 该前提。
反向验证的四种诚实结果 :预测中的红;预测漏的红(记原因);双向绿的行 (guards 非证据);因短路未测量的预测 (明说不 claim)。无测试覆盖的改动应直言「无反向验证」——伪造的比缺席的更糟 。⭐ revert 到自己的 base。⭐ 测试替身比真实实现「更能干」是缺陷发生器 (A non-dotted orderBy naming a formula field answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994 )。⭐ 读到陈旧构建的反向验证等于没测 (cli/metadata: os migrate plan still creates .objectstack/metadata/ on a fresh project (the residual half of #6743's dry-run write side effect) #7000 )。⭐ 变体验证 :再跑一个「天真修复」变体证明补偿是必需的 (cli/metadata: os migrate plan still creates .objectstack/metadata/ on a fresh project (the residual half of #6743's dry-run write side effect) #7000 )。⭐ 自我防御验证 :把缺陷重新引入且不加逃逸,确认 CI 会抓([finding][drivers] DriverQuery 已经存在,但几处驱动调用方仍在用 as any / as QueryAST 兜住冗余的 object —— 连带把 where/orderBy/fields 的检查一起关掉 #6231 得到精确 TS2353)。
⭐ PM 的机制假设会错,必须公开纠正 (九次,九次零返工)。派发令的「机制假设(须实测,鼓励证伪)」分区正为此存在。
PM 亦会程序性失误 :[docs] ADR-0005 的「Index migration」段落描述的是已不存在的机制:addSysMetadataOverlayIndex 已随 #6771 删除,段落还写着 project_id 与 partial 键 #6825 派发前未读完卡上评论;[P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717 把 STOP 误指向 [PM seat] domain:spec-surface — 🟢 os-help #6298 (应为 [PM seat] domain:spec — 🟢 os-zhuang #6017 )。教训:派发前读完全部评论 ;跨席路由要核对方座位的红线 。
⭐ ACCEPT 绑定 head sha :head 变动须重核门禁。
⭐⭐ 空窗代价 :09:26Z→14:01Z 空 ~4.5 小时,期间维护者裁了 org 作用域的 flow overlay 只在「本进程内发布后」绑定触发器,重启后静默失绑——冷启动两条读路径都把 organization_id 非空的行滤掉了 #6190 、HOLD 解除,他席按加急令正当接管。教训:(a) 长空窗后第一动作全面回源 ;(b) 遇他席正当接管立即公开 stand down 并留下免重推导的信息 。结局:两边零浪费。
⭐ 被踢出合并队列先读五项签名 (无 triage 机器评论 + head 未变 + 全绿 + mergeable_state: clean + 整队清空且同批他卡已落地 ⇒ 批次连带,可重挂;fix(metadata-protocol): tier 3 refuses to unregister an object bound to an installed package (#7012) #7093 实证)。
⭐ 「仅在门口拒绝」必须回答「是否留下未覆盖调用方」 (A non-dotted orderBy naming a formula field answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994 ):答「是」时把缺口做成标注 KNOWN HOLE 的 pin 并另立卡。
⭐ 不给自己没测过的东西定级 (metadata-fs: the FileSystemRepository chokidar watcher is inert in the production layout — its own ignored dotfile regex matches the .objectstack segment of the root path #7150 )。
⭐ 改完回头验证自己的措辞是否仍字面为真 ,结论干净也要报出这次检查(Plugin-registered metadata types can carry org-scoped rows that cold boot skips — neither refused nor reported #6992 )。
⭐ 纪律的目的达成后,剩下的形式不是保护 :docs/adr/** 的「no agent queue entry」在维护者批准到位、门禁转绿后,卡住 PR 的已不是保护而是无人按钮 —— 此时挂 AM 并留痕说明偏离理由 是正确的(docs(adr-0029): amend D3 — a tenant object overlay is its own contributor layer (#6853) #7087 ;维护者随后亲自把它加入队列)。
SKILL 复盘:前任 [skill] pm-dispatch: 5 lessons from the domain:metadata seat's first term (8 cards MERGED / 0 rework / 4 dev-side falsifications) #6644 ;本任期复盘立卡安排在座位移交/收工信号时,候选见注记 2/5/9/10/13/14/15/16/17/19。
定时器 :巡逻链 send_later(现役 trig_01UdVK1gux84j3J6xEF5sBXr @ 2026-08-10T06:15Z)。
本贴是
domain:metadata座位的唯一权威登记。 索引 =label:pm:seat,总入口 #4604。本席由维护者 2026-08-07 批准自domain:engine-core拆出(PR #6370)。单写手规则:只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论。活性判定(惰性):>24h 无产出可回收 ——⚠️ 该阈值在维护者加急令面前不适用(注记 14)。
范围
packages/metadata*(含metadata-fs、metadata-protocol、metadata-core)、packages/platform-objects。红线:⛔ 元数据格式/接受面归
⚠️
domain:spec(#6017);ObjectQL 编译/查询执行/formula/core runtime 归domain:engine-core;/meta路由本体在packages/rest归domain:cli;packages/lint属 devx;⛔content/docs/releases/恒不许碰。domain:spec(#6017) 与domain:spec-surface(#6298) 不是一回事:接受面变更(给响应 schema 加携带字段等)归 #6017;spec-surface 的第一条红线明确排除接受面。本席 08-10 在 #4717 上曾把 STOP 误指向 #6298,由 dev 更正。当前 PM
os-zhuang·session_01W6bLax4KMrSfnE1ydFU8Dw· Seated 2026-08-08T08:35Z台账(os-zhuang 任期)
已 MERGED(28 卡 28 PR,零返工零升级)
e6025e9· #6417→#6666bb7cb417c· #5079→#6687114e72795· #6036→#670061282f906· #6285→#6708a5d25734c252f71bd6· #6620(v17)→#676875e6871bf· #6660→#6767d42a92fc6· #6418→#6770bed427f7e· #6602(v17)→#67794bb6f01afe78760861· #6621(v17)→#6807271cee131· #6562→#68115e247fd6b· #6772→#681750a8d115a· #6640→#68232ab1257c99960cd2a0· #6780(v17)→#6826725c7b023· #6699→#684553aeb027f30283263c· #6848→#6989c733ae8e0· #6924→#69966443b792c· #7012(止血 C)→#7093f6e59f7e1· #6994→#70969f7a7c25aa1b66efbb· #6992→#7154bf32d4a0e· #6231→#718255da611e50f539bdc9(hotlong 手动 merge)· #6853→#7087fb5ebc5df(hotlong 亲自加入队列;D9 设计由此批准)v17 摘 7 张。派发 33 单 33 中(28 落地 + 1 在飞 + 4 STOP 设计出口;另 1 张让位他席后落地)。
后继卡必读的落地事实:
authoringChannel。control-plane-preset.ts:99一行声明为实际欠账。orderBynaming aformulafield answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994 —— SORT 轴两半。summary/rollup有真实列;COMPUTED_VALUE_TYPES是写契约不可用于 gate 排序。engine.find()直接调用方仍静默丢排序,套件内RECORD OF A KNOWN HOLEpin 应在engine.find()still drops aformulaORDER BY silently — decide whether the engine refuses or keeps its internal-caller tolerance #7095 落地时变红。os migrate planstill creates.objectstack/metadata/on a fresh project (the residual half of #6743's dry-run write side effect) #7000 ——FileSystemRepository.start()不再建目录。os migrate plan自称 dry-run,却仍会在全新项目上创建空数据库文件(#6469 的残余写副作用) #6743 的数据库半边(PR fix(cli,driver-sql):os migrate planstops creating a database on a fresh project (#6743) #6997)仍未合并。落点是packages/metadata-fs。DriverQuery已经存在,但几处驱动调用方仍在用as any/as QueryAST兜住冗余的object—— 连带把 where/orderBy/fields 的检查一起关掉 #6231 —— 根修复是把database-loader.ts三个读 helper 的参数改成DriverQuery,在九个调用点恢复检查。三个相邻 engine cast 被EngineQueryOptionsSchema.searchrejects the bare query string that ADR-0061 D1 calls canonical — so every engine caller that wants it mustas any, losing the whole query's checking #7178 的 spec 分歧阻塞,保持原样 + 注释。base = overlay ?? own,解析逐位不变;assertSingleOwnerPerObject字面不变;base 选择按 kind 非 priority。在飞(1 张)
getArtifactItem读 owner contributor;provisionPrimary/provisionSearchCompanion的own门改base 层门(否则nameField在每个被 overlay 的对象上都变);Anobjectoverlay write over a packaged object is silently discarded byregisterObject's ownership rule whilesaveMetaItemreports success #6995 三绑定。late-install 与 ADR-0005 的「Amended by」指针也在本卡。决策箱(维护者)—— 1 张
saveMetaItem响应信封):STOP 于 spec 接受面,且耦合是实测的(只在 metadata-protocol 加字段 ⇒ objectql conformance gate 三case 红,[#5563 附带裁决] SaveMetaItemResponseSchema 补齐实现实际返回的字段(version / seq / state / projectionApplied) #5745 的「declared = returned」闸)。前提确认:gate 产生 advisories(runtime-gate.ts:221)又丢弃(runtime-authoring-gate.ts:415-425);成功路径实测errors=0 / advisories=1,写入 200 而作者永不可见。evaluateRuntimeAuthoringGate类型是=> Error | null,成功路径根本没有返回通道 —— 这是加通道非穿值。三问菜单已出(荐:①声明为可选字段 ②rulesRun若随行须在.describe()写明是 gate id 非 registry id ③save 门先行、publish 门排 [finding]POST /meta/:type/:name/publishis a served REST route with NO spec declaration — the #5745 "declared = returned" discipline covers only the save door #7294 后、不对称写进 changeset)。队列(2 张)
saveMetaItem/promoteDraftForPublish(维护者 08-07 迁移裁定),是本席的面,本席 08-09 记的「属 devx 不认领」是错的(把 [finding]validateEmptyCombinatorsgates the runtime publish path forflowonly — the other filter-carrying metadata types reach the same door ungated #6715 测到的规则注册位置当成了整卡落点);(b) 区域冲突已随 [P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717 STOP 解除。真实前置:false-positive 预算所需的 storedsys_metadata语料仓内不存在,须先解决再派。卡正文逐字禁止一行式交付。target:v17板持续为空。本任期新立跨车道卡(⛔ 只记录不催)
#7150(chokidar 监听在生产布局下疑似从未触发,立卡者未自行定级因未测严重性输入)、#7177(drivers:测试文件还有 10 个同形状站点,一个拼作
as never)、#7178(spec:EngineQueryOptionsSchema.search与QueryAST.search/ADR-0061 D1 分歧,阻塞 #6231 三个 cast)、#7294(spec:POST /meta/:type/:name/publish是已服务的 REST 路由却零 spec 声明)、#7095(engine-core)、#6995(被 D9 吸收,#7277 落地后应可关)、objectui#3950。运维注记(交接必读)
method: MERGE(请求 SQUASH)——判准始终是队列分支出现或 main 上有 commit。os migrate plan自称 dry-run,却仍会在全新项目上创建空数据库文件(#6469 的残余写副作用) #6743「已落地」(实为 open draft)、docs(adr-0005): amend the overlay-index section instead of rewriting it #6981「未落地」(实为 17 小时前已合并,窗口 grep 之误 —— 查落地绝不可用git log -N,须无界/按日期/读merged字段)、[P2] 运行时授权门扩到 object 写入 + 全量 runtime-safe 规则快照(#4463 P1 之后) #4716+[P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717「被 [metadata-core]sys_view_definition的"活跃行唯一"从未生效——归档视图仍占用 (name, organization_id, owner) 名额 #5839 阻塞」([metadata-core]sys_view_definition的"活跃行唯一"从未生效——归档视图仍占用 (name, organization_id, owner) 名额 #5839 在本席上任前就已关闭,该阻塞整个任期从未成立)。模式相同:把一句写下来的状态描述当成当前事实,不核实其依赖条件是否仍成立。凡「X 被 Y 阻塞 / X 已落地 / 落点在 Z」,消费前一律回源。git checkout <ref> -- <path>首提交前静默回退。复盘项:进 os-dev 定义。engine.ts一天漂 ~800 行;repository.ts换了包)。validateEmptyCombinatorsgates the runtime publish path forflowonly — the other filter-carrying metadata types reach the same door ungated #6715、Registry heal restores the metadata-map view but never re-registers a packaged contributor definition an overlay save replaced #6853、[P2/P3] 运行时授权门的 advisory findings 要进响应并被 Studio 渲染 + docs「the gate」补第四列(#4463 收尾) #4717。菜单须给推荐 + 每项长期代价。orderBynaming aformulafield answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994)。⭐ 读到陈旧构建的反向验证等于没测(cli/metadata:os migrate planstill creates.objectstack/metadata/on a fresh project (the residual half of #6743's dry-run write side effect) #7000)。⭐ 变体验证:再跑一个「天真修复」变体证明补偿是必需的(cli/metadata:os migrate planstill creates.objectstack/metadata/on a fresh project (the residual half of #6743's dry-run write side effect) #7000)。⭐ 自我防御验证:把缺陷重新引入且不加逃逸,确认 CI 会抓([finding][drivers]DriverQuery已经存在,但几处驱动调用方仍在用as any/as QueryAST兜住冗余的object—— 连带把 where/orderBy/fields 的检查一起关掉 #6231 得到精确 TS2353)。mergeable_state: clean+ 整队清空且同批他卡已落地 ⇒ 批次连带,可重挂;fix(metadata-protocol): tier 3 refuses to unregister an object bound to an installed package (#7012) #7093 实证)。orderBynaming aformulafield answers 200 in arbitrary order — the sort is silently dropped (measured on driver-sql + driver-memory) #6994):答「是」时把缺口做成标注 KNOWN HOLE 的 pin 并另立卡。ignoreddotfile regex matches the.objectstacksegment of the root path #7150)。docs/adr/**的「no agent queue entry」在维护者批准到位、门禁转绿后,卡住 PR 的已不是保护而是无人按钮 —— 此时挂 AM 并留痕说明偏离理由是正确的(docs(adr-0029): amend D3 — a tenant object overlay is its own contributor layer (#6853) #7087;维护者随后亲自把它加入队列)。定时器:巡逻链 send_later(现役
trig_01UdVK1gux84j3J6xEF5sBXr@ 2026-08-10T06:15Z)。