本贴是 domain:services 座位的唯一权威登记。 座位贴协议(维护者 2026-08-06 批准):索引 = label:pm:seat,总入口 #4604 (指针页)。
单写手规则 :只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论。空缺争用:动手前重拉正文、审计评论时间戳先到先得、写后回读。活性判定(惰性):>24h 无产出即可回收(⛔ 24h 内回收需维护者指令)。读侧闭环 (维护者 2026-08-12 批准):接管与巡检只读本正文 + 晚于正文最后编辑的评论 。
范围 packages/services/*、packages/connectors/*、packages/triggers/*、plugin-approvals、plugin-webhooks、plugin-email、plugin-reports、embedder-openai、knowledge-memory、knowledge-ragflow。
⛔ 不在本席:packages/cloud-connection 与 packages/runtime(⇒ domain:cli#6024 )· packages/objectql / packages/core / packages/formula(⇒ domain:engine-core#6019 )· packages/metadata* / packages/platform-objects(⇒ domain:metadata#6367 )· 元数据格式与受理面(⇒ domain:spec#6017 )。
当前 PM 🟢 在任。 os-zhuang,session session_01ARidKDYSCD56LaygrvDPnk,接任 2026-08-13 ~00:5xZ(前任 00:36Z 明确收工,干净交接,非回收)。维护者指令(00:5xZ):「任务很多,加速开发」 。
⚠️ 认领判读 一律以认领评论的 session ID + 时间戳 为准。
车道账面(现值,2026-08-13 03:5xZ) 在飞 1,云会话 0。
在飞 :examples/app-todo: is_completed and is_overdue are readonly flags that nothing ever maintains — permanently false, and one of them is read by a hook #7226 (examples/app-todo 惰性派生标志,PR fix(example-todo): remove the inert is_completed/is_overdue flags and repair every filter that read them #8295 draft,dev 未交报告 )pm:queue 无主 3 —— 三张各有写在卡上的不可派理由,不是积压 :
needs-user-decision 1 :[Decision] sys_secret orphan reaping: which vehicle carries a destructive sweep over stored credentials — migration, admin command, or opt-in script? #8259 (sys_secret 清理载体)—— 已可裁 (sys_secret: rotations that happened BEFORE #8030's fix left decryptable orphans on deployed instances, and nothing reaps them #8103 的测量已交付),推荐 A ;⛔ 不阻塞任何在飞工作pm:blocked(本席)7 :sys_secret: rotations that happened BEFORE #8030's fix left decryptable orphans on deployed instances, and nothing reaps them #8103 (等 [Decision] sys_secret orphan reaping: which vehicle carries a destructive sweep over stored credentials — migration, admin command, or opt-in script? #8259 )· The package door's 4xx paths still ship raw driver text — a returned failure never meets the 5xx withhold, and is mislabelled a client error #8131 (等 [finding] metadata-protocol interpolates raw driver text into client-facing messages — three downstream sanitizers each have a hole because of it (option C of #8086) #8136 ,⚠️ 见下「误关」条)· reapRotatedSecret deletes the IN-FORCE ciphertext when a SettingsEngine adapter drops context, leaving a dangling value_enc and an unreadable setting #8262 · [finding] packageService.delete's driver fault is answered as 400 PACKAGE_DELETE_FAILED — the same mislabelling #8131 fixed for publish, on the sibling route #8275 · [finding] service-analytics carries its own copies of the comparand-type allow-list the #7872 door now single-sources — reconcile membership and message wording to the door #8186 · Migration story for stored cleartext datasource credentials: operator-initiated re-homing into sys_secret (blocked by the managed-schemaMode refusal) #8155 (Blocked-by: #8153)· [security] sys_email.headers_json stores custom headers cleartext — same shape as sys_http_delivery; adopt whatever remedy #8118 lands, do not decide it twice #8149 pm:dispatched 伞卡 2(非在飞 dev) :[services half of #7990] Close the datasource/connector credential write/read paths: scrub getDatasource().config, fix the false "credential-stripped" claim, and write the stored-cleartext-rows migration story #8081 (等 scope 3/4/5)· [security] webhook custom headers are still cleartext in two JSON blobs — the sibling of #7799 that PR #7901 did not close #7986 (等分诊改道裁定)finding 2 :settings 消费缝丢弃 ResolvedSettingValue.source —— 服务无法区分「管理员写过的值」和「schema 默认值」 #5536 · [finding] CryptoAdapter.confidential defaults to permissive — the settings fail-closed gate is only as good as a weak adapter self-declaring, and nothing prompts one to #8276 ;tracking 1 :service-storage: IStorageService.list(prefix) means two different things on the two shipped adapters (local: one level, directories as files; S3: recursive, silently capped at 1000) #5266 ;pm:on-hold 1 :[P2] engine ADR: durable pause inside structured regions (unlock topology-level parallel approvals / waits / subflows) #3267 target:v17 本车道 0 (objectstack 仓共 3 张,属 domain:cli 与 repo:objectui)⚠️ 三条必查(派发/合并前)① 「gate 红」类卡片,派发前必须自己复现 CI 读数。 判据取未被取消的 main run 上该 step 的 conclusion;⛔ 不取报告人的本地读数,⛔ 不把 cancelled run 的 skipped step 读作任何一侧。
② 合并后必须重拉车道清点,与预期状态对差。 Part of #N不足以 阻止自动关闭(#8293 实证:PR 首行 Part of、正文有显式警告、提交与描述均无关键字,#8131 仍在合并后 2 秒被关成 completed)。⛔ 没有任何门禁或通知会告诉你;唯一抓到它的是合并后清点发现 open 集少了一张。
③ 三个缝文件的 ride-along(#5536 )。 文件面若触及 service-settings/src/settings-service.ts:1200、service-storage/src/storage-service-plugin.ts:407、service-sms/src/sms-plugin.ts:197 之一 ⇒ 派发令必带 #5536 ride-along。⛔ 不单点修 storage hasAny;⛔ 不借此晋级 #5536 。
热文件串行队 全部队空(service-settings 本班三卡 #8026 / #8103 / #8145 均已落地)。⚠️ 新面:config-change-audit.ts 双写路径(#8145 )与 SettingsCryptoUnavailableError 拒绝路径(#8026 )—— 后续碰 settings 写路径的卡要注意「被拒的写入不得发审计行」。
常设承诺(累积) ① 强制表面突破三判据受理 + 跨席声明,声明先于合并;② dev 证伪照实背书进 ACCEPT;③ 假警报关闭是好产出 ;④ 补丁轮续派原 dev;⑤ 门禁族点名 PM 独担;⑥ 解锁扫描连查上游已合;⑦ 同名异面键点破;⑧ opportunistic restart 挂认领/派发步;⑨ 认领前读全评论;⑩ 派发前 PM 自己 grep 定位面 30 秒;⑪ 派发词不得与已记录裁决相抵;⑫ 跨 lane 余项拆无主 finding;⑬ 根因落点写成「假说」而非「规格」;⑭ 披露面类卡片带前提裁决 + STOP 条件;⑮ 归档云会话前必读 post_turn_summary;⑯ 裁定已定的卡:派发令写「实现而非重新论证」;⑰ ⛔ 引用新卡前先 create 拿到真号 ;⑱ 裁定型卡区分「本来就成立」与「修完才成立」;⑲ 引用他人「已知过时」结论前先确认它指哪个对象;⑳ ⛔ 破坏性/不可逆动作 PM 不选载体 —— 拆只读半边照常派,载体走 needs-user-decision,派发令写死「⛔ 不得以任何形式落地删除路径,包括 flag 后、注释掉、声称不可达的」;㉑ 文件面不相交 ≠ 独立 —— 跨车道语义 耦合(A 卡的 pin 编码 B 卡的谓词事实)文件面看不见,分诊点名的兄弟卡要单独判(#8281 );㉒ 卡片行号一律从树上取 ,⛔ 不抄卡面(本班 #8145 实证:卡写 :315,真实落点 :335);㉓ 消费者测量跨仓时,搜不到 ≠ 干净 —— 派发令必须写死「补上或明说没补」(本班 #8145 实证:objectui 补搜后,结论反转 了 reroute/dual-write 的选择)。
说明(运维情报,累积) ⚠️ Bash cwd 每调用重置,git 一律 git -C <绝对路径>;⚠️ 共享检出是 shallow clone;⚠️ 定点文本 ⛔ 写「已做 X」类结论;⚠️ MCP 会话中反复断连,schema 掉线要 ToolSearch 重载;⚠️ create_session 的 permission_mode 不得高于父会话;⚠️ 归档必须用完整 session ID,且容器可能已自行回收 ,archive_session 报 resource was not found 属正常终态;⚠️ docs-only PR 无 changeset ⇒ 打 skip-changeset;💡 车道盘点用裁字段 list_issues;💡 引擎会原地改写传入行(maskSecretFields),stub driver 必须返回拷贝。
⚠️ 入队成员资格一律读 enqueued / added_to_merge_queue 事件 ;⛔ 不得据 enable_pr_auto_merge 的空字段回执(method: , enabled at )断定已入队或 未入队 —— 本班 4 次全为空回执,零信息。先 ready 后 arm;绿 PR ≠ 绿队列;removed_from_merge_queue 后 1 秒内出现 merged = 落地,否则是踢出。已知 flaky:scripts/build-schemas-check-mode.test.ts(shallow-checkout 敏感)。
⚠️ check:type-check-debt 的本地读数会撒谎,方向是「制造假警报」。--re-measure 依赖 lint.yml step 31 先建闭包 dist/;不建就会对依赖经 exports 解析到 dist/ 的 ledger 包报幻影漂移(形状:TS2614 + 连带 TS2339/TS7006)。CI 从来看不到。⇒ 收到「ledger 漂移 / gate 红」类卡,第一动作是查 main 上未取消 run 的 step 结论。已由分诊立为 #8271 。
⚠️ git checkout <ref> -- <path> 会写暂存区。 反向验证后用 cp 还原只动工作树 ⇒ 索引留着 main 的版本、git diff HEAD 读起来干净、测试还全绿(读工作树)⇒ 提交出一个静默 revert 掉自己修复 的 PR。用 git checkout HEAD -- <path>,提交前看 git status --porcelain 的 MM。已立 #8280 。
⚠️ check:dev-prereqs 的 scan 半边在 CI 里根本不跑 (lint.yml 步骤名明写 "self-test half only, never the scan")⇒ 它在本地红时,CI 既不证实也不证伪 ,⛔ 不可说「等 CI 判」。
今日战报(round 12,本席任内) 5 派 / 4 合 / 1 在飞,⛔ 零 REWORK,2 次补丁轮各一趟收敛。
拦下一张假 p0 (#8235 ,已由分诊 closed not_planned,残余立为 #8271 )。本班开卡 8 张 :#8259 · #8262 · #8273 · #8275 · #8276 · #8280 · #8281 · #8293 。
迁移注记:「范围 / 当前 PM / 说明」自 #4604 座位表迁移(2026-08-06);本贴即该座位唯一权威。轮次战报逐条见评论区,⛔ 不在本正文累积。
本贴是
domain:services座位的唯一权威登记。 座位贴协议(维护者 2026-08-06 批准):索引 =label:pm:seat,总入口 #4604(指针页)。单写手规则:只有在任座位 PM 编辑本贴正文;接管/移交 = 改正文 + 一条审计评论。空缺争用:动手前重拉正文、审计评论时间戳先到先得、写后回读。活性判定(惰性):>24h 无产出即可回收(⛔ 24h 内回收需维护者指令)。读侧闭环(维护者 2026-08-12 批准):接管与巡检只读本正文 + 晚于正文最后编辑的评论。
范围
packages/services/*、packages/connectors/*、packages/triggers/*、plugin-approvals、plugin-webhooks、plugin-email、plugin-reports、embedder-openai、knowledge-memory、knowledge-ragflow。⛔ 不在本席:
packages/cloud-connection与packages/runtime(⇒domain:cli#6024)·packages/objectql/packages/core/packages/formula(⇒domain:engine-core#6019)·packages/metadata*/packages/platform-objects(⇒domain:metadata#6367)· 元数据格式与受理面(⇒domain:spec#6017)。当前 PM
🟢 在任。
os-zhuang,sessionsession_01ARidKDYSCD56LaygrvDPnk,接任 2026-08-13 ~00:5xZ(前任 00:36Z 明确收工,干净交接,非回收)。维护者指令(00:5xZ):「任务很多,加速开发」。车道账面(现值,2026-08-13 03:5xZ)
在飞 1,云会话 0。
is_completedandis_overduearereadonlyflags that nothing ever maintains — permanently false, and one of them is read by a hook #7226(examples/app-todo 惰性派生标志,PR fix(example-todo): remove the inert is_completed/is_overdue flags and repair every filter that read them #8295 draft,dev 未交报告)pm:queue无主 3 —— 三张各有写在卡上的不可派理由,不是积压:add the corresponding \objects.`),缺翻译键路径 ⇒ repair-first,已留修复指令redeliverbutton that sends UNSIGNED #8069 ⛔ 跨域:修法需在sys_http_delivery加一列(⇒platform-objects/domain:metadata)+redeliver()拒绝(本席)⇒ 待分诊指定拆法或例外路径needs-user-decision,已上报,未改标签needs-user-decision1:[Decision] sys_secret orphan reaping: which vehicle carries a destructive sweep over stored credentials — migration, admin command, or opt-in script? #8259(sys_secret 清理载体)—— 已可裁(sys_secret: rotations that happened BEFORE #8030's fix left decryptable orphans on deployed instances, and nothing reaps them #8103 的测量已交付),推荐 A;⛔ 不阻塞任何在飞工作pm:blocked(本席)7:sys_secret: rotations that happened BEFORE #8030's fix left decryptable orphans on deployed instances, and nothing reaps them #8103(等 [Decision] sys_secret orphan reaping: which vehicle carries a destructive sweep over stored credentials — migration, admin command, or opt-in script? #8259)· The package door's 4xx paths still ship raw driver text — a returned failure never meets the 5xx withhold, and is mislabelled a client error #8131(等 [finding]metadata-protocolinterpolates raw driver text into client-facing messages — three downstream sanitizers each have a hole because of it (option C of #8086) #8136,context, leaving a dangling value_enc and an unreadable setting #8262 · [finding]packageService.delete's driver fault is answered as400 PACKAGE_DELETE_FAILED— the same mislabelling #8131 fixed forpublish, on the sibling route #8275 · [finding] service-analytics carries its own copies of the comparand-type allow-list the #7872 door now single-sources — reconcile membership and message wording to the door #8186 · Migration story for stored cleartext datasource credentials: operator-initiated re-homing into sys_secret (blocked by the managed-schemaMode refusal) #8155(Blocked-by: #8153)· [security]sys_email.headers_jsonstores custom headers cleartext — same shape assys_http_delivery; adopt whatever remedy #8118 lands, do not decide it twice #8149pm:dispatched伞卡 2(非在飞 dev):[services half of #7990] Close the datasource/connector credential write/read paths: scrubgetDatasource().config, fix the false "credential-stripped" claim, and write the stored-cleartext-rows migration story #8081(等 scope 3/4/5)· [security] webhook customheadersare still cleartext in two JSON blobs — the sibling of #7799 that PR #7901 did not close #7986(等分诊改道裁定)finding2:settings 消费缝丢弃 ResolvedSettingValue.source —— 服务无法区分「管理员写过的值」和「schema 默认值」 #5536 · [finding]CryptoAdapter.confidentialdefaults to permissive — the settings fail-closed gate is only as good as a weak adapter self-declaring, and nothing prompts one to #8276;tracking1:service-storage:IStorageService.list(prefix)means two different things on the two shipped adapters (local: one level, directories as files; S3: recursive, silently capped at 1000) #5266;pm:on-hold1:[P2] engine ADR: durable pause inside structured regions (unlock topology-level parallel approvals / waits / subflows) #3267target:v17本车道 0(objectstack 仓共 3 张,属domain:cli与repo:objectui)① 「gate 红」类卡片,派发前必须自己复现 CI 读数。 判据取未被取消的
mainrun 上该 step 的conclusion;⛔ 不取报告人的本地读数,⛔ 不把cancelledrun 的skippedstep 读作任何一侧。② 合并后必须重拉车道清点,与预期状态对差。
Part of #N不足以阻止自动关闭(#8293 实证:PR 首行Part of、正文有显式警告、提交与描述均无关键字,#8131 仍在合并后 2 秒被关成 completed)。⛔ 没有任何门禁或通知会告诉你;唯一抓到它的是合并后清点发现 open 集少了一张。③ 三个缝文件的 ride-along(#5536)。 文件面若触及
service-settings/src/settings-service.ts:1200、service-storage/src/storage-service-plugin.ts:407、service-sms/src/sms-plugin.ts:197之一 ⇒ 派发令必带 #5536 ride-along。⛔ 不单点修 storagehasAny;⛔ 不借此晋级 #5536。热文件串行队
全部队空(⚠️ 新面:
service-settings本班三卡 #8026 / #8103 / #8145 均已落地)。config-change-audit.ts双写路径(#8145)与SettingsCryptoUnavailableError拒绝路径(#8026)—— 后续碰 settings 写路径的卡要注意「被拒的写入不得发审计行」。常设承诺(累积)
① 强制表面突破三判据受理 + 跨席声明,声明先于合并;② dev 证伪照实背书进 ACCEPT;③ 假警报关闭是好产出;④ 补丁轮续派原 dev;⑤ 门禁族点名 PM 独担;⑥ 解锁扫描连查上游已合;⑦ 同名异面键点破;⑧ opportunistic restart 挂认领/派发步;⑨ 认领前读全评论;⑩ 派发前 PM 自己 grep 定位面 30 秒;⑪ 派发词不得与已记录裁决相抵;⑫ 跨 lane 余项拆无主 finding;⑬ 根因落点写成「假说」而非「规格」;⑭ 披露面类卡片带前提裁决 + STOP 条件;⑮ 归档云会话前必读
post_turn_summary;⑯ 裁定已定的卡:派发令写「实现而非重新论证」;⑰ ⛔ 引用新卡前先create拿到真号;⑱ 裁定型卡区分「本来就成立」与「修完才成立」;⑲ 引用他人「已知过时」结论前先确认它指哪个对象;⑳ ⛔ 破坏性/不可逆动作 PM 不选载体 —— 拆只读半边照常派,载体走needs-user-decision,派发令写死「⛔ 不得以任何形式落地删除路径,包括 flag 后、注释掉、声称不可达的」;㉑ 文件面不相交 ≠ 独立 —— 跨车道语义耦合(A 卡的 pin 编码 B 卡的谓词事实)文件面看不见,分诊点名的兄弟卡要单独判(#8281);㉒ 卡片行号一律从树上取,⛔ 不抄卡面(本班 #8145 实证:卡写:315,真实落点:335);㉓ 消费者测量跨仓时,搜不到 ≠ 干净 —— 派发令必须写死「补上或明说没补」(本班 #8145 实证:objectui 补搜后,结论反转了 reroute/dual-write 的选择)。说明(运维情报,累积)
git -C <绝对路径>;create_session的permission_mode不得高于父会话;archive_session报resource was not found属正常终态;skip-changeset;💡 车道盘点用裁字段list_issues;💡 引擎会原地改写传入行(maskSecretFields),stub driver 必须返回拷贝。enqueued/added_to_merge_queue事件;⛔ 不得据enable_pr_auto_merge的空字段回执(method: , enabled at)断定已入队或未入队 —— 本班 4 次全为空回执,零信息。先 ready 后 arm;绿 PR ≠ 绿队列;removed_from_merge_queue后 1 秒内出现merged= 落地,否则是踢出。已知 flaky:scripts/build-schemas-check-mode.test.ts(shallow-checkout 敏感)。check:type-check-debt的本地读数会撒谎,方向是「制造假警报」。--re-measure依赖lint.ymlstep 31 先建闭包dist/;不建就会对依赖经exports解析到dist/的 ledger 包报幻影漂移(形状:TS2614 + 连带 TS2339/TS7006)。CI 从来看不到。⇒ 收到「ledger 漂移 / gate 红」类卡,第一动作是查 main 上未取消 run 的 step 结论。已由分诊立为 #8271。git checkout <ref> -- <path>会写暂存区。 反向验证后用cp还原只动工作树 ⇒ 索引留着 main 的版本、git diff HEAD读起来干净、测试还全绿(读工作树)⇒ 提交出一个静默 revert 掉自己修复的 PR。用git checkout HEAD -- <path>,提交前看git status --porcelain的MM。已立 #8280。check:dev-prereqs的 scan 半边在 CI 里根本不跑(lint.yml 步骤名明写 "self-test half only, never the scan")⇒ 它在本地红时,CI 既不证实也不证伪,⛔ 不可说「等 CI 判」。今日战报(round 12,本席任内)
5 派 / 4 合 / 1 在飞,⛔ 零 REWORK,2 次补丁轮各一趟收敛。
Part of)→pm:blockedFixes)→ 已关Part of)→Fixes)→ 已关拦下一张假 p0(#8235,已由分诊 closed not_planned,残余立为 #8271)。本班开卡 8 张:#8259 · #8262 · #8273 · #8275 · #8276 · #8280 · #8281 · #8293。
迁移注记:「范围 / 当前 PM / 说明」自 #4604 座位表迁移(2026-08-06);本贴即该座位唯一权威。轮次战报逐条见评论区,⛔ 不在本正文累积。