本贴是 domain:spec-surface 座位的唯一权威登记。 座位贴协议(维护者 2026-08-06 批准):索引 = label:pm:seat,总入口 #4604 (指针页)。本席由维护者 2026-08-07 批准自 domain:spec 拆出。
单写手规则 :只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论(评论只作交接存档,不承载状态)。空缺争用:动手前重拉正文、审计评论时间戳先到先得、写后回读。活性判定(惰性,无心跳,仅接管冲突时评估):>24h 无产出即可回收。
范围
packages/spec 的文本面 :describe / JSDoc / 墓碑迁移散文 / 错误 guidance 与 alias 表 —— 即契约「怎么解释自己」的那些行。
准入判据 = 校验不变量 :改动前合法的元数据改动后逐字节依然合法,非法依然非法;客户零迁移,changeset 恒 patch。
三条红线:
产物随源走 :describe 改动会重生成 content/docs/references/** 与 json-schema manifest 的 description 字段;registry reason 散文投影进 docs/protocol-upgrade-guide.md 与 spec-changes.json(#6495 实测)—— 产物变更归触发它的源 PR,跑 check:generated 重生成提交、⛔ 不手改;同一生成树在飞重生成 >1 时按 #4675 四步序串行。
> ⚠️ 判据是「改的是不是渲染输入」,不是「改的是不是文本」 (2026-08-07/08 五类实证):#6389 摘 ledger 数据行 ⇒ 11 页重生成;#5059 模块头 doc block ⇒ #6447 恰好 6 页重生成;registry reason ⇒ upgrade-guide + spec-changes 重生成(#6495 );guidance / error-map 字符串 ⇒ 零重生成(#6423 /#6453 );contracts/** 纯 JSDoc ⇒ 零重生成(#6463 )。
卡点自报信号
队列水位:连续 3 天 >15 张或平均滞留 >48h → 提频/加 batch/继续拆域;
同一 references 树在飞重生成 PR >2 → 打包;
分诊脉冲(单次灌入 20+)→ 一次性 sweep 专项。
运行模式 :sweep-first(试点 #6243 ;本任 #6495 双卡包再证 —— 同类同文件卡打包 = 串行约束消解 + 固定开销摊薄)。
当前 PM(会话或 Routine ID)
🟢 In office : GitHub os-project-manager / session session_018ffcE95NaMJcL9XJ9VDYgk / takeover 2026-08-07T16:45Z — the maintainer-designated incoming PM per the 16:40Z handover order ("我让新项目经理接手").
前任 :hotlong / session_01JTSZAjgtL3oR6YcpNDhW3T,2026-08-07T13:45Z → 16:40Z 注销;其三项在手由其跟完(分工修正条款已收官)。
说明 — 座位现状(2026-08-08T02:55Z 刷新)
在飞(本席)
空。 队列 0 可派发、0 阻塞(02:42Z 扫描)。姿态:待命 (60–70min 巡检,五职责)。
账面(本任期,2026-08-07T16:45Z 起)
6 卡合入(5 PR)+ 1 卡证伪收卡 + 1 张流程发现单;0 返工;0 决策箱新增;发版板(target:v17)清零。
待分诊:#6380 (cli flaky,不在本席)。前任期内闭环:#5622 /#6368 、#5767 /#6364 、#5955 /#6375 、#5783 /#6389 、#5997 /#6426 。
E. 实测结论(接任者直接可用)
渲染输入判据 (见上收窄框,五类实证)。
耗时基线:S 卡 ~45–65min 至 PR,M 卡 ~50–90min;判死看 93–96min 上沿。宿主 worker 重启杀 resume 的 subagent 及通知 —— 重启后「已 resume 待报告」一律按报告已丢,兜底三条件(PR 绿 + 探活证死/2h 无推送 + 报告未达)审完即走。
探针回执即活性读数 (queued=活 / resumed=曾死);中期探针(~40min)无害且常促早推。
flaky: format.exit-code.test.ts pins timer.elapsed() + 531 to a fixed low byte — any 1ms of scheduling delay turns it red #6380 flaky 签名 :format.exit-code.test.ts → expected 20 to be 19。重投必然有效。
拒收/删除类复核硬判据 :删除类 PM 自跑 origin/main 引用面普查;拒收类最低断言 code + status。
提前复核路径 + 翻转前置条件 :PR 一出即复核、ACCEPT 先落 issue,但 ready 翻转必须等 dev 终报已达或确认死亡;活而未报不翻 (fix(spec): InboxListResult.unreadCount stops documenting the window count it stopped being (#6438) #6463 竞态实测:共享身份下 dev 无法从 actor 区分 PM 翻转,会防御性转回 draft)。按此时序 docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2 areas caveat (#5781, #5809) #6495 零竞态落地。
被合并解锁的卡,解锁前在合并后的 ref 上重验卡内文件面 (widget-contract.mdx 整页 + quick-reference.mdx 一行仍在教 #5055 退役的 WidgetManifest 家族 —— 手写散文面,门禁不覆盖 #6413 实测;流程单 pm-dispatch: a card unblocked BY a merge must re-verify its carded files AT the merged ref — the unblocking commit is the one most likely to have already fixed them #6465 )。
编辑口径类规则 (a)(2026-08-08 立,[spec] packages/spec/CHANGELOG.md 的 17.0.0-rc.2 段落仍带着「the server does not walk areas」—— GA 段落改对后同一文件会自相矛盾 #5809 /docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2 areas caveat (#5781, #5809) #6495 ) :已发布 CHANGELOG 段永不改写,更正以 forward-note 就地加入并指向正确段落;未消费 .changeset/*.md 是 GA 输入、直接更正;活源散文(墓碑/registry/guidance)直接更正。后续同类卡直接继承,免决策往返。
派发令口述措辞也是可证伪供词 :docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2 areas caveat (#5781, #5809) #6495 的「四个枚举」实为三个(ADR-0049 定去留:NotificationActionSchema / EmbedConfigSchema 实测没有授权门(#4001 批 14 改判的两个站点) #5015 已退役其一)—— dev 前提核验拦下;裁决/机制假设分区让证伪三小时内发生三次且全部正确。PM 供词里的具体数字 尤其要标注为「须实测」。
F. 跨车道备忘
ADR-0117 D1 声明面:ownership 枚举扩展 'business_unit'(须与列注入同 PR 或严格后置) #5678 (ownership 枚举,协议席):fix(spec): systemFields.owner guidance no longer claims ownership: 'org' picks a principal (#6365) #6423 的 batch-20 钉子在其联动清单。
把 44 个 strictUnknownKeyError 直调点批量迁到 strictObject,棘轮降到 0(路线 1 消不掉手抄数组与 shape 的漂移) #5593 (44 直调点迁移,协议席,blocked):fix(spec): put the fix before the explanation in the three hand-written unrecognized_keys error maps (#6416) #6453 的 13 条次序钉子若随方向 2 折入,随迁不删。
三个手写 unrecognized_keys error map 绕过 strictUnknownKeyError,把说明句夹在「哪个键错了」与处方之间 —— #5955 的修法与 #5593 的迁移都够不到 #6416 方向 2 (三 map 折入 guidance,set-keyed 形态)留档未来本席卡。
objectui 配套:#5055 退役 spec 的 WidgetManifest / WidgetSource 后,parity tripwire 按设计打红,packages/types/src/widget.ts 的锚点注释指向不存在的名字 #6275 (RuntimeXxx 命名 A/B,repo:objectui,v17)未裁;A 胜出 ⇒ widget-contract.mdx 一句名字替换(记在 objectui 配套:#5055 退役 spec 的 WidgetManifest / WidgetSource 后,parity tripwire 按设计打红,packages/types/src/widget.ts 的锚点注释指向不存在的名字 #6275 卡上)。
pm-dispatch: a card unblocked BY a merge must re-verify its carded files AT the merged ref — the unblocking commit is the one most likely to have already fixed them #6465 (解锁重验流程单)已入 devx 队列。
归档:[spec] hook.zod.ts 的 positions JSDoc 仍把 services.sharing.canEdit(…) 举为「hook 可以这么读」的正例 —— #5720 已证实 hook 拿不到 services #6001 、sweep(spec-surface): 5-item description-surface truth sweep — one claim, one PR, per-item checklist review (#6085 #6081 #6137 #6065 #5676) #6243 /docs(spec): 七项 description-surface truth sweep —— 一 PR 七条 Fixes,逐项清单评审 (#6243) #6288 、ADR-0122 第二期:major 窗口翻转裸名为解析态语义 + XInput 去留 #6083 /spec: ADR-0122 phase 2 — flip bare names to parsed semantics (#6083) #6279 。
G. 环境注记(⛔ 接任会话必读,每条都咬过人)
直连 api.github.com 返回 403 —— GitHub 仅 MCP 可达;靠写后回读。
PR 事件订阅工具不可用 ;例外:会话内开出的 PR 自动带 webhook (五次实证,入队/合并/draft 转换均实时)。其余看护走 send_later 定点。
共享身份让 actor 字段失去区分度 :PM 与本会话 dev 的动作同名 —— PR 状态类动作靠评论留痕自证(E6 竞态根源);夜间另有同账号会话做过 sweep 晋级([spec] packages/spec/CHANGELOG.md 的 17.0.0-rc.2 段落仍带着「the server does not walk areas」—— GA 段落改对后同一文件会自相矛盾 #5809 /[spec] #4610/#4535-C3 Notification 退役的墓碑与 changelog 需事实更正:objectui 侧确有 export … from 消费者;FROM→TO 指引会引导编译失败的替换 #5781 ,自称维护者授权、登记 [PM seat] triage (objectstack-wide) — 🟢 Routine #6015 ),本席实质复核路由后消费,出处在认领评论。
宿主 worker 会不定期重启 :杀 subagent 与通知,MCP 短暂断连;定时器在服务端存活。
共享身份 REST 配额会打满 ;被拒时完整状态写进定点文本排队,对齐 :00 重试。
本地检出是 shallow —— 历史读数先 git fetch origin main --deepen=100。
Bash cwd 每次调用重置 —— 一律 git -C /home/user/objectstack …。
⚠️ 已删除的 send_later 定时器仍会投递 —— 每枪文本必以幂等头开头。
⚠️ GitHub sanitizer 吞裸尖括号、实体化引号,连 PR 正文的 > 引用标记也会被实体化 (docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2 areas caveat (#5781, #5809) #6495 实测,dev 改用斜体绕过)—— 字面尖括号写 HTML 实体,写后回读确认。
MCP list_issues 多标签过滤是 OR ;issue_write 的 labels 是整组替换 (先取现值合并再写)。
本贴是
domain:spec-surface座位的唯一权威登记。 座位贴协议(维护者 2026-08-06 批准):索引 =label:pm:seat,总入口 #4604(指针页)。本席由维护者 2026-08-07 批准自domain:spec拆出。单写手规则:只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论(评论只作交接存档,不承载状态)。空缺争用:动手前重拉正文、审计评论时间戳先到先得、写后回读。活性判定(惰性,无心跳,仅接管冲突时评估):>24h 无产出即可回收。
范围
packages/spec的文本面:describe / JSDoc / 墓碑迁移散文 / 错误 guidance 与 alias 表 —— 即契约「怎么解释自己」的那些行。准入判据 = 校验不变量:改动前合法的元数据改动后逐字节依然合法,非法依然非法;客户零迁移,changeset 恒 patch。
三条红线:
domain:spec(协议席)。判据看「合法集合变没变」,不看行数(先例:meta: bind Zod schemas for webhook / connector / sharing_rule WITHOUT registering the kinds — close the unvalidatedPUT /metawrite hole (#2657 audit, option A) #6245 / feat(spec): action param 的 options[] 声明逐选项 visibleWhen (#5016) #6235)。domain:spec-tooling(C 包 program card:协议工具链/门禁车道(domain:spec-tooling)—— 整包移交待接收 #5163 边界);docs 手写页教约面漂移按 FormField/FormSectionvisibleWhendescribe 宣称 runtime 表单绑定current_user,但字段级条件规则的求值面从未绑过它——按文档写的谓词必然 fault 并 fail-open #6146 先例归 surface(widget-contract.mdx 整页 + quick-reference.mdx 一行仍在教 #5055 退役的 WidgetManifest 家族 —— 手写散文面,门禁不覆盖 #6413 分诊确认)。content/docs/releases/恒不许碰(全仓通则)。产物随源走:describe 改动会重生成
content/docs/references/**与 json-schema manifest 的 description 字段;registryreason散文投影进docs/protocol-upgrade-guide.md与spec-changes.json(#6495 实测)—— 产物变更归触发它的源 PR,跑check:generated重生成提交、⛔ 不手改;同一生成树在飞重生成 >1 时按 #4675 四步序串行。>⚠️ 判据是「改的是不是渲染输入」,不是「改的是不是文本」(2026-08-07/08 五类实证):#6389 摘 ledger 数据行 ⇒ 11 页重生成;#5059 模块头 doc block ⇒ #6447 恰好 6 页重生成;registry reason ⇒ upgrade-guide + spec-changes 重生成(#6495);guidance / error-map 字符串 ⇒ 零重生成(#6423/#6453);contracts/** 纯 JSDoc ⇒ 零重生成(#6463)。
卡点自报信号
运行模式:sweep-first(试点 #6243;本任 #6495 双卡包再证 —— 同类同文件卡打包 = 串行约束消解 + 固定开销摊薄)。
当前 PM(会话或 Routine ID)
🟢 In office: GitHub
os-project-manager/ sessionsession_018ffcE95NaMJcL9XJ9VDYgk/ takeover 2026-08-07T16:45Z — the maintainer-designated incoming PM per the 16:40Z handover order ("我让新项目经理接手").前任:
hotlong/session_01JTSZAjgtL3oR6YcpNDhW3T,2026-08-07T13:45Z → 16:40Z 注销;其三项在手由其跟完(分工修正条款已收官)。说明 — 座位现状(2026-08-08T02:55Z 刷新)
在飞(本席)
空。 队列 0 可派发、0 阻塞(02:42Z 扫描)。姿态:待命(60–70min 巡检,五职责)。
账面(本任期,2026-08-07T16:45Z 起)
6 卡合入(5 PR)+ 1 卡证伪收卡 + 1 张流程发现单;0 返工;0 决策箱新增;发版板(target:v17)清零。
be87153a419:25Zd2b97c3ac20:58Zbf0ae997622:18Z33e0385b023:5xZeb91ebacb02:49Z待分诊:#6380(cli flaky,不在本席)。前任期内闭环:#5622/#6368、#5767/#6364、#5955/#6375、#5783/#6389、#5997/#6426。
E. 实测结论(接任者直接可用)
format.exit-code.test.tspinstimer.elapsed() + 531to a fixed low byte — any 1ms of scheduling delay turns it red #6380 flaky 签名:format.exit-code.test.ts→expected 20 to be 19。重投必然有效。origin/main引用面普查;拒收类最低断言code+status。InboxListResult.unreadCountstops documenting the window count it stopped being (#6438) #6463 竞态实测:共享身份下 dev 无法从 actor 区分 PM 翻转,会防御性转回 draft)。按此时序 docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2areascaveat (#5781, #5809) #6495 零竞态落地。packages/spec/CHANGELOG.md的 17.0.0-rc.2 段落仍带着「the server does not walkareas」—— GA 段落改对后同一文件会自相矛盾 #5809/docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2areascaveat (#5781, #5809) #6495):已发布 CHANGELOG 段永不改写,更正以 forward-note 就地加入并指向正确段落;未消费.changeset/*.md是 GA 输入、直接更正;活源散文(墓碑/registry/guidance)直接更正。后续同类卡直接继承,免决策往返。areascaveat (#5781, #5809) #6495 的「四个枚举」实为三个(ADR-0049 定去留:NotificationActionSchema/EmbedConfigSchema实测没有授权门(#4001 批 14 改判的两个站点) #5015 已退役其一)—— dev 前提核验拦下;裁决/机制假设分区让证伪三小时内发生三次且全部正确。PM 供词里的具体数字尤其要标注为「须实测」。F. 跨车道备忘
systemFields.ownerguidance no longer claimsownership: 'org'picks a principal (#6365) #6423 的 batch-20 钉子在其联动清单。strictUnknownKeyError直调点批量迁到strictObject,棘轮降到 0(路线 1 消不掉手抄数组与 shape 的漂移) #5593(44 直调点迁移,协议席,blocked):fix(spec): put the fix before the explanation in the three hand-written unrecognized_keys error maps (#6416) #6453 的 13 条次序钉子若随方向 2 折入,随迁不删。WidgetManifest/WidgetSource后,parity tripwire 按设计打红,packages/types/src/widget.ts的锚点注释指向不存在的名字 #6275(RuntimeXxx 命名 A/B,repo:objectui,v17)未裁;A 胜出 ⇒ widget-contract.mdx 一句名字替换(记在 objectui 配套:#5055 退役 spec 的WidgetManifest/WidgetSource后,parity tripwire 按设计打红,packages/types/src/widget.ts的锚点注释指向不存在的名字 #6275 卡上)。hook.zod.ts的positionsJSDoc 仍把services.sharing.canEdit(…)举为「hook 可以这么读」的正例 —— #5720 已证实 hook 拿不到services#6001、sweep(spec-surface): 5-item description-surface truth sweep — one claim, one PR, per-item checklist review (#6085 #6081 #6137 #6065 #5676) #6243/docs(spec): 七项 description-surface truth sweep —— 一 PR 七条 Fixes,逐项清单评审 (#6243) #6288、ADR-0122 第二期:major 窗口翻转裸名为解析态语义 + XInput 去留 #6083/spec: ADR-0122 phase 2 — flip bare names to parsed semantics (#6083) #6279。G. 环境注记(⛔ 接任会话必读,每条都咬过人)
api.github.com返回 403 —— GitHub 仅 MCP 可达;靠写后回读。packages/spec/CHANGELOG.md的 17.0.0-rc.2 段落仍带着「the server does not walkareas」—— GA 段落改对后同一文件会自相矛盾 #5809/[spec] #4610/#4535-C3 Notification 退役的墓碑与 changelog 需事实更正:objectui 侧确有export … from消费者;FROM→TO 指引会引导编译失败的替换 #5781,自称维护者授权、登记 [PM seat] triage (objectstack-wide) — 🟢 Routine #6015),本席实质复核路由后消费,出处在认领评论。:00重试。git fetch origin main --deepen=100。cwd每次调用重置 —— 一律git -C /home/user/objectstack …。>引用标记也会被实体化(docs(spec): correct #4610's falsified "zero importers" evidence and its uncompilable FROM → TO, forward-note the stale rc.2areascaveat (#5781, #5809) #6495 实测,dev 改用斜体绕过)—— 字面尖括号写 HTML 实体,写后回读确认。list_issues多标签过滤是 OR;issue_write的labels是整组替换(先取现值合并再写)。