Skip to content

[PM seat] domain:spec-surface — 🟢 os-help #6298

Description

@qq9340100

本贴是 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。

三条红线:

渲染输入判据 —— 现在有免费代理,不必再测

⚠️ 判据是「改的是不是渲染输入」,不是「改的是不是文本」。

免费代理(2026-08-09 实证):看 PR 上 Build Docs 作业是 run 还是 skipped。 run = 触达参考页(#6852 重生成 permission.mdx 两格),skipped = 不触达(#6846)。双向实证,任何 PR 一眼可读。

机制:packages/spec/scripts/build-docs.ts:186if (!entry.name.endsWith('.zod.ts')) continue; —— 生成器只遍历 .zod.ts

九类实证:

触达
.describe() ✅ 参考页(#6852)
registry reason ✅ upgrade-guide + spec-changes(#6495)
registry acceptanceCriteria upgrade-guide —— spec-changes.json 不含该字段(#6875 实测,grep -c = 0)
#6389 ledger 数据行 ✅ 11 页
#5059 模块头 ✅ 恰好 6 页(#6447)
guidance / error-map ❌ 零(#6423/#6453)
contracts/** 纯 JSDoc ❌ 零(#6463)
TSDoc @example ❌ 零(#6729 证伪)
.zod.ts 文件的 JSDoc ❌ 零(#6846/#6759)

⚠️ 未决细分(2026-08-10 提出,#7142 在测):上表「ledger 数据行 ✅ 11 页」测的是verdict 数据,未区分同文件里的 evidence / note 散文字段是否同样触达。#7142 用免费代理当场判,回来后把结论补进本表。

卡点自报信号

  1. 队列水位:连续 3 天 >15 张或平均滞留 >48h → 提频/加 batch/继续拆域;
  2. 同一 references 树在飞重生成 PR >2 → 打包;
  3. 分诊脉冲(单次灌入 20+)→ 一次性 sweep 专项。

运行模式:sweep-first。并发:维护者 2026-08-08 令「至少三个」,实测舒适区 4;5 dev + 1 审计会打满共享身份 REST 配额。

当前 PM(会话或 Routine ID)

🟢 In office: GitHub os-help / session session_016R9de1FqP7NvwKvqXi92Gh / takeover 2026-08-10T01:30Z。

前任:os-project-manager / session_018ffcE95NaMJcL9XJ9VDYgk,2026-08-07T16:45Z → 2026-08-10T01:24Z 维护者指示下班;在飞 0、队列自述 0、心跳全停(全部触发器 run_once_fired 自灭)。⚠️ 该会话未执行交接收尾第 4 步(正文/标题/assignee 未翻转),本席接管时补齐;其交接快照见本贴 2026-08-10T01:23:59Z 评论,内容已折叠进下面 E17–E26 与账面。

再前任:hotlong / session_01JTSZAjgtL3oR6YcpNDhW3T,2026-08-07T13:45Z → 16:40Z 注销。

说明 — 座位现状(2026-08-10T01:4xZ)

在飞 1 / 队列 0

⚠️ 接管实测教训:前任交接快照写「队列 0」,实测 1 张可派 + 2 张成员 + 2 张 finding —— 分诊席在 2026-08-09T21:2xZ(交接前约 4 小时)灌入了一批。接任先自查队列,⛔ 不要继承前任的队列计数。

健康指标(2026-08-10T01:4x 实测)

账面

前任任期(2026-08-07T16:45Z → 2026-08-10T01:24Z):30 卡闭环 + 10 张 finding 立卡待分诊;0 返工;0 决策箱新增;发版板本席清零 ×2。

三条主线(细节见交接快照评论):#6856 route-D 裁决线(5 卡,类钉语料 54 → 80)、过期状态句家族(#6947#6993#7064)、审计双轴(轴①7,644 条 describe;轴③625 条 liveness 记录 —— B 向台账危险面干净)。

本任期(os-help,2026-08-10T01:30Z 起):见轮次审计评论。

决策箱(本席相关 0;只列不 nag)

全仓 7:#7144(identity)、#7119(repo:objectui)、#7095#7022(devx)、#7020(cli)、#6975(repo:objectui)、#6644(devx —— pm-dispatch SKILL 改进提案)。另 #7088(平台 agent 真名册 —— ⛔ 勿让 dev 自选计数)按前任记录待维护者/云侧定,当前不带该标签。

E. 实测结论(接任者直接可用,按号引用)

  1. 渲染输入判据 —— 见上,含免费代理与未决细分。
  2. 耗时基线:S 卡 ~40–65min 至 PR,M 卡 ~50–90min;判死看 93–96min 上沿。宿主 worker 重启账号级 session limit都会整批杀 dev(后者报 You've hit your session limit · resets HH:MM);reset 后 SendMessage 原 agent 即从 transcript 复活续跑,已推送工作零损失
  3. 探针回执即活性读数;中期探针无害且常促早推。
  4. 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.tsexpected 20 to be 19
  5. 拒收/删除类复核硬判据:删除类 PM 自跑引用面普查;拒收类最低断言 code + status
  6. 提前复核 + 翻转前置(E6):PR 一出即复核、ACCEPT 先落 issue;ready 翻转必须等 (a) 两门禁族作业 success 且 (b) dev 终报已达或确认死亡。序:先 ready 后 arm(draft 转换掉队列与 auto-merge)。
  7. 被合并解锁的卡,解锁前在合并后 ref 重验文件面(E7)
  8. 编辑口径 (a):已发布 CHANGELOG 永不改写;未消费 changeset 直接改;活源散文直接改。
  9. PM 供词里的数字与锚点一律标「须实测」(E9) —— 六度实证。卡片正文也会错,不只是 PM 的口述。⚠️ 交接台账同样会错:2026-08-10 接管时本贴继承的 sweep(spec-surface): 5-item description-surface truth sweep — one claim, one PR, per-item checklist review (#6085 #6081 #6137 #6065 #5676) #6243 备忘(「容器卡未关 = 发版板假条目」)实测已于 2026-08-09T10:29Z 关闭且标签已清 —— 陈旧备忘会让接任者追一个幽灵。继承的每条 ⚠️ 备忘,引用前先验一次。
  10. 卡片文件面以读完整正文为准(E10);撞面优先拆两半派(Part of 不带 Fixes)。
  11. 门控判断只读 issue_read / git log,永不读 search_issues(E11) —— 索引可滞后 2.5h+,曾致四卡错挂 50min。搜索只用于发现。
  12. 补丁轮续派原 dev(E12),SendMessage 投诊断签名 + 修法口子 + 红线。
  13. changeset 判据(E13,已收口):判「这段散文有没有触达使用方」,不判「文件发不发布」。参考页 / .d.ts / parse 可达错误串,任一即算 ⇒ patch。三者皆不沾 ⇒ skip-changeset(fix(spec): stop teaching the retired ETL layer as a live retry surface in flow.zod.ts (#6630, part 2) #6753)。关键 datum:docs(spec): describeHighPrivilegeBits 的裸通配符举例换成仍带 '*' 的 viewer_readonly (#6696) #6846 的源文件不在 files glob,但 dist 在,文案经 dist/**/*.d.ts 悬停触达 ⇒ patch(先例 8ad609c69)。
  14. ⚠️ 字面量 pin 检索对转义正则断言是盲的(E14) —— expect(msg).toMatch(/app\.aria/) 字面量搜不到。问「这段文案有没有 pin」必须连 toMatch(/…/) 写法一起搜。
  15. 队列失败三路分诊 + 同签名只重排一次(E15) —— ①失败在本 PR 触及的包 ⇒ 真回归;②无关且他处见过 ⇒ flaky,立卡别重排;③两者皆非 ⇒ 可能同批语义冲突,重排一次。⛔ 同签名再红 = 升级。
  16. dev 死亡时,其未竟的只读核验步骤 PM 可自行完成(E16) —— ⛔ 边界:只读核验可代做,写代码不行
  17. 不许换新固定计数;能挂门维护的台账就不手写计数(E17)。
  18. 无绿对照不重排队列(E18) —— 两张无关 PR 同签名红 = 批次敏感,自动队列会自愈。
  19. 双向都沉默的平局选 fail closed(E19)。
  20. 静态普查对继承结构双盲(E20) —— 普查必须执行,不能 grep。
  21. 会钉死错误数字的 pin 比没有 pin 更糟(E21);判据 = 被钉事实是不是文本。
  22. 带日期重核验 + 显式「已被 #X 证伪」标记(E22)(liveness note 惯用法)。
  23. 行式 grep 对跨行拼接双盲(E23),缝合正则须双向(本仓 + 在行首)。
  24. 审计/复核一律对 origin/main 提取(E24) —— 共享 checkout 落后数天。
  25. dated 证伪注记不复述旧句原文(E25) —— 防污染未来 census。
  26. dev 轮询链会静默死亡(E26):CI 收敛 45min 无终报 ⇒ 直读 CI + 三替代物有记录翻转,唤醒补报不阻塞(实测:唤醒后 72s 交齐)。
  27. liveness 台账不是纯散文面(E27,2026-08-10 提出,[sweep] Liveness-ledger citation repair — re-cite measured readers for the stale-evidence rows of #7132 + #7133 #7142 在测) —— check:liveness 疑似解析并校验 repo-local evidence 路径(不可解析即 exit 1),verifiedAt / evidenceScope 格式错亦 FAIL,跨仓引用靠 objectui: 前缀而非本地解析。⇒ 「引证修复 = 改散文」这个直觉在本文件族可能不成立;派发时按「须实测的机制假设」下发,勿当既成事实。[sweep] Liveness-ledger citation repair — re-cite measured readers for the stale-evidence rows of #7132 + #7133 #7142 回来后定稿。

本席自我更正台账(公开留档,⛔ 后两条旧说法禁止再引用)

65→70 注册表数字(#6619 更正)、「模板折不了」(#6805 证伪)、「有活消费者」实为 re-export(#6934)「import.meta 值 2 tsc error」引用三次后证伪(#6947/#6919 双更正)
新增(2026-08-10,本席):继承的 #6243 备忘写「容器卡未关」,实测已关 —— 见 E9 增补。

F. 跨车道备忘

待分诊供给(⛔ 只读跟踪,domain:* 单一生产者是分诊席)

#6988#6919(第 3 项守卫非可选,成本理由已更正)、#6763#6940#6750#6842#6855(domain:cli)、#7030#7047#7088#7112、objectui#3901、objectui#3974。
(#7129#7133 已由分诊席定级:#7132/#7133 → sweep #7142;#7129/#7130repo:objectui;#7131 → 持有 finding。)

G. 环境注记(⛔ 接任会话必读,每条都咬过人)

  • 直连 api.github.com 返回 403 —— GitHub 仅 MCP 可达;靠写后回读。
  • 会话内开出的 PR 自动带 webhook;其余看护走 send_later 定点。⚠️ 已删除/过期的定时器仍会投递,每枪文本必以幂等头开头、只写判据不写结论,且必须 date -u 取准时间 —— 心跳文本曾偏差数小时。
  • 共享身份让 actor 字段失去区分度 —— PR 状态类动作靠评论留痕自证。⚠️ 舰队实际在用多账号(os-help / os-project-manager / os-zhuang / qq9340100 / hotlong / baozhoutao),评论作者字段是平台盖章的硬读数。
  • 宿主 worker 会不定期重启;定时器在服务端存活。
  • 共享身份 REST 配额会打满(实测水位 5 dev + 1 审计;前任一日六次打满,混合行为 —— issue_write 能过时 update_pull_request 可能 403)。git 协议读数(git log / ls-remote)不吃 REST 配额 —— 配额紧张时一律用它。search_issues 必带 minimal_output: true
  • 本地检出 shallow —— 先 git fetch origin main --deepen=100Bash cwd 每次重置 —— 一律 git -C,⛔ 不用 cd X && …(cd 失败会静默在错仓执行)。
  • ⚠️ GitHub sanitizer 吞裸尖括号;MCP 读 issue 正文可能截断 —— 派发令要求 dev 直接在 GitHub 上读全文。
  • list_issues 多标签过滤是 OR;issue_writelabels 整组替换(先读现值合并再写)。⚠️ pm:queuepm:dispatched 会因 dev 认领时的整组回写并存 —— 派发后与收卡后各回读一次清残留
  • ⚠️ issue_read get_labels 不解析 PR 号(GraphQL 只认 issue);PR 标签写用 issue_write 可行(REST 视 PR 为 issue)。功能性回读:补打 skip-changesetrerun_failed_jobs,门禁转绿即证明标签生效。
  • ⚠️ 门禁清单散在多个 workflow:lint.yml 61 条,另有 7 条在 ci.yml / spec-liveness-check.yml / validate-deps.yml / release.yml / showcase-smoke.yml本席主门 check:liveness / check:empty-state / check:variant-docs / check:strictness-ledger 全在 spec-liveness-check.yml,不在 lint.yml —— 派发令点名门禁族时当场 grep -rn 'pnpm.*check:' .github/workflows/*.yml 取数,⛔ 不抄记忆。
  • ⚠️ TEST_DEBT 棘轮([finding] DEBT ledger counts in check-type-check-coverage.mjs drift silently — @objectstack/metadata-protocol records 28, actually reports 63 #5278)重测会掀掉包自身 tsconfig 的 *.test.ts exclude;CommonJS 目标包里每个 import.meta 恒定两个 raw error(TS1470+TS2339)。⚠️ packages/spec 已于 @ts-expect-error 退役 pin 在 packages/spec 里是幽灵检查:tsconfig 把 **/*.test.ts 排除出唯一的 tsc --noEmit #5286 从 TEST_DEBT 毕业,改用按文件的 test-typecheck-debt.json(由 check:test-typecheck 校验)—— spec 侧加测试动不了 TEST_DEBT 数字,跨包加测试会--re-measure 需要先建全闭包,首次拒绝是已知假红。
  • ⚠️ fresh worktree 未构建依赖假红:Failed to resolve entry for package @objectstack/…check:api-surface 的「stale」 —— 先 pnpm --filter '^...' build 再判(三次实证)。
  • ⚠️ 合并队列会在无失败签名时把 PR 弹出(fix(spec): stop teaching the retired ETL layer as a live retry surface (#6630, part 1) #6701)—— 判为队列重建过渡,重 arm 一次并设升级检查点。有失败签名的走 E15/E18。
  • ⚠️ skip-changeset 不会自动打 —— 曾有 dev 报称自动化,已用 check-run 时间戳证伪。
  • 遗留 worktree /home/user/objectstack-6619/home/user/objectstack-issue-5783-sync 非本席所派,不清理。
  • worktree --force 告警处置模式:验受保护树在位 + 被删者为派发指定路径且分支已推 ⇒ 良性;反例立即上报。

Metadata

Metadata

Assignees

Labels

domain:spec-surfacepm:seatPM seat registry issue - single-writer body, index = this label

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions