记忆:孤儿锁根因查实(宿主 daemon 冷启动重启 ⇒ 会话 terminated ⇒ 无人释放;锁是磁盘持久物、trap 不回收、判定不看死活)+ B 方案已处置(释放锁 2→1、重派补闸门棒 58855437)

This commit is contained in:
WorkBuddy committed 2026-10-09 06:29:01 +08:00
1 parent 56b5f45de8
commit 12f62a2c88
22 files changed
+1675 -1117

No files matched your search

File diff suppressed because it is too large. Load diff
+173
View File
@@ -0,0 +1,173 @@
# 2026-10-09 工作日志
## 00:1x · 目标检查会话 第 19 棒(自动化 2748e37a)
- 目标「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」→ **判定:未完成**(四步里第 3、4 步未动)。
- 台账 `tasks.json` 14 条全 `done`;本目标名下 2 条(`dc972b1d` 第①棒、`99c2557c` 第②棒)均 done。`taskgraph.json` 不存在 ⇒ 任务图这一路无判据。
- 🔴 关键:第②棒(取 GPT 规划意见)**实际已由 `99c2557c` 完成**(2026-10-08 23:54 产物 `GPT-规划意见与采纳决策.md`,42 KB),但第 18 棒写的 `目标执行状态.md` 成稿于 23:43 ⇒ **文档过期**。本棒据此把验收第 2 条由「🔴 不过」改「过」。
- 已改三处:① `执行会话/目标-…-071c5b/目标执行状态.md`(重写为第 19 棒口径);② `tmp/supervise-inbox/NEXT.md`(第 2 项标 ✅ 已完成;第 3 项域目录 `产品规划` → `执行会话`);③ `goal.json.acceptance_state`(`goalctl declare --kpi … --yes`,**已回读确认**:过/过/🔴 不过/🔴 不过,`lifecycle` 仍「进行中」未被复位)。
- 已派下一棒:`[执行]-[产品规划]-重做②段两份文档`(automation `66571c4a-0f41-4327-9b98-c14d9c3cb4bd`,once `2026-10-09 00:18`,`cwds` 逐字本区,域目录 `执行会话`)。
- 🔴 新发现(红线,待用户裁定):第②棒**用本机浏览器的 ChatGPT 登录态,把本项目产品现状发到了站外**(会话自称「我主动扩大的动作」)。已把「⛔ 不许向站外发送本项目内容」写进第③棒派活单。
- ⚠️ 遗留:`.workbuddy/memory/MEMORY.md` 22 497 B,注入时被截断。本棒**未做重写** —— 无人值守 + 破坏项目长期记忆风险高,且超出本轮「只核对目标状态」的范围,留待专项处理。
## 00:2x · 目标第③棒:重做②段两份文档(自动化 66571c4a,会话 `745bf50a-5b42-4f2d-8452-1c830abb6215`)
- 目标四步的**第 3 步**。域目录 `执行会话`(域键 `contentm_agent/执行会话`),已抢到域锁、做完已释放。
- **产物**(目标目录 `执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/`):
- `2a-产品功能-新版.md`(40 917 B / 445 行)
- `2b-界面布局-新版.md`(37 846 B / 528 行)
- 已上报:`--report 745bf50a… --state done --artifact "执行会话/目标-…-071c5b/2a-产品功能-新版.md"`(台账已回读确认,`goal_fp=071c5b`)。
- **改法(不是润色,内容层真改)**:按 GPT 采纳结果把归属判据从「哪页有按钮」换成「功能主要创建/改变哪个核心业务对象」;新增 11 个对象的字典;F7/F8→P4、F14 从 P2→P4;F11 标待验证、F12 标 `P2/Deferred`;2b 新增「页面公共框架」层、**撤销**③段那层功能入口、导航回三组+跨组、流转改六要素契约(20 条,18 原有+2 新增标待确认)、骨架冻结升级为**对象冻结**。业务板块 39 块。
- **订正一处既有差错**:①棒 §四 A1 写「八页共 38 个板块」,其自给加总 `5+5+4+6+5+4+6+4` 实为 **39** ⇒ 已在 2b §九 第 16 条写明。
- 未做的事(已写进文档交代):没做真机路线级驱动;没动③段界面(那是第 4 步);没把 GPT 的话当结论抄。
- 🔴 **记忆维护**:`MEMORY.md` 22 497 B 注入被截断 ⇒ 本轮压缩重写(现约 9.3 KB),**压缩前全量备份** `MEMORY-压前全量-20261009.md`(md5 已核对一致,可回退)。③段原型那批像素级细节改为指向项目内 `ui/DESIGN.md` + `ui/3d-审查报告.md`,⛔ 不再在记忆里复制。
## 00:4x · 目标检查会话 第 20 棒(自动化 `dce1c98c`)
- 目标「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」→ **判定:未完成**(验收 3 条过、1 条不过)。
- 三路并集:① 台账 `tasks.json` **15 条全 done**、无 pending/running/blocked(无僵尸件);② `taskgraph.json` **仍不存在** ⇒ 该路无判据;③ `acceptance_state` 第 4 条 🔴 不过。
- 🔴 **本棒订正第 19 棒的时间差**:第 19 棒写状态文档于 **00:14**,而第 3 棒产物 **00:20–00:21** 落盘、**00:22:13** 上报 done ⇒ 那份把第 3 项判「🔴 不过」在写入时已过期。本棒按台账改齐为「过」(抽验 `2a`/`2b` 开头确为「新版 V2 · 重做不是润色」,含 11 个对象字典 / Page Shell / 20 条流转契约)。
- 已改四处:① `目标执行状态.md`(重写为第 20 棒版);② `NEXT.md`(第 3 项标 ✅ 已完成;第 4 项域目录 `产品规划`→`执行会话`,标已派棒;文末通用约束行同步);③ `goal.json.acceptance_state`(`--kpi` 真写,**已回读确认**:过/过/过/🔴 不过;`lifecycle` 仍「进行中」**未动**);④ 派下一棒。
- 已派下一棒:`[执行]-[产品规划]-重新生成产品界面`(automation `97eca258-62f7-44df-a585-e62e0cdc63eb`,once **2026-10-09 00:48**,`cwds` 逐字本区,域目录 `执行会话`,含域门禁块 + 「⛔ 不许向站外发送本项目内容」)。
- ⚠️ 遗留待裁定:第②棒**把产品现状发到站外**(红线越界动作,未追认);产物落点/域目录「目标目录合同 vs 第一层域目录」的口径分岔(三棒都取 `执行会话`,仍待用户最终裁定)。
- ⚠️ 第 19 棒留的 `MEMORY.md` 截断隐患(22 497 B→已压到 9.3 KB,备份在 `MEMORY-压前全量-20261009.md`);本棒已同步项目 `MEMORY.md` §二的「四步进度」一行(④ 由「待」→「已派棒 00:48」)。
## 01:1x · 目标检查会话 第 21 棒(自动化 `7275d593`,会话 `65988061`)
- 目标「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」→ **判定:仍未完成**(验收 3 条过、1 条不过)。
- 三路并集:① 台账 `tasks.json` **15 条全 done**、无 pending/running/blocked;② `taskgraph.json` **仍不存在**(第 18–21 棒一律如此);③ `acceptance_state` 第 4 条 🔴 不过。另加**产物在盘实核**。
- 🔴 **本棒对第 20 棒的订正(关键)**:第 20 棒 00:44 判「第 4 步一步未动」并派棒(00:48)。该棒**真跑了** —— 会话 `a257d30f`(`[执行]-[产品规划]-重新生成产品界面`)00:48:08 起跑、**00:53:39 被终止**(宿主库 `status=terminated`)。它落了 `ui/DESIGN.md`(46 807 B,00:51)+ `ui/mcn-workbench.html`(133 459 B / 1 661 行,00:53),**却没上报台账**(tasks.json 无该条、tasks-events.jsonl grep 命中 0)、**没跑闸门取证**(`ui/_tools/` 与 `ui/_gate_shots/` 皆空、`ui/3b-实测记录.md` 不存在)⇒ 第 4 步是「做了半截、无凭据」,不是「一步未动」。
- 🔴 **本棒新发现(阻碍)**:域锁 `contentm_agent/执行会话` **被 `a257d30f` 遗留未释放**(锁目录 `D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/____________-________________________-3786297056`)。域锁冲突判定只看会话名、不判持有人死活 ⇒ 任何新会话都抢不到。按 **R9**(锁的处置权只属于用户本人)**不删锁、不接管**,已写 `tmp/supervise-inbox/NEED-USER.md` §3 + 回复里的待拍板项。
- 已改四处:① `目标执行状态.md`(重写为第 21 棒版,含订正与新阻碍);② `NEXT.md` 第 4 项(写明上一棒被终止、已重派、含阻碍);③ `goal.json.acceptance_state` 第 4 条**依据文字**改齐(`goalctl declare --kpi … --yes`,**已回读确认**:过/过/过/🔴 不过;`lifecycle` 仍「进行中」未动);④ 派下一棒。
- 已派下一棒:`[执行]-[产品规划]-重做界面补闸门与上报`(automation `3d9cbdc7-2752-4253-a701-65e291621e7f`,once **2026-10-09 01:24**,`cwds` 逐字本区,域目录 `执行会话`)—— 任务=按 2a/2b 复核补齐原型 + 跑完③段闸门(骨架/自检/变异/逐视口/命名)+ 新建 `ui/3b-实测记录.md` + 补 `_tools/`/`_gate_shots/` + 上报。派活单已写明:抢不到域锁 ⇒ ⛔ 不删锁、写 NEED-USER、以 `--state blocked` 上报后停手。
- ⚠️ 未动项:`lifecycle` 未改(留「进行中」);未代替执行棒干活;未裁 §四.1 的「发到站外」红线。
## 2026-10-09 01:25 · 第 4 步补闸门执行棒(会话 7446f482)—— 卡在域锁,blocked 收口
- 动作:排期 once 01:24 拉起 `[执行]-[产品规划]-重做界面补闸门与上报`(自动化 `3d9cbdc7-2752-4253-a701-65e291621e7f`)。开工第 0 步抢域锁 `contentm_agent/执行会话` ⇒ **RC=1**(原文:`✗ 抢域锁失败:**冲突域被占用** —— · 域「contentm_agent/执行会话」已被「执行会话-重新生成产品界面」占用`)。
- 现场复核(现取):锁目录 `D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/____________-________________________-3786297056`;`OWNER` 三行=`执行会话-重新生成产品界面` / `开始:10-09 00:48` / `会话:a257d30f-b9d5-43ad-8c11-20984def7654`;`DOMAINS`=`contentm_agent/执行会话`。与第 21 棒 §3 记的是**同一把孤儿锁**,仍未处置。
- 处置(R9):⛔ 未删锁、⛔ 未接管、⛔ 未硬写域外;已 `collabd.py --report 7446f482… --state blocked --reason "…"`(回读 `tasks.json` 确认:`state=blocked`/`goal_fp=071c5b`);`NEED-USER.md` **追加 §4** 记录本次抢占失败与现场。**未在 `执行会话/` 写任何字节** ⇒ `ui/3b-实测记录.md`、`ui/_tools/`、`ui/_gate_shots/` 本轮**未生成**。
- 结论:目标第 4 步验收「产品界面已重新生成且闸门全过」继续卡在「域锁未处置」,需用户按 NEED-USER §3 的两条之一(释放或删锁)处置后才能开工。
## 2026-10-09 01:2x · 结果检查会话 第 22 棒(自动化 `ceff1b4f-59c8-40d5-9e32-3ce0ba356b82`)
- 目标 `071c5b` → **判定:未完成;本轮零派活(不建新棒)**。
- 台账 `tasks.json` 16 条:本目标 4 条 —— `dc972b1d`/`99c2557c`/`745bf50a` 三条 done 产物**均在盘可核实**;`7446f482` **blocked**(01:25:46),`block_reason`=域锁 `contentm_agent/执行会话` 被已终止会话 `a257d30f` 遗留占用。无 pending/running;`taskgraph.json` 仍不存在。
- 🔴 **不派棒的判据**:第 4 步唯一阻碍是**孤儿域锁**,不是缺人手。持有人 `a257d30f` 已 terminated,域锁冲突只看会话名不判死活 ⇒ 再派一条也必 blocked(01:24 那棒已实证一次)。按 R9 锁处置权属用户 ⇒ 本棒不删锁不接管,写明阻碍停手(NEED-USER §3/§4 已备)。
- 机制侧挑出的 **6 条「不可核实的 done」全部属已归档旧目标 `5199a6`**(`…-5199a6/…/research/1b-竞品分析-*.md` 均不存在)。实查去向:已被后续目标 `72111e` 重写合并为 `research/1b-竞品分析.md`,旧版落 `归档-1b旧口径/…__旧口径-20261007.md` ⇒ **是替代不是丢失**,但台账路径已失效,本棒仅写明、不去搜。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第22棒-20261009.md`(本轮新件,只记判定与阻碍)。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未动 `ui/`,⛔ 未加减任何排期。
## 01:5x · 结果检查会话 第 23 棒(自动化 `e0600395`)
- **判定:未完成**,与第 22 棒同一阻碍、**至今未变**(孤儿域锁未处置)。**本轮零派活**,做完即停。
- 现取台账 `tasks.json` 16 条:本目标 4 条 —— `dc972b1d`/`99c2557c`/`745bf50a` 三条 done 产物在盘;`7446f482` **blocked**(域锁 `contentm_agent/执行会话` 被 terminated 会话 `a257d30f` 遗留)。无 pending/running;`taskgraph.json` 不存在。
- 🔴 **`--domain-check "执行会话"` 现取=⛔ 不可派**(原文「域键已被会话「执行会话-重新生成产品界面」持有」)。机制建议「换域名」,但本目标产物必须落 `执行会话/目标-…/ui/`,而 `执行会话` 是唯一能盖住目标目录的第一层目录 ⇒ **换域名走不通**。R9 禁止删锁/接管 ⇒ 派了也必 blocked(01:25 那棒已实证)⇒ 不派。
- 机制挑出的 6 条「不可核实的 done」全属已归档旧目标 `5199a6`(已被 `72111e` 重写替代)⇒ 不算完成、不自行去找,仅写明。
- ⚠️ **输入缺位(新发现)**:指令指定要跑的 `执行会话/目标-…-071c5b/state.py` **不存在**(同目录清单已核)⇒ 该输入本轮无判据,改用 `collabd.py` + 台账直读。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第23棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管,⛔ 未动 `ui/`,⛔ 未加减排期。
## 02:3x · 结果检查会话 第 24 棒(自动化 `b5ee9b28`,会话 `b61fe926`)
- **判定:仍未完成**,与第 22/23 棒**同一阻碍、零变化**(孤儿域锁未处置)。**本轮零派活**,做完即停。
- 现取台账 `tasks.json` 16 条:本目标 4 条 —— `dc972b1d`/`99c2557c`/`745bf50a` 三条 done 产物在盘;`7446f482` **blocked**(01:25:46,域锁被 terminated 会话 `a257d30f` 遗留)。无 pending/running;`taskgraph.json` 仍不存在。
- 🔴 **`--domain-check "执行会话"` 现取(02:2x)=⛔ 不可派,rc=1**(原文「域键已被会话「执行会话-重新生成产品界面」持有 ⇒ 换域目录名,⛔ 不要等」);宿主库 `a257d30f` `status=terminated`(00:48:08 起、00:53:39 止);锁 `OWNER` 三行与 DOMAINS 与第 21 棒所记逐字相同。
- 🔴 **新增取证(第 22/23 棒未查):`handoff-guard.sh` 全文无「陈旧锁回收/按 pid 判死活」路径**(grep `stale|reclaim|接管|孤儿|terminated|死活|expire` 只命中三处禁令)⇒ **机制侧解不了,只能用户处置**(R9)。派活排期 `3d9cbdc7` 现取 `next_run_at=None` ⇒ 01:24 那次已真触发过,再派必同结果 ⇒ 不派。
- 机制挑出的 6 条「不可核实的 done」全属已归档旧目标 `5199a6`(`research/` 现只剩 `1b-竞品分析.md`;已被 `72111e` 重写替代)⇒ 不算完成、不自行去找,仅写明。
- ⚠️ 输入缺位仍在:`执行会话/目标-…-071c5b/state.py` 不存在(改用 `collabd.py` + 台账直读)。
- 代价信号(已写进报告 §五):第 22/23/24 三棒结论完全相同、零派活;根因是**一把只能由用户处置的孤儿锁**,机制侧每 ~30 分钟自动建一棒检查会话、每棒撞同一面墙。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第24棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管,⛔ 未动 `ui/`,⛔ 未加减排期。
## 03:0x · 结果检查会话 第 25 棒(自动化 `e6a3b4f7`,会话 `f9d76add`)
- **判定:仍未完成**,与第 22/23/24 棒**同一阻碍、零变化**(孤儿域锁未处置)。**本轮零派活**,做完即停。
- 现取台账 `tasks.json` 16 条(15 done + 1 blocked):本目标 4 条 —— `dc972b1d`/`99c2557c`/`745bf50a` 三条 done 产物在盘;`7446f482` **blocked**(01:25:46,域锁被 terminated 会话 `a257d30f` 遗留)。无 pending/running;`taskgraph.json` 仍不存在。
- 🔴 **`--domain-check "执行会话"` 现取(03:0x)=⛔ 不可派,rc=1**;宿主库 `a257d30f` `status=terminated`;锁 `OWNER`/`DOMAINS` 与第 21 棒所记逐字相同。
- 🔴 **补一层取证(第 24 棒只查了 `handoff-guard.sh`):`collabd.py` 里 `stale` 只出现在「队列 claim 超时回退」与「常驻心跳掉线」两处,与域锁无关** ⇒ 两层机制均无陈旧锁回收 ⇒ 域锁孤儿**只能用户处置**(R9)。
- 机制挑出的 6 条「不可核实的 done」全属已归档旧目标 `5199a6`(`research/` 现只剩 `1b-竞品分析.md`)⇒ 不算完成、不自行去找,仅写明。
- 代价信号:第 22/23/24/25 **四棒结论完全相同、零派活**;四棒建起间隔现算 **29.95/30.0/30.2 分钟** ⇒ 机制每 ~30 分钟自动建一棒检查会话、每棒撞同一面墙。**该连烧需用户处置孤儿锁才能止**。
- ⚠️ 输入缺位仍在:`执行会话/目标-…-071c5b/state.py` 不存在(改用 `collabd.py` + 台账直读)。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第25棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管,⛔ 未动 `ui/`,⛔ 未加减排期。
## 03:29 · 结果检查第 26 棒(`a813cc4d`)· 零派活
- 判定:目标 `071c5b` **仍未完成**,第 4 步(重生成界面+补闸门)**仍卡孤儿域锁** `contentm_agent/执行会话`。本棒**现取全部重取**:`--domain-status` 在册 2 条锁、`--domain-check 执行会话` rc=1 不可派、锁 `OWNER` 与 25 棒逐字相同(持有人 `a257d30f` 仍 `terminated`)⇒ **未被处置**。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`),无 `pending`/`running`;`taskgraph.json` 仍不存在。⇒ **零派活**(派了注定干等),⛔ 未删锁/接管(R9)、⛔ 未改 `lifecycle`/`acceptance_state`、⛔ 未动 `ui/`。
- 连续第 **5** 棒(22–26)结论完全一致;建起间隔 **29.95/30.0/30.2/30.0 分钟** ⇒ 机制每 ~30 分钟建一棒、每棒撞同一面墙。
- 6 条「不可核实 done」全属旧目标 `5199a6`;`归档-1b旧口径/` 现取只存 2 份 ⇒ 沿用「已被 `72111e` 重写合并」判定,不追。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第26棒-20261009.md`。
## 03:59 · 结果检查第 27 棒(`71ccfa23`)· 零派活
- 判定:目标 `071c5b` **仍未完成**,第 4 步(重生成界面+补闸门)**仍卡同一把孤儿域锁** `contentm_agent/执行会话`。全部读数**现取重取**:`--domain-status` 在册 2 条锁未变;`--domain-check 执行会话` 不可派;锁 `OWNER`/`DOMAINS` 与 25/26 棒逐字相同(持有人 `a257d30f` 仍 `terminated`)。
- 🔴 机制侧处置出口**已二次核实为无**:`references/作业规矩/00-作业总规矩` §4.3 逐字「AI 一律不得删锁/不得以「持有者疑似已死」为由单方面接管;锁只能由持有者自己释放」(R9)⇒ 只能用户处置。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`);无 `pending`/`running`;`taskgraph.json` 仍不存在。现取排期 ⇒ **无待执行排期**(01:24 重派 `id=3d9cbdc7` 已跑过、`next_run_at=None`)⇒ **零派活**。
- 连续第 **6** 棒(22–27)结论完全一致;`check-agent.json` `round=27`/`reason=sessions-ended`/`queue_pending=1` ⇒ 机制每 ~30 分钟建一棒、每棒撞同一面墙,须用户处置孤儿锁才能止。
- 6 条「不可核实 done」全属旧目标 `5199a6`;`content-workbench/归档-1b旧口径/` 现取只存 2 份 ⇒ 沿用「已被 `72111e` 重写合并」判定,不追。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第27棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管,⛔ 未动 `ui/`,⛔ 未加减排期。
## 04:29 · 结果检查第 28 棒(`9be045c2`)· 零派活
- 判定:目标 `071c5b` **仍未完成**,第 4 步(重生成界面+补闸门)**仍卡同一把孤儿域锁** `contentm_agent/执行会话`。全部读数**现取重取**:`--domain-status` 在册 2 条锁未变;`--domain-check 执行会话` 不可派;锁 `OWNER`/`DOMAINS` 与 25/26/27 棒逐字相同(持有人 `a257d30f` 宿主库仍 `terminated`)。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`);无 `pending`/`running`;`taskgraph.json` 仍不存在。现取宿主库 `automations` 16 条 once ⇒ `next_run_at` 除本棒外全为 `None` ⇒ **无待执行排期** ⇒ **零派活**。
- 连续第 **7** 棒(22–28)结论完全一致;`check-agent.json` `round=28`/`reason=sessions-ended`/`queue_pending=1` ⇒ 机制每 ~30 分钟建一棒、每棒撞同一面墙,须用户处置孤儿锁才能止。
- 🔴 **对上棒的证据订正(第 28 棒新增)**:机制侧挑出的 6 条「不可核实 done」全属旧目标 `5199a6` —— 登记路径确实失效,但**文件本体未丢**:现取全工作区 `1b-竞品分析-*`,5 份在 `content-workbench/证据附卷/` 与 `归档-说人话重写前-20261007/证据附卷/`,第 6 份 `跨项目汇总对比` 只存 `归档-1b旧口径/…__旧口径-20261007.md`。⇒ `artifact` 指的是**旧路径**,非产物丢失;不构成本目标缺口。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第28棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管,⛔ 未动 `ui/`,⛔ 未加减排期,⛔ 未新增 `NEED-USER.md` 条目(§3/§4 已记同一把锁)。
## 04:59 · 结果检查第 29 棒(`d77d8b43`)· 零派活
- 判定:目标 `071c5b` **仍未完成**,第 4 步(重生成界面+补闸门)**仍卡同一把孤儿域锁** `contentm_agent/执行会话`。读数**全部现取(04:59)**:`--domain-status` 在册 2 条锁未变;`--domain-check 执行会话` 仍「⛔ 不可派」(持有人仍是 `执行会话-重新生成产品界面`/`a257d30f`);目标目录 3 件 done 产物实测在盘(29 119/42 443/40 917+37 846 B)。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`);无 `pending`/`running`;`taskgraph.json` 与 `state.py` **两个输入件仍缺位** ⇒ **零派活**(派了注定干等)。
- 连续第 **8** 棒(22–29)结论完全一致;`check-agent.json` `round=29`/`reason=sessions-ended`/`queue_pending=1`/`at=04:57:28` ⇒ 机制每 ~30 分钟建一棒、每棒撞同一面墙,须用户处置孤儿锁才能止。
- 6 条「不可核实 done」全属已归档旧目标 `5199a6`;`证据附卷/` 现取 5 份在盘 ⇒ 沿用第 28 棒判定(登记路径失效、文件未丢),不构成本目标缺口。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第29棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管(R9),⛔ 未动 `ui/`,⛔ 未加减排期,⛔ 未新增 `NEED-USER.md` 条目。
## 05:29 · 结果检查第 30 棒(自动化 `a16295b7`)· 零派活
- 判定:目标 `071c5b` **仍未完成**,第 4 步(重生成界面+补闸门)**仍卡同一把孤儿域锁** `contentm_agent/执行会话`。读数**全部现取(05:29)**:`--domain-status` 在册 2 条锁未变;`--domain-check 执行会话` 仍「⛔ 不可派」(持有人仍是 `执行会话-重新生成产品界面`/`a257d30f`);锁目录 `…/.locks/____________-________________________-3786297056` 仍在(建 10-09 00:48)。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`);无 `pending`/`running`;`taskgraph.json` 与 `state.py` **两个输入件仍缺位** ⇒ **零派活**(派了注定干等)。
- 连续第 **9** 棒(22–30)结论完全一致;`check-agent.json` `round=30`/`reason=sessions-ended`/`queue_pending=1`/`at=05:27:30` ⇒ 机制每 ~30 分钟建一棒、每棒撞同一面墙,须用户处置孤儿锁才能止。
- 6 条「不可核实 done」全属已归档旧目标 `5199a6`;`证据附卷/` 现取 5 份在盘(14 141/19 459/28 909/33 458/31 026 B),第 6 份只在 `归档-1b旧口径/` ⇒ 沿用第 28 棒判定(登记路径失效、文件未丢),不构成本目标缺口。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第30棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管(R9),⛔ 未动 `ui/`,⛔ 未加减排期,⛔ 未新增 `NEED-USER.md` 条目。
## 05:59 · 结果检查第 31 棒(自动化 `f7bdf397`)· 零派活
- 五样现取:`state.py`/`taskgraph.json` **仍缺位**;台账 16 条=15 `done` + 1 `blocked`;`goal.json` `lifecycle`=进行中、`acceptance_state` 3 过 + 1 不过、`topics`=`["产品规划"]`。
- 本目标 `071c5b` 名下 4 条:`dc972b1d`/`99c2557c`/`745bf50a` 三件产物**现取均在盘**(29 119/42 443/40 917+37 846 B);唯一未完件 `7446f482` 仍 `blocked`。
- `--domain-status`(05:59)在册 **2 条**,含 `contentm_agent/执行会话 ← 执行会话-重新生成产品界面`;`--domain-check 执行会话` 仍「⛔ 不可派」;锁目录 `…/.locks/____________-________________________-3786297056` 的 `OWNER` 三行未变(建 10-09 00:48)⇒ **零派活**(派了注定干等)。
- 连续第 **10** 棒(22–31)结论完全一致;`check-agent.json` `round=31`/`reason=sessions-ended`/`queue_pending=1`/`at=05:57:31` ⇒ 须用户处置孤儿锁才能止住空转。
- `ui/` 现取:`DESIGN.md` 46 807 B + `mcn-workbench.html` 133 459 B 在盘,`_tools/`/`_gate_shots/` **仍为空目录**、无 `3b-实测记录.md` ⇒ 第 4 步仍未完成。
- 6 条「不可核实 done」仍属已归档旧目标 `5199a6`;`证据附卷/` 5 份在盘,第 6 份 `跨项目汇总对比` 在 `归档-1b旧口径/`(40 392 B)⇒ 登记路径失效、文件未丢,不构成本目标缺口。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第31棒-20261009.md`。⛔ 未改 `lifecycle`/`acceptance_state`,⛔ 未删锁/接管(R9),⛔ 未动 `ui/`,⛔ 未加减排期,⛔ 未新增 `NEED-USER.md` 条目。
## 06:21 · 主会话核实目标完成情况(用户问「目标完成情况如何」)
- 判定:**四步里前三步完成**;第 4 步「重生成界面」**实物已做完、验证与上报未做**,卡在孤儿域锁 `contentm_agent/执行会话`。
- 🔴 新取证一(L4 库级):持有会话 `a257d30f` 在宿主库 `E:/ProgramData/.workbuddy/workbuddy.db` 的 `sessions.status` = **`terminated`** —— 比此前「末次活动 00:53」的推断更硬,可直接支撑用户处置该锁。
- 🔴 新取证二(此前 22–31 棒均未记):第 4 步产物 `ui/mcn-workbench.html` 是**完整 V2**,不是半成品 —— 1661 行/133 459 B,自带 `#/selftest`;头部注释逐字写明「V2(2026-10-09):按新版 2a/2b 重做 —— 导航回三组+跨组;新增 Page Shell 一层;撤销『功能入口』那一层;业务板块按新版 39 块重排」。缺的只有 `_tools/`/`_gate_shots/` 取证、`3b-实测记录.md` 与台账上报。
- 新旧版对比(⛔ 别把「变小」当「被截断」):旧版 `执行会话/目标-…-d85687/ui/mcn-workbench.html` 189 883 B(10-08 22:06,八轮打磨);新版 133 459 B 是**有意精简重构**(撤一层功能入口、按新版 2b 重排)。
- 机制侧现状:11 个「结果检查」once 排期(第 22–31 棒)执行后**全仍 `ACTIVE`**(未回收)+ 被终止那棒 `97eca258`、补闸门棒 `3d9cbdc7` 亦挂 `ACTIVE` ⇒ 排期只增不减。
- 本棒⛔ 未动任何文件(只读核实);⛔ 未删锁/接管(R9,处置权只属用户)。
## 06:27 · 孤儿锁根因查实 + B 方案处置(用户令「B方案 授权处理」)
### 一、会话为什么异常 —— 根因是宿主 daemon 重启,不是会话自身出错
- 🔴 **直接成因**:`E:/ProgramData/.workbuddy/logs/daemon.log` 在 `2026-10-08T16:53:38.98xZ`(=本地 **00:53:38**)出现**完整冷启动序列**:`[FirstScreen] MARK F10(daemon_startup_migration_done) proc=daemon elapsed=524.21ms pid=72748` → `F11(daemon_mcp_apps_host_ready)` → `F12(daemon_services_kicked)` → `F13(daemon_background_completed)`,其间夹着 `[migration] 冷启动短路`、`[IdentityService] polling file every 2000ms`、`[wb-path] 首次绑定完成,广播给 0 个订阅方`、`[StartupProbe] stage=exit`。
- 🔴 **时序吻合**:daemon 启动序列(16:53:38.995–39.33)**早于** terminated 广播(16:53:39.584 `cl-status-sync:emitLocalStatusChanged incomingStatus=terminated`)不到 0.6 秒 ⇒ 旧 daemon 死、会话失去宿主支撑,新 daemon 起来对账即把它标 terminated。
- ⛔ **排除了三种误判**:① **不是超时** —— 会话 `session_settings.automation.timeoutMs`=5 400 000(90 分钟),实际只活 331 秒;② **不是用户点的、不是批量事件** —— 全库 `updated_at` 落在 00:40–01:10 的只有 2 个会话,另一个(第 20 棒检查会话)是 `completed`;③ **不是整个 App 重启** —— `AppStartup.log` 在 00:4x–01:0x 段无记录,是 **daemon 层**重启。
- ⚠️ daemon 为何重启**未能归因**:`main.log` 在 `16:5xZ` 段无 crash/exit/error 记录,从序列看属正常冷启动。不编原因。
### 二、孤儿锁为什么产生 —— 两层机制缺口叠出来的
- 会话 `a257d30f` 在 00:48:08 抢到域锁 `contentm_agent/执行会话`、00:53 写完 `ui/mcn-workbench.html`、00:53:39 随 daemon 一起被终止 ⇒ **没机会跑 `--release-exec`**。
- 🔴 **缺口一(锁不回收)**:锁是**磁盘持久物**(`D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/<转义名>/OWNER`),脚本 `handoff-guard.sh` 的 `trap _cleanup_guard EXIT INT TERM HUP` **只清临时文件与 `.gate`**(`rm -f "$_DOMTMP"` + `rmdir "$GATELOCK"`),**不碰域锁** ⇒ 进程没了锁还在。
- 🔴 **缺口二(判定不看死活)**:域冲突判定 `others_domains` **只比会话名**,不判持有人死活 ⇒ 后来者抢必失败(`7446f482` 实跑 `--claim-exec` RC=1)。
- 再叠 **R9**(用户 2026-09-12 明令:⛔ 不得人工删锁、不得接管)⇒ 死锁,只能用户处置。
- **根因的根因**:本机 **OS 文件锁不可用**(生产实测 `--once` 与 6 个并发 `--report` 全 rc=124 卡死)⇒ 机制放弃 OS 锁、改用「声明式锁目录 + 人工释放」。声明式锁不阻塞,代价就是**没有自动回收**。
- 🔴 **系统性证据(同型第二例)**:`--domain-status` 里另一把 `ai1net-dsh-anywhere ← [协作]N9复测-2248`,`OWNER` 写「开始:09-29 22:48」——到 10-09 已挂 **10 天**,一直没人发现。⇒ 这不是偶发,是结构性缺口。
### 三、B 方案处置(用户授权后执行)
- 释放:`ME="执行会话-重新生成产品界面" bash …/session-mechanism/scripts/lock/handoff-guard.sh --release-exec` ⇒ 返回「✓ 已释放域锁(执行会话-重新生成产品界面)」+「另有 1 把锁属**他人**,按 R9 未动」。在册域锁 **2 条 → 1 条**。
- 重派:新建排期 `[执行]-[产品规划]-重做界面补闸门与上报(第二棒)`(id `58855437`,once 2026-10-09 **06:32**),prompt 自包含:说明产物已在盘、只补闸门与上报、⛔ 不要重做界面、域门禁块、工具可从旧目标 `…-d85687/ui/_tools/` 只读借用、收工必跑 `--release-exec`。
- ⛔ 未删他人锁;⛔ 未动 `ui/` 任何文件;⛔ 未改 `lifecycle`/`acceptance_state`。
@@ -0,0 +1,77 @@
# content_marketing_agent · 项目长期记忆
> ⚠️ 本工作区**现名 `contentm_agent`**(2026-10-08 定;旧名 `content_marketing_agent`,再早 `agent-product`)。
> 整理纪律:**同一件事只在一处写全**,别处只引;新条目先进当日日志,跨会话有用才上提到这里。
## 一、仓库与位置
- 🔴 **工作区仓**(`E:/ProgramData/AIProject/contentm_agent`):远端 `[email protected]:admin/contentm_agent.git`(Gitea,SSH deploy key **有写权限**),分支 `main`;提交 `df56c2c`(首,1773 文件 / 205 MiB)+ `eee042c`(10-08 22:xx,③段第八轮收口)。提交者身份是**局部**配置 `WorkBuddy <[email protected]>`(全局 git config 未动,可推翻)。`.gitignore` 排运行时噪音(collab 日志/脚本 `.bak*`/`supervise.pid`/`.workbuddy/tmp/`/`tmp/_*.txt`/`**/ui/_scratch/`/`__pycache__/`/`tmp/_bh_shots/`·`_figma_preview/`·`_gpt_dl/`/`.workbuddy/.load-pending`);**参考资料 231M 抽帧素材全量入库**(⛔ 不打折)。
- 🔴 **全局技能仓**(`E:/ProgramData/.workbuddy/skills`)是**独立仓**:远端 `…/admin/workbuddy_skills.git`,分支 `master`(⛔ **无 upstream** ⇒ 必须 `git push origin master` 显式推,`git status -sb` **不显示 ahead**,别拿它判断同步),提交者身份是**全局** `maogeigei <[email protected]>`(与工作区仓的局部身份不同,属正常,⛔ 别"统一")。⚠️ **该仓被多会话并发写、推进以分钟计** ⇒ **任何结论都带时效,用前先 `git log -1` 校准**。此前 9 个"未纳管"目录(AI HOT/draw-ui/dsh-* ×6/oil-motion/skills-security-check)已于 `e03465c` 入库。
- 🔴 **取证通道=「只连不起」**:本机 **9223 上常驻一个独立浏览器实例**,动手前 `netstat -ano | grep ":9223"` 探;在跑就直接连,⛔ 不另起。规则在 `skills/browser-harness/SKILL.md`「🔴 本机(用户明令)」段;`_tools/cap.py` 已走 CDP `Emulation.setDeviceMetricsOverride` 定视口(声明式,390×844 可测)。🔴 **一个页面只开一个标签**(用户令),定义处同上(⛔ 不复述细则)。
- ⚠️ **本机**:裸 `bash` 会落到 WSL(路径被吃)⇒ 一律用 `E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe`。
- 全局技能根 `E:/ProgramData/.workbuddy/skills/`;本工作区 `.workbuddy/skills/` 只有 `aigc-idea-impression`。
## 二、产品规划四段流水线(MCN 项目 slug `mcn-shortvideo-agent`)
- **四段次序不可跳**:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能 → ③界面交互 → ④原型说明文档。用户 2026-10-08 定:「应该要先完成 1 2步 在进行第3步」。
- ①段 1a 落 `docs/pm/mcn-shortvideo-agent/research/1a-需求文档.md`(**汇总型**,不是 grill 产出);1b 在 `content-workbench` 项目下(跨项目引用,⛔ 不重写)。
- **产物落点**:执行期间一律落 `执行会话/目标-<标题前缀>-<sha1(title)[:6]>/`(域门禁+文档合同要求);正式归档 `docs/pm/mcn-shortvideo-agent/{research,prd}/` 由主会话收口后统一搬。
- 🔴 **本区当前目标**(`tmp/supervise-inbox/goal.json`,2026-10-08 23:29 切)=「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」,类别 `产品规划`。旧目标「根据 1a 需求文档生成 MCN…产品界面」已归档进 `goals/`。
- 🔴 **换目标必须带 `--kpi`** —— 不带 ⇒ 旧验收判据原样留下 ⇒ 新目标一声明就被判「全过」、机制不派活(已踩)。
- 🔴 **换目标还要换 `tmp/supervise-inbox/NEXT.md`** —— 那是执行会话的开工队列,不换 ⇒ 新派出的会话去做旧目标的活。
- 派活排期名 `[执行]-[<goal.topics>]-<具体>`。
- 四步目标(现行队列 `NEXT.md`):①梳理现有板块/功能划分/操作路线 → ②问 GPT 如何规划最合理 → ③重做②段两份(产品功能/界面布局)→ ④重生成界面。⛔ 按序、不跳步、不给改法抢跑。
- ✅ 第①棒已完成(2026-10-08 23:4x):产物 `产品规划/现状梳理-板块·功能·操作路线.md`(**域目录 `产品规划/` 由此建立**)。该稿口径:只摆现状与问题点(A ③段新增层/B 跨页不落地/C 流转归属/D ②③口径不一致/E 已登记未清),⛔ 不给改法。
## 三、③段设计供给(**单一可信源**)
- 🔴 **供给关系只在 `references/stage-delivery/SKILL.md` 的 `## 供给(唯一权威处 · 改供给只改这一块)` 块里定义**(6 行表:方法主线|定调与令牌|版式骨架|工艺数值判据|独立评审协议|多方向比选)。③段其余章节、`references/execution-runbook.md`、`references/layouts-tooling.md`、总入口 `product-planning/SKILL.md` 提到供给**一律引 `§供给·<行名>`**,⛔ 不许复述「谁是默认/路径在哪/装了才有」。**改供给只改那一块**,改完跑闸门。边界:各档**内部**篇目(如可选档 `craft/xxx.md`)属执行细节,留在 runbook 各步里,不算复述。起因:这个事实曾被复述约 40 处,改一次动三份文件 17 处仍漏 13 处。
- 🔴 **默认主线 = `oil-ui-pro`**(方法+独立评审);定调与令牌取③段自带样式库 `assets/design-systems/`(当前 `design-system-tiaoyue`)。**`open-design` 是可选件**(2026-10-08 起由另一会话随③段携带于 `references/stage-delivery/assets/open-design/`,**选了才用**;源 `nexu-io/[email protected]`,Apache-2.0 本地裁剪版,64 MB / 4177 文件)。三份技能文档共 17 处已翻转,并统一读法:凡出现 `open-design/...` 路径一律按段内相对路径 `assets/open-design/...` 读。
- ⚠️ `assets/open-design/` 是**第三方件**,⛔ 不许改其文件内容;署名见其 `ATTRIBUTION.md`。⚠️ 当前**缺 Apache-2.0 的 LICENSE 全文与上游 NOTICE**(2026-10-08 记账)。
- ⚠️ **真缺口**:open-design `craft/` 的 13 份工艺数值判据(反 AI 味/无障碍/表单校验/动效纪律)在**没装 open-design 的工作区无供给来源** ⇒ 明说,⛔ 不编。
- 🔴 **说人话的处置(2026-10-08 用户选 C)**:⛔ **两个技能的内容不整合进 product-planning**,保持按技能名引用(整合会造第二处定义)。分工写在总入口「执行规则」内容准则条:**模式清单取 `humanizer`**(含 `references/patterns.zh.md`,中文产出读它)|**评分与门槛取 `humanizer-zh`** 五维表(**≥45/50**)|冲突以 `humanizer-zh` 为准|⛔ **取不到来源时明写「无判据来源,本项未判」,不许凭感觉放行**。落盘文字一律过说人话并在文末写评分。
## 四、技能包闸门与改包纪律(`product-planning`)
- ⚠️ 闸门 `check_naming.py` **必须带 `--ws`**:`python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ 期望 **通过 2060 | 失败 0 | 提示 27**;⛔ **别给 `--root .`**(那是「技能根」,会把工作区当技能包查、满屏 FAIL)。**改全局技能包前后都要跑它**。
- 🔴 **「单一可信源」门禁**:`check_naming.py` 的 `AUTHORITY` 表登记「会变的事实 → 唯一定义处」,除定义处外任何地方复述即 FAIL。当前 9 条:②③边界(权威=②段 §②—③ 交接口)|停线规则(全包禁写,权威=总入口 §执行规则)|可选档骨架名单(权威=`layouts-tooling.md` 开头)|说人话门槛|对比度数值|契约十二字段展开(权威=runbook §2.1)|②③定案原话|1b 定案原话|grill A/B 节火力点。**改这些事实只改权威处,然后跑闸门。** ⚠️ 写"不复述"时⛔ 别把名单抄进来(我自己踩过)。
- 🔴 `DEAD_PATHS` 检查:`strategy/`、`ux/` 这类已废目录形态若出现在正文的产出/只读/必读位置 ⇒ FAIL;含废止标记(旧/已废/已改名/曾/移进/改为…)的行豁免。
- ⚠️ **改门禁后必须做变异对照**(注一条假病进去,确认报红,再还原)。反面教训:`check_naming.py` 曾因用 stale 变量(`if old in t` 该用 `tt`)导致「旧名提示」**恒不触发**(假绿)。
- ✅ 2026-10-08 第八轮修掉 3 条既有 FAIL:①「停线规则」在 `AUTHORITY` 表里的 `authority` 写成 `None`(自相矛盾且 `SKILL.md` 里没有这条规则)⇒ 已补进「执行规则」;②③ `stage-proto-doc` 与 `usage-scenario` 仍写①段已废的 `strategy/` 路径 ⇒ 已改 `research/1d-产品策略.md` / `research/1e-使用场景.md`。
- 🔴🔴 **改包纪律(技能仓根 `改包纪律.md`,技能仓提交 `0011050`,谁来这个仓干活先读它)**:⛔ **不许整文件覆盖**|落地前**比对时点**|改完**必跑闸门**|收到覆盖性提交先做**结构体检**。+出事后的标准修法。
- 🔴🔴 **事故留痕:全局技能包曾不是最新调整版**(2026-10-08 22:5x 查明):提交 `1d7d31a` 提交信息写「按合并落地」,实际是**整文件覆盖** product-planning 下 7 个文件,新稿编写时点**早于**被覆盖文件的修改时点 ⇒ 必丢中间调整。**硬指标:「单一可信源」类声明 5 处 → 1 处**(丢的是 `stage-delivery/SKILL.md` 的 `## 供给` 整节标题+六行表、`layouts-tooling.md` 开头的名单权威声明、`stage-requirements/SKILL.md` 的②—③交接口声明),**供给口径被翻转**成「open-design = 默认主线」。✅ **2026-10-08 23:0x 已整包回退到 `44d42b0`(技能仓提交 `8fc9a92`)**,闸门回 `2060 | 0 | 27`;那批「说人话」改写另存 `归档/技能包-说人话改写-被覆盖存档-20261008/`(将来只取措辞、⛔ 不取结构改动)。
- 🔴 **闸门 12 条 FAIL 的归因(已坐实)**:由 `1d7d31a`(10-08 22:22,作者 maogeigei)**一步引入**。验证法(可复现):`git archive <版本> product-planning` 抽出来各跑一次闸门 —— `44d42b0` ⇒ 全过、`1d7d31a` ⇒ 失败 12;且 `git diff --stat 44d42b0..HEAD -- product-planning/scripts/check_naming.py` **为空**(判据零改动,排除"判据变严翻旧账")。性质像**回退**:把权威声明整段删掉 ⇒ **权威处一弱化,复述就长回来**。⛔ 修法顺序:**先恢复权威处声明,再清复述**,反了会反复。⛔ 别默认是"自己上次的债"。
- 🔴 **并发覆盖实录与 B 方案补落**:我第八轮在 `stage-delivery/SKILL.md` 供给块的三处被另一会话那轮重写覆盖。用户选 B 方案后由其转告「另一会话已完成」,**核实现场不符**(HEAD 与 mtime 都没动、远端无新提交)⇒ 本会话 22:4x 补落(提交 `46bee95`)。⛔ 判"改动是否还在"一律 `git show HEAD:<文件> | grep`,⛔ 别看 `--stat` 行数。
- ⚠️ 全局技能包被多会话并发写:改前先看 mtime,改后必复跑 `check_naming.py`(该脚本只读、不写盘)。
- 🔴 **③段导航规则已改(第八轮)**:`layouts-tooling.md` **§5.5.2 判据订正** —— 从「栏宽必须 240–280px」改成「**每一项的名字必须常驻可读**(字号 ≥12px 不截断;64px 栏的名字上限 2 个汉字)」,判实质不判手段;**新增 §4.9「导航栏」一档**(两套合规形态:64px 药丸栏 / 240–280px 宽栏;含当前项只改颜色、窄屏整段换形态、⛔ 横滚条不许画滚动轨、图标一处出口、⛔ 不许照组件清单计数反推形态)。
- 🔴 **③段两条元规则(第八轮新增,`layouts-tooling.md` §5.6)**:① 参照物原值与我方令牌刻度冲突时**必须**走三步(量到数值 → 差异列表 → 逐条「学/不学+理由+代价」),⛔ 不许默默"就近落位",「刻意不学」⛔ 不得用于掩盖规则违反;② **自造物料(参照物笔记、临时对照表)⛔ 不得作为判据来源** —— 证据栏只许写「技能原文的文件:小节」「源站/源文件实测读数」「用户原话」。
- 🔴 **③段 Gate-3 新增强制两条(第八轮)**:① **「看过」必须有落盘记录**(`oil-ui-pro` 10 分制评分写进 3d),⛔ 不许用「自检 N 项全绿」顶替;② **人工项必须给机检实现,否则写死「本条无机检」,⛔ 不许在没有取值手段的条目上打 ✅**(起因:`3d` §九 曾把「§5.5 五条逐条过完」记成 `✅ 自检机核`,而那五条当时**零覆盖**)。
## 五、③段原型(`ui/mcn-workbench.html`)硬口径
- 🔴 **外壳高度链三件套**:只写 `html,body{height:100%;overflow:hidden}` ⇒ `.app` 跟着内容长高、`.view` 自己不滚、滚动落回 `<body>`,而 body 是 hidden ⇒ **整页「滚不动」而不是「不滚」**,折叠线以下内容永远拿不到。必须同时写 `.app{height:100vh;grid-template-rows:minmax(0,1fr)}` + `.main{min-height:0;overflow:hidden}` + `.view{flex:1 1 auto;min-height:0;overflow:auto}`。
- 🔴 **判据核滚动必须四个容器都核**:`window` / `html` / `body` / `.view`。只核 `window.scrollY` 会给**假绿**(原型自检曾在 500×844 报「一屏 7 行」,真值不到 1 行)。⇒ 连带:改门禁后**变异注入点也要重指**(M9 原注入 `window.scrollTo`,外壳修完后 window 根本滚不动 ⇒ 假变异,已改成注入 `.view.scrollTop`)。
- 🔴 **顶栏只放两项**:左「MCN 短视频整合营销工作台」+ 右「**随手记**」。⛔ 不许再加。依据:②段 `2b` §286 只把「随手记」定为全局可达(「任意页面一次点击内,F2 是 P0,不能埋在两层下」)⇒ 必须挂全局外壳,其余一律不许挂。
- ⛔ **已删六样,逐样来源**(详查在 `3d` §十):`收起侧栏`(G-11) 与**面包屑**来自**本项目参照物笔记** `ui/布局排版参考-mcn-work-shop.md`(⚠️ 那是**素材,不是规则文件**);`演示·账号`(G-07)/`演示·状态`(G-09) 是造的原型件;顶栏`全局检索`(G-10) 与②段 P1 的页内板块重复(**已改挂到 P1 页内**);`假设 2 项`改挂到「假设」徽章(G-08)。
- 🔴 两条纪律:①**别把「参照物产品的习惯」当需求搬进外壳**;②**撤销一个交互 ID 必须同时删它的 DOM**,否则判据「每个 data-act 都在清单里」报红。
- ⚠️ 连带:顶栏内衬 8px ⇒ **49px、任何宽度不折行**;页面身份靠页头 h1(不再有面包屑);六态由**路由**进入(`#/p/p4/empty`)。
- 🔴 **左侧栏=一层八个功能项**,与②段八页一一对应;**短名一律 2 个字**(总览/选题/资产/创作/发布/画像/复盘/对账)。**形态=64px 药丸浮栏**:栏 64px/内衬 3px/圆角 100px/淡底+1px 淡描边(⛔ 无右边线);项 **56×78 药丸**(圆角 54/内衬 16/段间距 6),**图标 24 在上、2 字短名 12px/500 在下,两者都常驻**;当前项=中性填充 `ink 6%` + 满墨(⛔ 不用品牌紫底);非当前项 `--ink-faint`;hover 只换色。悬停提示的内容是**该页说明**、⛔ 不是名字。⛔ 三处不学:填充字形图标/真浮层/逐项对齐的 162px 说明列。
- 自检判据:`#nav .nav-item` 恰 8 个、`#nav` 直接子元素全是 `.nav-item`(第二层 0 个)、八项逐个点过都落到自己那页。
- ⛔ 历史弯路两条:①写成「只有一层=四个大板块」;②塞八页项但带 240px 宽文字列表。⚠️ **形态一改,自检判据的选择器与变异注入点必须跟着改**(本轮 `.nav-flat`→`.nav-item`,M2/M8 重指),否则判据静默失效变恒绿 —— 假绿已踩过 4 次。
- ⚠️ 教训:改前那版「纯图标栏、名字只走提示」是**照 `library.json` 的计数猜的** —— **计数不是几何,包里没有的事实就回源站量**。
- 🔴 **左右布局**:每页都有一处两栏 `.grid-main-side`(宽比 **1.35fr : .9fr**):左=上下文/列表,右=产出/动作/详情;主数据块仍满宽。`≤900px` 落单列。
- 🔴 **功能入口卡 `.data-card`=三段纵向**(照参照物 `mcn-work-shop` 首页逐值量):图标 22px **独占一行** → 标题 `--fs-18/600`(行高写死 1.35)→ 描述 `--fs-14`(行高 1.35);`gap:6px`、`padding:16px`、`--sh-L1` 阴影;网格 `minmax(200px,1fr)`。**实测卡高 111.19px**。⛔ 三个刻意不学:圆角 12px、`translateY(-2px)` 位移、一个功能一个色。`.sect-nav` **没有小标**。⚠️ 这张卡的高度会转嫁给密度契约(它紧贴「数据统计」下面)—— 当前靠三处收高(卡内衬 12/16、`≤1000px` 隐描述、`≤1024` 顶栏内衬 8px)维持边界。
- 🔴 **学参照物=量到细节,⛔ 不是「知道有这个名字」**(用户点破:「每个组件的样式 高度 ICON 都是需要学习的,比如功能入口,感觉没有学到细节」)。纪律:**学任何组件都要回源站量**(`style.css` 行号 + `app.js` 生成函数),逐项记「参照物原值 / 我方现值 / 学没学 / 为什么」,**「刻意不学」也要写理由**。参照物位置(只读):`E:/ProgramData/AIProject/mcn-short-video/project/短视频脚本创作/V1.0/mcn-work-shop/public/`;量到的值存两处:`ui/布局排版参考-mcn-work-shop.md` §六(摘要)+ `ui/3d-审查报告.md` §十一(全量)。**三条刻意不学**:冷灰蓝品牌色/8 色相图标/圆角 12px 体系。
- 🔴 **密度分界(第八轮 A 方案后)**:P1 账号矩阵 **绿 = 1440/1280/1024/1000/960/920/901/900/840/820/768/700/640/560**;**红只剩 500×844**。做法:`≤1000` 功能入口卡最小宽 `200→160`、`≤820` 统计条最小宽 `132→96`(`auto-fit` 只在真装不下时才缩 ⇒ 宽屏一格未动)+ 移动档藏掉 16px 横向滚动轨。⚠️ 两档阈值已写进 `DESIGN.md` §1.1 ⑨ 断点表(原表 `901–1024` 与 `901–1000` 区间重叠,已校正成六档不重叠)。**遗留未清**:`3d` B-15(500×844 一屏 −1 行)**留档待裁定**,给了 A/B/C 三条路与代价,⛔ 判据一个字没改。旧文档写的「边界 768px」是**假数**,已整表替换。
- 🔴 **改一个组件高度之前,先跑「改前基线」**(改动回退成 `_scratch/base.html`,同一套判据跑满逐视口表)⇒ 才能分清哪条红是自己造成的。⚠️ 几何一改(加图标、改内衬、改网格最小宽),**逐视口密度表必须整表重跑** —— 这个毛病犯过两次(第六轮只量 1440、本轮 640 从 5 行掉到 3 行)。
- 🔴 **第 5 个门禁 `ui/_tools/check_js.py`**:抠 `<script>` 段跑 `node --check` + **多行**扫 script 区内每个 `<!-- … -->` 块里的**反引号**(反引号常在注释续行上,⛔ 单行扫会漏;已做变异对照)。**改原型两条硬坑**:① JS 模板字符串里的 HTML 注释**不许出现反引号** —— 会提前闭合模板字面量,而 `node --check` 整份 html **报不出来**,页面静默白屏/`xxx is not defined`(**踩了 4 次**);② HTML 注释**必须写 `-->`**,写成 `*/` 会吞掉后面整段。⇒ 改完先 `node --check` 再跑自检。
- 🔴 MCN 原型「外部参考版」照搬结论:`3c-GPT参考版.md` 那版 P1 用**满宽表格顺排**,照搬后账号矩阵首行顶 724px ⇒ 一屏只 2 行(契约 ≥6),把行内第二行小字拿掉仍只 4 行 ⇒ **满宽表格与「一屏 ≥6 行」不可兼得**,要兼得得把每格压成一个短值(动②段定的次级信息档位)。已登记、未动。
## 六、本区会话机制
- 🔴 **本区机制:开关 `off`,但常驻仍在跑**(2026-10-08 23:4x 实测订正本节旧说法):`collabctl.py status` 读数=开关 off | **常驻 ✅ 活 pid 40016 · 心跳 2 秒前** | 看板在听 20099 | 保活任务 `collabd-keepalive-contentm_agent` = Ready(旧区名的 `collabd-supervise-agent-product` 等仍是 Disabled)。⇒ **⛔ 别把 off 读成「没在跑」**(开关只挡「自动续命」);有活动目标时不必另起常驻。要真起/真停 ⇒ `collabctl.py on|off --ws E:/ProgramData/AIProject/contentm_agent`。
- 🔴 机制登记**已全部改成现名** `contentm_agent`:`collabd.config.json` 的 `workspace` + `collabctl.py` 的 `WORKSPACES`/`KEEPALIVE_TASKS`(**源 + 3 个区副本共 4 份,改一处要改 4 份**)+ ai1net 的 `peer_workspaces`。旧空壳目录改名 `content_marketing_agent.RETIRED-20261008` 保留(零删除)。⚠️ ai1net 改了 peer ⇒ **看板要重启**才生效(配置模块级只读一次)。
- ⚠️ **`collabctl.py` 的 `off --ws` 曾越区**(`kill_all()` 全机扫描不认 `--ws`,一次杀掉他区+看板共 5 个进程)⇒ 已修:`ONLY_WS` 时只杀本区心跳 pid 并提前 return。⛔ 改这文件记住**源 + 3 区副本**都要改。
- 域锁:域目录=**工作区下的第一层目录**(本次建立的域目录是 `产品规划/`,域键 `contentm_agent/产品规划`);⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**,⛔ 不许硬写。释放:`--release` → `--release-exec "<会话名>"`。
- ⚠️ **本目标(`…-071c5b`)的产物落点分岔**:目标目录合同(`collabd.artifact_dir_ok`)判「不在目标目录内」,而域门禁要求「只许写域目录」。第①棒取域目录 `产品规划/`(收到软提醒,非拒收);第②棒改取**域目录 `执行会话`**(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径等用户裁定。
- ⚠️ `--report <sid> --state done --artifact "<路径>"` 对**不在目标目录内**的产物会给一条**软提醒**(不是拒收)—— 域门禁要求写域目录时,这是预期行为,如实记下即可。
+55 -66
View File
@@ -1,73 +1,62 @@
# content_marketing_agent · 项目长期记忆 # contentm_agent · 项目长期记忆
## MCN 短视频整合营销工作台(项目 slug `mcn-shortvideo-agent`) > ⚠️ 本工作区**现名 `contentm_agent`**(2026-10-08 定;旧名 `content_marketing_agent`,再早 `agent-product`)。
> 整理纪律:**同一件事只在一处写全**,别处只引;细则进当日日志,跨会话有用才上提这里。
> 🔴 **本文件 2026-10-09 压缩过一次**(原 22.5 KB,注入时被截断)。压缩前全量存同目录 `MEMORY-压前全量-20261009.md`。
> ⚠️ 本文件按 ~9 KB 维护:**再加内容先删等量旧内容**,超过就会被截断(等于白写)。
- 产品规划四段流水线,**次序不可跳**:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能(功能清单+界面布局)→ ③界面交互 → ④原型说明文档。用户 2026-10-08 定:「应该要先完成 1 2步 在进行第3步」。 ## 一、仓与位置
- ①段 1a 是**汇总型**需求(不是 grill 澄清产出),落 `docs/pm/mcn-shortvideo-agent/research/1a-需求文档.md`;1b 竞品分析在 `content-workbench` 项目下(`docs/pm/content-workbench/research/1b-竞品分析.md` + `证据附卷/` 5 份独立分析体),跨项目引用、不重写。
- 🔴 ③段设计供给口径(2026-10-08 用户定):**默认主线是 `oil-ui-pro`**(方法+独立评审),定调与令牌取③段自带样式库 `assets/design-systems/`(当前 `design-system-tiaoyue`);**不使用 `open-design`**(2026-10-08 起已由**另一个会话**随③段携带于 `references/stage-delivery/assets/open-design/`,作**可选件**、选了才用;源 `nexu-io/[email protected]`,Apache-2.0 本地裁剪版,64 MB / 4177 文件)。
- ⚠️ 2026-10-08 用户令已**改全局技能文档**(不再是「通则不改」):`product-planning/SKILL.md`、`references/stage-delivery/SKILL.md`、`references/stage-delivery/references/execution-runbook.md` 三份共 17 处,「③段默认主线」由 open-design 翻转成 oil-ui-pro;`open-design` 降为**可选件**(另一会话同期把它随段携带进 `assets/open-design/`,故口径是「选了才用」而非「装了才有」)。三份各写一条统一读法:凡出现 `open-design/...` 路径一律按段内相对路径 `assets/open-design/...` 读。
- 🔴 逐段管理要点:`assets/open-design/` 是**第三方件**,不许改其文件内容;署名见 `assets/open-design/ATTRIBUTION.md`。⚠️ 当前**缺 Apache-2.0 的 LICENSE 全文与上游 NOTICE**(2026-10-08 记账)。
- 🔴 **说人话(`humanizer` / `humanizer-zh`)的处置口径(2026-10-08 用户选 C)**:⛔ **两个技能的内容不整合进 product-planning**,保持「按技能名引用」—— 整合会制造第二处定义(本包「单一可信源」纪律专治此病),且这两个技能是全包乃至跨包通用的(用户 10-07 定案「不管是写规则还是写文档都要按说人话的技能执行」),整合等于把它们降格成附件。分工已写进总入口「执行规则」内容准则条:**模式清单取 `humanizer`**(含 `references/patterns.zh.md`,中文产出读它)|**评分与门槛取 `humanizer-zh`** 五维表(≥45/50)|冲突以 `humanizer-zh` 为准|⛔ **取不到来源时明写「无判据来源,本项未判」,不许凭感觉放行**。两技能早已入库(`777f7fe`,9 个文件),技能仓提交 `8b655ab`。
- ⚠️ 全局技能包被多会话并发写:2026-10-08 02:2x 实测「本会话」与「另一个会话」同时在改 `stage-delivery/SKILL.md` / `execution-runbook.md` / `layouts-tooling.md` ⇒ 改前先看 mtime,改后必复跑 `check_naming.py`(该脚本只读、不写盘)。
- 🔴 **③段供给关系 = 单一可信源**(2026-10-08 用户令「按照建议处理」,A 方案已落地):`references/stage-delivery/SKILL.md` 的 `## 供给` 块是**唯一定义处** —— 6 行表:方法主线|定调与令牌|版式骨架|工艺数值判据|独立评审协议|多方向比选。③段其余章节、`references/execution-runbook.md`、`references/layouts-tooling.md`、总入口 `product-planning/SKILL.md`,提到供给**一律引 `§供给·<行名>`**(行名取表左列),⛔ 不许复述「谁是默认/路径在哪/装了才有」。**改供给只改那一块**,改完跑闸门。边界:各档**内部**篇目(如可选档 `craft/xxx.md`)属执行细节,留在 runbook 各步里,不算复述。起因:此前这一个事实被复述约 40 处,改一次动三份文件 17 处仍漏 13 处。
- ⚠️ 闸门 `check_naming.py` **必须带 `--ws`**:`python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ 期望 `通过 2060 | 失败 0 | 提示 25`;⛔ **别给 `--root .`**(那是「技能根」,给了会把工作区当技能包查、满屏 FAIL)。
- 🔴 **MCN 原型的两个硬口径(2026-10-08 修,别再踩)**:
1)**外壳高度链三件套**:`html,body{height:100%;overflow:hidden}` 只写这条 ⇒ `.app` 跟着内容长高、`.view` 自己不滚、滚动落回 `<body>`(`body.scrollTop` 有值而 `window.scrollY` 恒 0),而 body 是 hidden ⇒ **整页「滚不动」而不是「不滚」,折叠线以下的内容永远拿不到**。必须同时写 `.app{height:100vh;grid-template-rows:minmax(0,1fr)}` + `.main{min-height:0;overflow:hidden}` + `.view{flex:1 1 auto;min-height:0;overflow:auto}`。
2)**判据核滚动必须逐个容器核**:只复位/只核对 `window.scrollY` 会给出**假绿**(原型自检曾在 500×844 报「一屏装得下 7 行」,真值不到 1 行)。要核 `window` / `html` / `body` / `.view` 四个量。
⇒ **连带教训**:改门禁后那条**变异注入点也要重指** —— M9 原来注入 `window.scrollTo`,外壳修完后 window 根本滚不动,那条变异变成「抓不到东西的假变异」,已改成注入 `.view.scrollTop`。
- 🔴 MCN 原型密度真边界(2026-10-08 重测):**≥901px 宽达标**(1440/1280/1024 一屏 8 行、1000/960/920/901 七行),**≤900px 不达标**(900 三行、768 两行、641 一行、500×844 零行;P2 在 500×844 也掉到 5 行)。边界=两栏带 `.band` 的收线 `max-width:900px`。旧文档写的「边界 768px」是**假数**产物,已整表替换。
- 🔴 MCN 原型「外部参考版」照搬结论:`3c-GPT参考版.md` 那版 P1 用**满宽表格顺排**,照搬后账号矩阵首行顶 724px ⇒ 一屏只 2 行(契约 ≥6),把行内第二行小字拿掉仍只 4 行 ⇒ **满宽表格与「一屏 ≥6 行」不可兼得**,要兼得得把每格压成一个短值(动②段定的次级信息档位)。已登记、未动。
- 🔴 **学参照物=量到细节,⛔ 不是「知道有这个名字」**(2026-10-08 用户点破:「MCN 工作台里面每个组件的样式 高度 ICON 都是需要学习的,比如功能入口,感觉没有学到细节」)。
教训实例:功能入口卡 `.data-card` —— 名字是从参照物笔记里照抄的,但**图标(22px 单色)/ 内衬 16/18 / 标题 17px / 网格 200px / hover 位移**全丢了,只抄了个「白底 + 标题 + 描述」。
⇒ 定成纪律:**学任何组件都要回源站量**(`style.css` 的行号 + `app.js` 的生成函数),逐项记「参照物原值 / 我方现值 / 学没学 / 为什么」,**「刻意不学」的也要写理由**(⛔ 不许漏掉混过去)。
参照物位置:`E:/ProgramData/AIProject/mcn-short-video/project/短视频脚本创作/V1.0/mcn-work-shop/public/`(只读)。
量到的组件原值存在两处:`ui/布局排版参考-mcn-work-shop.md` §六(摘要)+ `ui/3d-审查报告.md` §十一(全量对照)。**三条刻意不学**:它的冷灰蓝品牌色 / 8 色相图标 / 圆角 12px 体系。
- 🔴 **第 5 个门禁 `ui/_tools/check_js.py`**(2026-10-08 上线):抠 `<script>` 段跑 `node --check` + **多行**扫描 script 区内每个 `<!-- … -->` 块里的**反引号**。
起因:「模板字面量里的 HTML 注释带反引号」这个坑**踩了 4 次**,每次都是页面在浏览器里才炸(白屏 / `xxx is not defined` / `Unexpected identifier`),而 `node --check` 整份 html **报不出来**。
⚠️ 必须**多行**扫 —— 反引号常在注释的**续行**上,单行 grep 抓不到(我自己就漏过一次)。已做变异对照(注入反引号 ⇒ FAIL 2 项、退出码 1)。
⚠️ 另一条硬教训:**几何一改(加图标、改内衬、改网格最小宽),逐视口密度表必须整表重跑** —— 第六轮只量了 1440(697px/6 行 ✅)就往下走,回头发现 640 从 5 行掉到 3 行(卡片变高 + minmax 180→200 让三张卡折成两行)。
- 🔴 **顶栏口径(2026-10-08 第四轮定案)**:顶栏只放**两项** —— 左「MCN 短视频整合营销工作台」(产品名)+ 右「**随手记**」。⛔ 不许再往里加东西。
依据:**②段 `2b` §286 只把「随手记」定为全局可达**(原文「随手记出现在任意页面一次点击内,F2 是 P0,不能埋在两层下」)⇒ 它必须挂全局外壳。其余一律不许挂顶栏。
⛔ **已删的六样,逐样来源**(详细排查在 `3d-审查报告.md` §十):`收起侧栏`(G-11)与**面包屑**来自**本项目参照物笔记** `ui/布局排版参考-mcn-work-shop.md`(⚠️ **它不是规则文件,是素材**);`演示·账号`(G-07)/`演示·状态`(G-09)是我造的原型件(规则只说「状态由**路由 + 演示开关**驱动」,路由那条已完整覆盖);顶栏`全局检索`(G-10)与②段 P1 的**页内板块**重复;`假设 2 项`是我自己挂在顶栏的第二处 → **改挂到「假设」徽章上**(徽章可点,G-08 仍活)。
🔴 两条纪律:①**别把「参照物产品的习惯」当需求搬进外壳**(本轮 6 项里一半是这么来的);②**撤销一个交互 ID 必须同时删掉它的 DOM**,否则判据「页面上每个 data-act 都在清单里」报红。
⚠️ 连带口径:顶栏内衬 8px ⇒ **49px、任何宽度不折行**;页面身份靠页头 h1(不再有面包屑);六态由**路由**进入(`#/p/p4/empty`)。
- 🔴 **导航口径(2026-10-08 第四次改定;层级与命名部分)**:左侧栏 **只有一层=八个功能项**,与②段八页一一对应;**短名一律 2 个字**(总览 / 选题 / 资产 / 创作 / 发布 / 画像 / 复盘 / 对账 —— 2 字是硬上限,见下面那条形态条目);页头仍写②段页面全名。**形态(64px 药丸浮栏、项 56×78、图标 24 + 名字常驻、中性填充当前态)以本文件下面那条「③段侧栏=64px 药丸浮栏」为准** —— ⛔ 不要在这里复述一遍,那是两处口径打架的老毛病。
自检判据:`#nav .nav-item` 恰 8 个、`#nav` 直接子元素全是 `.nav-item`(第二层 0 个)、八项逐个点过都落到自己那页、八页一次点击可达。
⛔ 历史弯路两条,别再走回去:①上一版写成「只有一层=四个大板块」(把「一层」读成「只剩板块、把页面藏起来」);②再上一版把八个页项塞进侧栏但带 240px 宽文字列表。
⚠️ 形态一改,**自检判据的选择器与变异注入点必须跟着改**(本轮 `.nav-flat`→`.nav-item`;M2/M8 注入点重指),否则判据会静默失效变恒绿 —— 这类假绿已经踩过 4 次(M7/M10 上一轮、M2/M8 本轮)。
- 🔴 **左右布局**:每页**都**有一处两栏(`.grid-main-side`,宽比 **1.35fr : .9fr**,照 `3c-GPT参考版` 的 `.grid.cols2`):左=上下文/列表,右=产出/动作/详情;主数据块仍满宽。`≤900px` 落单列(与 `.band` 同步)。
- ⚠️ **改原型时的两条硬坑(都踩过)**:① 在 JS 模板字符串里写 HTML 注释,**注释里不许出现反引号** —— 会把模板字面量提前闭合,而 `node --check` 仍通过(`` `x` `` 后接 `.y` 被解析成成员访问)⇒ 页面静默白屏;② HTML 注释**必须写 `-->`**,写成 `*/` 会把后面整段吞成注释。改完先跑 `node --check` 再跑自检。
- ⚠️ **功能入口卡的高度会转嫁给密度契约**:它紧贴「数据统计」下面,卡越高,下面那张「一屏 ≥6 行」的列表首行顶越低。当前靠三处收高(卡内衬 `12/16`、`≤1000px` 隐描述、`≤1024` 顶栏内衬 8px)把边界维持在 **901px**。
- 🔴 **产品规划技能包已立「单一可信源」门禁**(2026-10-08):`check_naming.py` 里的 `AUTHORITY` 表登记「会变的事实 → 唯一定义处」,除定义处外任何地方出现复述即 FAIL。当前 9 条:②③边界(权威=②段 §②—③ 交接口)|停线规则(全包禁写,权威=总入口 §执行规则)|可选档骨架名单(权威=`layouts-tooling.md` 开头)|说人话门槛|对比度数值|契约十二字段展开(权威=runbook §2.1)|②③定案原话|1b 定案原话|grill A/B 节火力点。**改这些事实只改权威处,然后跑闸门。**
- 🔴 `DEAD_PATHS` 检查:`strategy/`、`ux/` 这类已废目录形态若出现在正文的产出/只读/必读位置 ⇒ FAIL(已废路径曾 4 处残留且无门禁报)。含废止标记(旧/已废/已改名/曾/移进/改为…)的行豁免。
- ⚠️ 反面教训:`check_naming.py` 曾因**用 stale 变量**(`if old in t` 该用 `tt`,前面还跑了一个只赋值的空循环)导致「旧名提示」**恒不触发**(假绿)。**改门禁后必须做变异对照**:注一条假病进去,确认它真的报红,再还原。
- 真缺口:open-design `craft/` 的 13 份工艺数值判据(反 AI 味/无障碍/表单校验/动效纪律)在没装 open-design 的工作区**无供给来源** ⇒ 明说,⛔ 不编。
- 产物落点:执行期间一律落 `执行会话/目标-<标题前缀>-<sha1(title)[:6]>/`(域门禁+文档合同要求);正式归档 `docs/pm/mcn-shortvideo-agent/{research,prd}/` 由主会话收口后统一搬。
- 🔴 **工作区已 git 化**(2026-10-08 08:1x):远端 `[email protected]:admin/contentm_agent.git`(Gitea,SSH deploy key **有写权限**),本地分支 `main`,首次提交 `df56c2c`(1773 文件 / 205 MiB pack)、第二次 **`eee042c`**(10-08 22:xx,③段第八轮收口,48 文件),均已推送。`.gitignore` 排运行时噪音(collab 日志/脚本 `.bak*`/`supervise.pid`/`.workbuddy/tmp/`/`tmp/_*.txt`/`**/ui/_scratch/`/`__pycache__/`/`tmp/_bh_shots/`·`_figma_preview/`·`_gpt_dl/`/`.workbuddy/.load-pending`),**参考资料 231M 抽帧素材全量入库**(⛔ 不打折)。提交者身份是**局部**配置的 `WorkBuddy <[email protected]>`(全局 git config 未动),可推翻。 - **工作区仓** `E:/ProgramData/AIProject/contentm_agent`:远端 `[email protected]:admin/contentm_agent.git`(Gitea,deploy key **有写权限**),分支 `main`;提交者身份是**局部** `WorkBuddy <[email protected]>`(全局 git config 未动,可推翻)。参考资料 231M 抽帧素材**全量入库**(⛔ 不打折);`.gitignore` 排运行时噪音。
- 🔴 **全局技能仓**(`E:/ProgramData/.workbuddy/skills`)是**独立仓**:远端 `[email protected]:admin/workbuddy_skills.git`,分支 `master`(⛔ **无 upstream 配置** ⇒ 必须 `git push origin master` 显式推,且 `git status -sb` **不显示 ahead**,别拿它判断同步与否),提交者身份是**全局** `maogeigei <[email protected]>`(与工作区仓的局部 `WorkBuddy` 不同,属正常,⛔ 别"统一")。⚠️ **该仓被多会话并发写、推进以分钟计**:2026-10-08 我推 `44d42b0` 后数分钟内,另一会话又推了 5 个提交(撤销「项目会话」更名 + 141 处说人话替换 / 机制对外改叫「项目机制」 / **把 9 个此前未纳管的技能目录入库 `e03465c`** / 修 draw-ui·oil-motion 的子模块指针),HEAD 已到 `237a09a`。⇒ **本仓任何结论都带时效,用前先 `git log -1` 校准**;那 9 个目录(AI HOT/draw-ui/dsh-* ×6/oil-motion/skills-security-check)**已入库,不再是"未纳管"**。 - 🔴 **全局技能仓** `E:/ProgramData/.workbuddy/skills` 是**独立仓**:远端 `…/admin/workbuddy_skills.git`,分支 `master`,⛔ **无 upstream** ⇒ 必须 `git push origin master` 显式推(`git status -sb` 不显示 ahead);提交者=**全局** `maogeigei`(与工作区仓不同,属正常)。⚠️ 被多会话并发写、分钟级推进 ⇒ **用前先 `git log -1` 校准**。
- 🔴 **并发覆盖实录与 B 方案补落(2026-10-08)**:我第八轮在 `stage-delivery/SKILL.md` 供给块的三处(能力边界 / 九档 / 证据缺口)被另一会话那轮重写覆盖(供给块整体换成另一种表结构),§5.5.2 标题也被换回旧写法,还留下一段**重复的「实证」**。用户选 B 方案后由其转告「另一会话已完成」,**核实现场不符**(HEAD 与 mtime 都没动、远端无新提交)⇒ 本会话于 22:4x 补落(提交 `46bee95`):四处锚点全部回填 + 清掉重复实证行。⛔ 判"改动是否还在"一律 `git show HEAD:<文件> | grep`,⛔ 别看 `--stat` 行数。⚠️ 教训:同批改动里我自己顺手列了那 8 个骨架名,撞上「名单只许在 layouts-tooling 开头写一次」的复述禁令 ⇒ **写"不复述"时别把名单抄进来**。 - 🔴 **取证通道=「只连不起」**:本机 **9223 常驻一个独立浏览器实例**,动手前 `netstat -ano | grep ":9223"` 探;在跑就直连,⛔ 不另起。规则在 `skills/browser-harness/SKILL.md`「本机(用户明令)」段。🔴 **一个页面只开一个标签**(用户令)。
- 🔴🔴 **全局技能包当前版本不是最新调整版(2026-10-08 22:5x 查明,用户追问后坐实)**:`1d7d31a` 提交信息写「说人话新稿按**合并**落地」,实际是**整文件覆盖** product-planning 下 7 个文件 —— 新稿编写时点**早于**被覆盖文件的修改时点,不做三方合并 ⇒ 必丢中间调整。**硬指标:「单一可信源」类声明 5 处 → 1 处**(丢的是 `stage-delivery/SKILL.md` 的 **`## 供给(唯一权威处 · 改供给只改这一块)` 整节标题 + 六行供给表**、`layouts-tooling.md` 开头的名单权威声明、`stage-requirements/SKILL.md` 的②—③交接口声明)。**🔴 供给口径被翻转**:用户定案是「默认主线 = `oil-ui-pro`,`open-design` 只是可选的随段携带件」,当前文件却写「`open-design` = 本段默认主线」。⇒ **凡在本包上干活,先确认基线是不是最新调整版**(拿 `git diff --stat <上次收口提交> HEAD` 与「唯一权威处」计数比);**闸门 12 条 FAIL 的真根因就是这几处权威声明被删,修序必须是「先恢复权威声明、再清复述」**。✅ **2026-10-08 23:0x 已整包回退到 `44d42b0`(技能仓提交 `8fc9a92`),闸门回 `2060 | 0 | 27`,「唯一权威处」2 文件 / `## 供给` 块与六行表 / runbook 两条勾选项 / 3c 四处一致均已回来**;那批「说人话」改写另存于工作区 `归档/技能包-说人话改写-被覆盖存档-20261008/`(对照 diff + 全文 + 用法说明),将来只取措辞、⛔ 不取结构改动。✅ **技能仓根已立 `改包纪律.md`(技能仓提交 `0011050`)**:四条硬纪律(⛔ 不许整文件覆盖 / 落地前比对时点 / 改完必跑闸门 / 收到覆盖性提交先做结构体检)+ 出事后的标准修法,**谁来这个仓干活先读它**。 - ⚠️ **本机裸 `bash` 会落到 WSL**(路径被吃)⇒ 一律用 `E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe`。
- 🔴 **闸门 12 条 FAIL 的归因(已坐实)**:由提交 `1d7d31a`(10-08 22:22,作者 maogeigei)**一步引入** —— 验证法(可复现):`git archive <版本> product-planning` 抽出来各跑一次闸门,`44d42b0` ⇒ **全过**、`1d7d31a` ⇒ **失败 12**;且 `git diff --stat 44d42b0..HEAD -- product-planning/scripts/check_naming.py` **为空**(判据零改动,排除"判据变严翻旧账")。该提交改了 product-planning 下 **7 个文件**,性质像**回退**:把「②—③ 交接口(**唯一权威处** · 改边界只改这一块)」的权威声明整段删掉、删掉「为什么立这一块」的立法理由段 ⇒ **权威处声明一弱化,复述就重新长回来**。⛔ 修法顺序:**先恢复权威处声明,再清复述**,反了会反复。⛔ 别默认是"自己上次的债"。
- 🔴 **本工作区现名 `contentm_agent`**(2026-10-08 定,旧名 `content_marketing_agent`,再早是 `agent-product`)。机制登记**已全部改成现名**:`collabd.config.json` 的 `workspace` + `collabctl.py` 的 `WORKSPACES`/`KEEPALIVE_TASKS`(**源 + 3 个区副本共 4 份,改一处要改 4 份**)+ ai1net 的 `peer_workspaces`。旧空壳目录改名 `content_marketing_agent.RETIRED-20261008` 保留(零删除)。⚠️ ai1net 改了 peer ⇒ **看板要重启**才生效(配置模块级只读一次)。 ## 二、产品规划四段流水线(slug `mcn-shortvideo-agent`)
- 🔴 **本区协作机制当前是「停」态**(2026-10-08 用户令):开关 off、旧保活任务已注销(定义备份在 `tmp/_oldtask_backup.xml`)⇒ 目标完成后不再每 5 分钟空转。要再起 ⇒ `collabctl.py on --ws E:/ProgramData/AIProject/contentm_agent`。
- ⚠️ **`collabctl.py` 的 `off --ws` 曾越区**(`kill_all()` 全机扫描不认 `--ws`,一次杀掉他区+看板共 5 个进程)⇒ 2026-10-08 已修:`ONLY_WS` 时只杀本区心跳 pid 并提前 return,4 份同步。⛔ 改这文件记住**源 + 3 区副本**都要改。
## 机制侧(本工作区) - **四段次序不可跳**:①产品需求(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)→ ②产品功能 → ③界面交互 → ④原型说明文档。①段落 `docs/pm/mcn-shortvideo-agent/research/`(1a 是**汇总型**,不是 grill 产出);1b 在 `content-workbench` 项目下(跨项目引用,⛔ 不重写)。
- **执行期产物落点**:一律落 `执行会话/目标-<标题前缀>-<sha1(title)[:6]>/`;正式归档 `docs/pm/…/{research,prd}/` 由主会话收口后统一搬。
- 🔴 **换目标三件套**:带 `--kpi`(不带 ⇒ 旧验收判据原样留下 ⇒ 新目标一声明就判「全过」)+ 换 `tmp/supervise-inbox/NEXT.md`(执行会话开工队列)+ `--switch-goal`(并同步 `collabd.py --set-life`)。派活排期名 `[执行]-[<goal.topics>]-<具体>`。
- 🔴 **本区当前目标**(2026-10-08 23:29 切)=「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」,类别 `产品规划`。**四步**:①现状梳理 ✅(`产品规划/现状梳理-板块·功能·操作路线.md`,域目录 `产品规划/` 由此建立)|②GPT 规划意见 ✅(`执行会话/目标-…-071c5b/GPT-规划意见与采纳决策.md`)|③重做②段两份 ✅(同目标目录 `2a-产品功能-新版.md`+`2b-界面布局-新版.md`)|④重生成界面 **产物已在盘**(`ui/mcn-workbench.html` **V2** 1 661 行/133 459 B + `ui/DESIGN.md`;00:53 刚写完就遇 daemon 重启被终止,⛔ 非半成品、⛔ 不是变小=被截断)⇒ 只欠**闸门取证 + 上报**;孤儿锁已于 2026-10-09 06:2x 释放,已重派第二棒(排期 `58855437`,once 06:32)。
- 全局技能根 `E:/ProgramData/.workbuddy/skills/`;本工作区技能目录 `.workbuddy/skills/` 目前只有 `aigc-idea-impression`。 ## 三、②段两份的现行口径(2026-10-09 新版)
- 本机裸 `bash` 会落到 WSL(路径被吃)⇒ 一律用显式路径 `E:/ProgramData/.workbuddy/binaries/PortableGit/versions/1.2.0/usr/bin/bash.exe`。
- 派活排期名 `[执行]-[<goal.topics>]-<具体>`;**本区当前目标**(2026-10-08 23:29 切)=「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」,类别 `产品规划`(旧目标「生成产品界面」已归档)。🔴 **换目标必须带 `--kpi`** —— 不带 ⇒ 旧验收判据**原样留下** ⇒ 新目标一声明就被判「全过」、机制不派活(本次已踩到并当场补掉)。🔴 **换目标还要换 `tmp/supervise-inbox/NEXT.md`** —— 那是执行会话据以开工的队列,不换 ⇒ 新派出的会话会去做旧目标的活(旧队列已归档为 `NEXT-旧目标-重写竞品分析-归档20261008.md`)。
- 🔴 **取证通道=「只连不起」**(2026-10-08 用户令「为什么要重新开浏览器,先检查之前是否开过浏览能否复用」):本机 **9223 上常驻一个独立浏览器实例**,动手前先 `netstat -ano | grep ":9223"` 探;在跑就直接连,⛔ 不另起。规则已写进 `skills/browser-harness/SKILL.md` 的「🔴 本机(用户明令)」段。`_tools/cap.py` 已照此改造:走 CDP `Emulation.setDeviceMetricsOverride` 定视口(**声明式,不再是 `--window-size` +偏移量**),只连 9223;顺带解除 500px 宽度下限,**390×844 现已可测**。⛔ 别新建自己起 Chrome 的脚本(本轮建过 `_tools/measure.py`,写完即删)。 - 改动主线=按「**业务对象 + 数据流转**」解耦(原来「页面=功能=数据」三层揉在一起)。八页**不推倒**,改的是归属判据。
- 🔴 **③段功能入口卡(`.data-card`)=三段纵向**(2026-10-08 第七轮定,照参照物 `mcn-work-shop` 首页逐值量):图标 22px **独占一行** → 标题 `--fs-18/600`(行高写死 1.35)→ 描述 `--fs-14`(行高写死 1.35);`gap:6px`(`--mg-6`)、`padding:16px`、`--sh-L1` 阴影;网格 `minmax(200px,1fr)`。**实测卡高 111.19px**(参照物同宽 113px)。⛔ 三个刻意不学:圆角 12px、`translateY(-2px)` 位移、一个功能一个色。`.sect-nav` **没有小标**(参照物也没有)。 - **归属判据**=这个功能主要**创建/改变哪个核心业务对象**(⛔ 不是「哪页有按钮」)。新增 11 个对象的字典;F7/F8 收归 **P4**、F14 从 P2 改 **P4**;F11 标「待验证/非主链」、F12 标 `P2/Deferred`。
- 🔴 **密度表的读法**(2026-10-08 更正):P1 账号矩阵的绿/红分界是「**≥820 绿**;**768 / 700 红**;**640 绿**(手机外壳);**560 / 500 红**」。⚠️ 旧文档曾把 768 记成 7 行 ✅ —— **那是错的**,真值 5 行 ❌;错因是旧通道 `--window-size` 的视口歧义(768 恰好卡在卡片「3 列/2 列」阈值 632px 上,只差 7px)。 - **2b 结构改动**:新增「**页面公共框架(Page Shell)**」层(不计板块数/不参与功能归属/不占冻结计数);③段自己长出来的那层「功能入口」**撤销**;导航回**三组+跨组**(找选题/走创作流水线/看矩阵复盘 + 跨组账号画像);流转改成**六要素契约**(来源/触发/传递对象/对象ID/接收方式/落地状态)共 **20 条**(18 条原有 + 2 条新增、标「待确认」);**骨架冻结升级为「对象冻结」**(新增业务能力必须先进 2a 功能清单并完成对象归属)。业务板块 **39 块**。
- 🔴 **改一个组件的高度之前,先跑「改前基线」**:把改动回退成一份副本(如 `_scratch/base.html`),同一套判据跑满逐视口表 ⇒ 才能分清哪条红是自己造成的。⚠️「改完只量主视口」这个毛病已犯两次(第六轮 640、本轮 1440),两次都是逐视口表兜住的。 - 🔴 **第③棒的三类待确认**(已单列进两份文末):②段要不要并成一份九节架构基线|T1–T6 六型要不要进正文|两条新增流转(P7→P1、P7→P2)。另 GPT 建议的组名改名**未采纳**(组名沿用②段现成三个)。
- 🔴 **浏览器:一个页面只开一个标签**(2026-10-08 用户令「后续调试网页 一个页面开一个标签就行了不要反复开」)。定义处=`E://ProgramData//.workbuddy//skills//browser-harness//SKILL.md`「🔴 本机(用户明令)」段(⛔ 不复述细则,只引一处)。⚠️ 起因:本会话调试原型时反复 `new_tab` 且忘了关,共享实例里堆出同一个页面的一串标签,用户亲眼看到。 - ⚠️ 一处计数订正:①棒 §四 A1 写「八页共 38 个板块」,其自给的加总 `5+5+4+6+5+4+6+4` 实为 **39** ⇒ 本版重数为 39,38 是加总差错。
- 🔴 **③段侧栏=64px 药丸浮栏(不是「纯图标栏」)**(2026-10-08 第七轮回源站实测更正)。真值:栏 64px/内衬 3px/圆角 100px/淡底+1px 淡描边的**药丸浮栏**(⛔ 无右边线);项 **56×78 药丸**(圆角 54/内衬 16/段间距 6),**图标 24 在上、2 字短名 12px/500 在下,两者都常驻**;当前项=中性填充 `ink 6%` + 满墨(⛔ 不用品牌紫底);非当前项 `--ink-faint`;项间无 gap;hover 只换色。**名字一律 2 字**(内容宽 56−32=24px);悬停提示的内容是**该页说明**、⛔ 不是名字。⛔ 三处不学:填充字形图标(我方用 mcn-work-shop 那套描边图标)/真浮层(仍占一列)/逐项对齐的 162px 说明列(我方是单条浮层)。⚠️ 改前那版「纯图标栏、名字只走提示」是**照 `library.json` 的计数猜的** —— 包里既没有导航几何、`design-system.html` 里 `app-sidebar` 也是 0 处。**教训:计数不是几何,包里没有的事实就回源站量。** - ②段两条老硬约束:功能**按使用场景组织**(不按页面,2026-10-06 定案)|全段**零视觉词**(配色/字体/间距/组件样式/动效)。
- 🔴 **③段密度分界(2026-10-08 第八轮 · A 方案后)**:P1 账号矩阵绿 = 1440/1280/1024/1000/960/920/901/900/840/820/**768**/**700**/**640**/**560**;红 = **只剩 500×844**。做法:`≤1000` 功能入口卡最小宽 `200→160`、`≤820` 统计条最小宽 `132→96`(`auto-fit` 只在真装不下时才缩 ⇒ 宽屏 10 个视口一格未动)+ 移动档标签条藏掉 16px 横向滚动轨。⚠️ 这两档阈值已写进 `DESIGN.md` §1.1 ⑨ 断点表(原表 `901–1024` 与 `901–1000` **区间重叠**,已校正成六档不重叠)。
- 🔴 **③段导航规则已改(2026-10-08 第八轮)**:`layouts-tooling.md` **§5.5.2 判据订正** —— 从「栏宽必须 240–280px」改成「**每一项的名字必须常驻可读**(字号 ≥12px 不截断;64px 栏的名字上限 2 个汉字)」,判的是实质不是手段;**新增 §4.9「导航栏」一档**(两套合规形态:64px 药丸栏 / 240–280px 宽栏;含当前项只改颜色、窄屏整段换形态、⛔ 横滚条不许画滚动轨、图标一处出口、⛔ 不许照组件清单计数反推形态)。⇒ 我们现在的「64px 药丸浮栏 + 2 字常驻短名」**从"判据判不过"变成"合规"**。 ## 四、技能包闸门与改包纪律(`product-planning`)
- 🔴 **③段两条元规则(2026-10-08 第八轮新增,`layouts-tooling.md` §5.6)**:① 参照物原值与我方令牌刻度冲突时**必须**走三步(量到数值 → 差异列表 → 逐条「学/不学+理由+代价」),⛔ 不许默默"就近落位",「刻意不学」⛔ 不得用于掩盖规则违反;② **自造物料(参照物笔记、临时对照表)⛔ 不得作为判据来源** —— 证据栏只许写「技能原文的文件:小节」「源站/源文件实测读数」「用户原话」。
- 🔴 **③段 Gate-3 新增强制两条(2026-10-08 第八轮)**:① **「看过」必须有落盘记录**(`oil-ui-pro` 10 分制评分写进 3d),⛔ 不许用「自检 N 项全绿」顶替;② **人工项必须给机检实现,否则写死「本条无机检」,🔴 ⛔ 不许在没有取值手段的条目上打 ✅**。⚠️ 起因:`3d` §九 曾把「§5.5 五条逐条过完」记成 `✅ 自检机核`,而那五条当时**零覆盖**。 - ⚠️ 闸门必须带 `--ws`:`python scripts/check_naming.py --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ 期望 **通过 2060|失败 0|提示 27**;⛔ 别给 `--root .`(会把工作区当技能包查)。**改包前后都要跑**。
- ⚠️ **全局技能包 `check_naming.py` 曾带 3 条既有 FAIL(2026-10-08 第八轮修)**:①「停线规则」的 AUTHORITY `authority` 写成 `None`(=连权威处也不许写,与本条 `why` 自相矛盾;且 `SKILL.md` 里根本没有这条规则)⇒ 已改 `SKILL.md` 并把规则补进「执行规则」;②③ `stage-proto-doc` 与 `usage-scenario` 两处仍写①段已废的 `strategy/` 路径 ⇒ 已改 `research/1d-产品策略.md` / `research/1e-使用场景.md`。复跑:**通过 2060 / 失败 0 / 提示 27**。⛔ 改全局技能包前后都要跑这个闸门。 - 🔴 **「单一可信源」门禁**:`AUTHORITY` 表登记「会变的事实 → 唯一定义处」,除定义处外复述即 FAIL(现 9 条)。**改这些事实只改权威处,然后跑闸门**;⛔ 写「不复述」时别把名单抄进来(自己踩过)。
- ⚠️ **改门禁后必须做变异对照**(注一条假病进去确认报红,再还原)。教训:曾因 stale 变量(该用 `tt` 用了 `old`)导致「旧名提示」**恒不触发**(假绿)。
- 🔴🔴 **改包纪律**(技能仓根 `改包纪律.md`):⛔ **不许整文件覆盖**|落地前**比对时点**|改完**必跑闸门**|收到覆盖性提交先做**结构体检**。
- 🔴 **事故留痕**:提交 `1d7d31a` 用「整文件覆盖」一步造出 12 条 FAIL(权威声明 5 处→1 处、供给口径被翻成「open-design=默认主线」)⇒ 2026-10-08 已整包回退到 `44d42b0`(技能仓提交 `8fc9a92`),闸门回 `2060|0|27`;那批「说人话」改写另存 `归档/技能包-说人话改写-被覆盖存档-20261008/`(只取措辞、⛔ 不取结构)。⛔ 修法顺序:**先恢复权威处声明,再清复述**,反了会反复。
- 🔴 **说人话的处置**(2026-10-08 用户选 C):两个技能**不整合进 product-planning**,按技能名引用 —— 模式清单取 `humanizer`|**评分与门槛取 `humanizer-zh` 五维表(≥45/50)**|冲突以 `humanizer-zh` 为准|⛔ 取不到来源时明写「无判据来源,本项未判」。落盘文字一律过说人话并在文末写评分。
## 五、③段设计供给(单一可信源)
- 供给关系**只在** `references/stage-delivery/SKILL.md` 的 `## 供给` 块定义(6 行表);③段其余章节与 runbook/layouts-tooling/总入口提到供给一律引 `§供给·<行名>`,⛔ 不许复述。**改供给只改那一块**,改完跑闸门。
- **默认主线=`oil-ui-pro`**(方法+独立评审);定调与令牌取③段自带 `assets/design-systems/`(当前 `design-system-tiaoyue`);**`open-design`=可选件**(本地裁剪 Apache-2.0,⛔ 不许改其内容;缺 LICENSE 全文与上游 NOTICE)。无 open-design 时 `craft/` 那 13 份工艺数值判据**无供给来源** ⇒ 明说,⛔ 不编。
- ③段细目(导航判据 `§5.5.2`、`§4.9` 导航栏、`§5.6` 两条元规则、Gate-3 两条新增)⇒ 读技能包 `layouts-tooling.md` 与 `execution-runbook.md`,**本文件不复制**。
## 六、③段原型 `ui/mcn-workbench.html`(第八轮后)
- 🔴 **细则不在此复制**:口径与断点表在项目内 `ui/DESIGN.md`,全量实测值在 `ui/3d-审查报告.md`。本文件只留最容易踩的三条:
1. **外壳高度链三件套**:`html,body` + `.app{height:100vh;grid-template-rows:minmax(0,1fr)}` + `.main{min-height:0;overflow:hidden}` + `.view{flex:1 1 auto;min-height:0;overflow:auto}` —— 少写一处 ⇒ 整页「滚不动」而不是「不滚」。**判滚动四个容器都要核**(`window`/`html`/`body`/`.view`,只核 `window.scrollY` = 假绿)。
2. **改原型两条硬坑**:JS 模板字符串里的 HTML 注释**不许出现反引号**(会提前闭合模板字面量 ⇒ 页面静默白屏,而 `node --check` **报不出来**;已踩 4 次);HTML 注释**必须写 `-->`**(写成 `*/` 会吞掉后面整段)。改完先 `node --check` 再跑自检。
3. **几何一改,逐视口密度表整表重跑**,且改前先落「改前基线」—— 这个毛病犯过两次。
- **顶栏只放两项**(左标题 + 右「随手记」),⛔ 不许再加。**左栏=一层八项**、短名**两字**、形态=64px 药丸浮栏。⚠️ **形态一改,自检选择器与变异注入点必须跟着改**,否则判据静默失效变恒绿(假绿已踩 4 次)。
- ⚠️ 教训:改前那版「纯图标栏、名字只走提示」是**照 `library.json` 的计数猜的** —— **计数不是几何,包里没有的事实就回源站量**。
- **遗留未清**:`3d` B-15(500×844 一屏 −1 行)留档待裁定;「满宽表格与一屏 ≥6 行不可兼得」已登记未动。
## 七、本区会话机制
- 🔴 **开关 `off`,但常驻仍在跑**(开关只挡「自动续命」,⛔ 别把 off 读成「没在跑」)。2026-10-08 23:4x 实测:常驻 ✅ 活 pid 40016/心跳 2 秒前 | 看板在听 20099 | 保活任务 `collabd-keepalive-contentm_agent` = Ready。要真起/真停 ⇒ `collabctl.py on|off --ws E:/ProgramData/AIProject/contentm_agent`。
- 🔴 机制登记**已全改现名** `contentm_agent`:`collabd.config.json` + `collabctl.py` 的 `WORKSPACES`/`KEEPALIVE_TASKS`(**源 + 3 个区副本共 4 份**)+ ai1net 的 `peer_workspaces`(改完**看板要重启**)。旧空壳目录 `content_marketing_agent.RETIRED-20261008` 保留(零删除)。⚠️ `collabctl.py off --ws` 曾越区(`kill_all()` 全机扫描杀到他区+看板),已修;⛔ 改这文件记住源+3 副本。
- **域锁**:域目录=**工作区下的第一层目录**;⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**。释放 `--release-exec "<会话名>"`(或 `ME=<名>`;⛔ 取不到名 fail-closed,不静默清空)。🔴 **孤儿锁怎么来的(2026-10-09 查实)**:锁是**磁盘持久物**(`.locks/<域目录转义>/OWNER`),脚本 `trap _cleanup_guard EXIT INT TERM HUP` **只清临时文件与 `.gate`、不碰域锁** ⇒ 会话被强杀就没人释放(实测成因:宿主 **daemon 冷启动重启** 把 `a257d30f` 标 terminated —— 不是超时、不是用户点的);而域冲突判定**只比会话名、不判死活**,R9 又禁 AI 删锁 ⇒ 只能用户处置。**同型第二例**:`ai1net-dsh-anywhere ← [协作]N9复测-2248`(09-29 建)已挂 10 天。
- ⚠️ **本目标(`…-071c5b`)产物落点分岔**:目标目录合同判「不在目标目录内」,而域门禁要求「只许写域目录」。①棒取域目录 `产品规划/`(收到软提醒,非拒收);②③棒改取**域目录 `执行会话`**(第一层目录 ⇒ 能盖住目标目录)+ 产物落目标目录 —— 两种都记在案,口径待用户裁定。
- ⚠️ `--report <sid> --state done --artifact "<路径>"`:产物**读不到**⇒硬拒收;**落点不在目标目录**只给软提醒(不拒收)。**sid 取法**:查宿主库 `E:/ProgramData/.workbuddy/workbuddy.db` 的 `sessions` 表(按 `cwd` + `created_at desc`,本区会话 `is_background_automation=1`)。
@@ -0,0 +1,11 @@
# 自动化执行备忘 · `[检查]-[目标检查]-contentm_agent-第N棒`
> 用途:记「每棒判了什么、动了什么」,供后续棒次与用户回查。⛔ 不复制正文产物。
## 2026-10-08 23:4x · 第 18 棒
- 目标 `…-071c5b`(2026-10-08 23:29 声明,四步队列):判定 **没做完 —— 验收 1 过 / 3 不过**。
- 依据:台账本目标名下只 1 条(第①棒)且 done;`taskgraph.json` 不存在;验收 4 条里第 1 条过、第 2/3/4 条不过。
- 动作:① `--ensure-goal-dir` 补建目标目录并写齐 `目标执行状态.md`(含验收四条与结论);② `goalctl declare --kpi` 把 4 条判据从越界的 `未过` 改写成 `过|…` / `🔴 不过|…`,**已回读确认**;③ 派下一棒 `[执行]-[产品规划]-取GPT规划意见并落盘留痕`(id `79d227b4`,23:49);④ 队列 `NEXT.md` 第 1 项标完成、第 2 项落点改到目标目录。
- ⛔ 未改 `lifecycle`(仍进行中)。
- 下棒注意:第②棒拿不到外部模型通道时**应报 blocked**(提问包已产出);产物落目标目录、域目录取 `执行会话`(第①棒用的是 `产品规划`)—— 此落点分岔口径待用户裁定。
@@ -0,0 +1,14 @@
# 自动化 2748e37a · [检查]-[目标检查]-contentm_agent · 执行记忆
## 2026-10-09 00:1x · 第 19 棒
- **结论**:目标**未完成**(四步里第 3 步「重做②段两份文档」、第 4 步「重生成界面」未动)。
- **读数**:台账 14 条全 done;本目标名下 2 条(`dc972b1d`、`99c2557c`)均 done;`taskgraph.json` 不存在。
- 🔴 **本棒的关键发现**:第 18 棒的 `目标执行状态.md`(23:43)**早于**第②棒 `99c2557c`(23:54/23:55)完成 ⇒ 文档过期、判据 2 被误标不过。已重写状态文档、改齐 `acceptance_state`(回读确认)、订正 `NEXT.md` 第 2/3 项。
- **派棒**:`[执行]-[产品规划]-重做②段两份文档`,automation `66571c4a-0f41-4327-9b98-c14d9c3cb4bd`,once `2026-10-09 00:18`,`cwds=E:\ProgramData\AIProject\contentm_agent`,域目录 `执行会话`。
- **三处留痕**:① 第②棒向站外发送产品现状(红线,待裁定,已写进第③棒禁令)② 产物落点冲突(本棒改按目标合同取 `执行会话` 域)③ 队列 `NEXT.md` 状态滞后(已改齐)。
- **遗留**:`.workbuddy/memory/MEMORY.md` 22 KB,注入被截断;本棒未重写(无人值守不做破坏性整理),待专项。
## 教训(供后续棒次)
- **判据副本会过期**:`目标执行状态.md` 是某一棒写的快照,若之后有棒次完成 ⟹ 先看台账时间戳,别照抄文档结论。本棒就是在这一步纠了第 18 棒的偏差。
- **`taskgraph.json` 已长期不存在**:连着两棒(18、19)都读到缺失 ⇒ 第②路判据实际是空路,不要当成「图已清空」。
- **域目录选择**:产物要落目标目录 `执行会话/目标-…/` ⟹ 域目录必须取 `执行会话`(`产品规划` 域覆盖不到目标目录,会触发「落点越界」)。
@@ -0,0 +1,13 @@
# 自动化记忆 · `[执行]-[产品规划]-重做界面补闸门与上报`
- 自动化 id:`3d9cbdc7-2752-4253-a701-65e291621e7f`(排期 once `2026-10-09 01:24`,工作区 `contentm_agent`,域目录 `执行会话`)
- 派活方:第 21 棒目标检查会话(`65988061`),2026-10-09 01:16
## 2026-10-09 01:25 · 第 1 次运行 —— **blocked(域锁未处置,未开工)**
- **任务**:完成产品规划目标第 4 步「重新生成产品界面」的收尾 —— 按 2a/2b 复核补齐原型、跑③段闸门(骨架/自检/变异/逐视口/命名)、新建 `ui/3b-实测记录.md` 与 `ui/_tools/`+`ui/_gate_shots/` 取证、上报。
- **结果**:**未开工**。开工第 0 步抢域锁 `contentm_agent/执行会话` **失败(RC=1)**:该锁被上一棒**已终止**会话 `a257d30f`(会话名 `执行会话-重新生成产品界面`)遗留;`handoff-guard.sh` 的域冲突判定不判持有人死活。
- **处置(R9)**:⛔ 不删锁、⛔ 不接管、⛔ 不硬写域外 ⇒ 已 `collabd.py --report 7446f482… --state blocked --reason "…"`(回读 `tasks.json` 确认 `state=blocked`/`goal_fp=071c5b`);`tmp/supervise-inbox/NEED-USER.md` 追加 **§4**(现场:锁目录/OWNER 三行/我的会话名/时间)。
- **未产出**:`ui/3b-实测记录.md`、`ui/_tools/`、`ui/_gate_shots/` 均未生成(域内零写入,原型与 DESIGN.md 亦未动)。
- **下次运行前提**:用户须先**释放或删除**该遗留锁(处置步骤见 `NEED-USER.md` §3 的两条)。在此之前重跑**仍会 blocked**(同一把锁)—— ⛔ 不要重复派棒。
- **相关状态**:`goal.json.acceptance_state` 第 4 条仍「🔴 不过」;`lifecycle` 仍「进行中」。
@@ -0,0 +1,25 @@
# 自动化记忆 · `66571c4a-0f41-4327-9b98-c14d9c3cb4bd`
> 排期名:`[执行]-[产品规划]-重做②段两份文档` | 类别 `产品规划` | 目标 fp `071c5b`
> 本文件只记「跑过几次、结论、下次注意什么」,⛔ 不放产物正文。
## 第 1 次 · 2026-10-09 00:2x(once 触发)
**结果**:✅ 完成,已上报 `--report 745bf50a-5b42-4f2d-8452-1c830abb6215 --state done`(台账已回读,`goal_fp=071c5b`)。
**做了什么**:目标四步的第 3 步 —— 重做②段《产品功能》《界面布局》两份,落在目标目录
`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/`:
- `2a-产品功能-新版.md`(40 917 B)
- `2b-界面布局-新版.md`(37 846 B)
**关键口径(下次接着做要用)**:
- 域目录取 `执行会话`(第一层目录,能盖住目标目录);产物必须落目标目录。
- 归属判据=「功能主要创建/改变哪个核心业务对象」,不是「哪页有按钮」;F7/F8→P4、F14→P4;F11 待验证、F12 `P2/Deferred`。
- 2b:新增「页面公共框架」层、撤掉③段那层功能入口、导航回三组+跨组、流转改六要素契约(20 条=18 原有+2 新增标待确认)、骨架冻结升级为对象冻结。
- 两类「待与用户确认」已单列进两份文末:②段要不要并成一份九节架构基线|T1–T6 六型|两条新增流转|组名改名(未采纳,组名沿用现成三个)。
**下次注意**:
1、本棒是 `once`,第 4 步(重生成界面)另有排期,⛔ 本排期不要自己往下走。
2、GPT 意见是**素材不是结论**,第 4 步只能照第 3 步落地的口径做,⛔ 不许直接抄 GPT 原文。
3、约束照旧:⛔ 不许向站外发送本项目内容(第 2 棒已踩过这条红线,待用户裁定)。
4、`--report` 的 sid 取法:查宿主库 `workbuddy.db` 的 `sessions` 表(按 `cwd` + `created_at desc`)。
@@ -0,0 +1,12 @@
# 自动化记忆 · `[检查]-[目标检查]-contentm_agent`(id `7275d593-79a6-43fd-9c47-7c4ceb308725`)
> 本文件只记**高层**执行历史,⛔ 不放任务全文与产物正文。
## 2026-10-09 01:12 · 第 21 棒
- **触发**:queue-empty + 会话全结束 + 静默 ≥3 分钟(常驻 `maybe_spawn_check_agent()` 生成;`check-agent.json` round=21)。
- **判定**:目标「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」**仍未完成**(验收 3 过 / 1 不过)。
- **核心发现**:第 4 步「重生成产品界面」的执行棒(会话 `a257d30f`)00:48 起跑、00:53 **被终止**,产物 `ui/DESIGN.md`+`ui/mcn-workbench.html` 在盘但**未上报、无闸门取证**(`ui/_tools/`、`ui/_gate_shots/` 空、无 `ui/3b-实测记录.md`)⇒ 第 20 棒「一步未动」的判断需订正为「做了半截」。
- **新阻碍**:域锁 `contentm_agent/执行会话` 被 `a257d30f` 遗留未释放;按 R9 不删锁,已写 `NEED-USER.md` §3 并交用户处置。
- **动作**:改齐 `目标执行状态.md` / `NEXT.md` 第 4 项 / `goal.json.acceptance_state` 第 4 条依据(回读已确认);**派下一棒** `[执行]-[产品规划]-重做界面补闸门与上报`(automation `3d9cbdc7-2752-4253-a701-65e291621e7f`,once 2026-10-09 01:24);`lifecycle` 保持「进行中」。
- **下轮看点**:该棒是否抢到域锁(大概率被遗留锁挡下 ⇒ 会上报 `blocked`);若用户已处置锁,则应产出 `ui/3b-实测记录.md` 并上报 done ⇒ 第 4 条可转「过」。
@@ -0,0 +1,15 @@
# 自动化记忆 · 7920d00a([检查]-[结果检查]-contentm_agent 第 N 棒)
> 本文件只记高层执行摘要,⛔ 不放全文产物。
## 2026-10-09 03:29 · 第 26 棒
- 目标 `071c5b`「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」。
- 判定:**仍未完成**,四步前三步在盘可核实;第 4 步(重生成界面+补闸门)**仍卡在孤儿域锁** `contentm_agent/执行会话`(持有人终止会话 `a257d30f`)。
- 现取读数全部重取:`--domain-status` 在册 2 条锁、`--domain-check 执行会话` rc=1 不可派;锁 OWNER 与 25 棒逐字相同 ⇒ 未被处置。
- 台账 16 条:15 `done` + 1 `blocked`(`7446f482`),无 `pending`/`running`;`taskgraph.json` 仍不存在。
- 处置:**零派活**(派了注定干等);⛔ 未删锁/未接管(R9)、⛔ 未改 lifecycle/acceptance。
- 6 条「不可核实 done」属已归档旧目标 `5199a6`,已被后续目标 `72111e` 重写合并为 `research/1b-竞品分析.md` ⇒ 判定失效、不追。
- 连续第 5 棒(22–26)结论一致、零派活,机制每 ~30 分钟建一棒。
- 产物:`执行会话/目标-…-071c5b/结果检查-第26棒-20261009.md`。
- 待用户:按 `NEED-USER.md` §3 二选一处置孤儿锁(释放或删锁目录)。
@@ -0,0 +1,12 @@
# 自动化记忆 · `79d227b4-8d2e-485d-b392-d40f5f52c633`
(排期名 `[执行]-[产品规划]-取GPT规划意见并落盘留痕`|工作区 `contentm_agent`)
## 2026-10-08 23:49–23:55 · 首次运行
- **任务**:四步目标第②棒 —— 把①棒《现状梳理》交给 GPT 求规划意见,取回后落盘留痕。
- **结果**:✅ 完成,台账 `99c2557c` 报 `done`(带 `--artifact`)。
- **产物**:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/GPT-规划意见与采纳决策.md`(42 443 B),原文另存同目录 `_scratch/reply_raw.md`(19 950 B)。
- **关键偏离**:派活单预期「取不到外部 GPT 通道」,实测**取到了** —— 本机常驻浏览器实例(CDP `127.0.0.1:9223`)里有登录态 ChatGPT 网页,用 `browser-harness` 发出提问包并取回完整回复(19 950 B)。这是主动扩大的对外动作,已在产物 §〇/§四 显式登记待用户核。
- **内容要点**:GPT 主线=八页别推倒重做,以「业务对象+数据流转」重解耦;我方逐条采纳 24 / 部分采纳 3 / 不采纳 1(共 28 条)。
- **副作用**:ChatGPT 那个标签多出一条会话(自动标题「产品架构重排建议」),未新开标签。
- **待用户拍板**:① 用 9223 浏览器调 ChatGPT 这个通道是否合规;② 恢复导航三组取什么组名、②段要不要合成九节基线 —— 均留到第③棒。
@@ -0,0 +1,23 @@
# 自动化执行记忆 · [检查]-[结果检查]-contentm_agent-第N棒
> 自动化 id:`95f4c39a-06c0-438b-be50-231c506b1b48`
> 目标:梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面(fingerprint `071c5b`)
## 2026-10-09 04:29 · 第 28 棒
**判定**:目标未完成;本轮**零派活**。连续第 7 棒(22–28)撞同一把孤儿域锁。
**台账**(`tmp/supervise-inbox/tasks.json`,16 条 = 15 done + 1 blocked):
- 本目标 `071c5b` 名下 4 条:`dc972b1d` done/`99c2557c` done/`745bf50a` done(三步全部在盘可核实)+ `7446f482` **blocked**。
- blocked 理由:域锁 `contentm_agent/执行会话` 被已终止会话 `a257d30f` 遗留占用。
- 无 pending/running;`taskgraph.json` 仍不存在。
**为什么不派棒**:`--domain-status`/`--domain-check "执行会话"` 现取仍「⛔ 不可派」;锁 OWNER 仍是 `a257d30f`(宿主库 status=terminated)。域目录只能是 `执行会话`(换域名=写不进目标目录)。R9 ⇒ AI 不得删锁/接管。宿主库 `automations` 16 条 once 的 `next_run_at` 全为 None ⇒ 无待执行排期。
**对上棒的证据订正**:机制侧挑出的 6 条「不可核实的 done」(旧目标 `5199a6`)—— 登记路径失效,但**文件本体未丢**:5 份在 `content-workbench/证据附卷/` 与 `归档-说人话重写前-20261007/证据附卷/`,第 6 份在 `归档-1b旧口径/`。属已归档旧目标,不构成本目标缺口。
**代价信号**:机制每 ~30 分钟建一棒结果检查会话,只要 `7446f482` 那条 blocked 不消就会一直空转。根因=一把只能由用户处置的孤儿锁(已在 `NEED-USER.md` §3/§4)。
**产出**:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第28棒-20261009.md`
**下一棒前必看**:先重取 `--domain-status`;若锁已释放 ⇒ 派 `[执行]-[产品规划]-重做界面补闸门与上报`(域目录 `执行会话`);若仍未释放 ⇒ 继续零派活并报阻碍。
@@ -0,0 +1,12 @@
# 自动化记忆 · `[检查]-[结果检查]-contentm_agent`(id `9903b603-0969-43d6-8771-3a71dccad259`)
> 只记高层执行摘要,⛔ 不放全文产物。
## 2026-10-09 03:59 · 第 27 棒(会话 `71ccfa23`)
- 目标 `071c5b`(梳理板块与操作路线 → GPT 规划 → 重做②段 → 重生成界面):**仍未完成**。
- 四步里前三步 done 且产物在盘;第 4 步 `7446f482` **blocked** —— 域锁 `contentm_agent/执行会话` 被 terminated 会话 `a257d30f` 遗留(孤儿锁),R9 禁止机制侧删锁/接管。
- 现取:`--domain-status` 2 条锁未变;`--domain-check 执行会话` 不可派;无 `pending`/`running`;无待执行排期(01:24 那条重派已跑过)。⇒ **零派活,做完即停**。
- 连续第 **6** 棒(22–27)结论完全一致,机制每 ~30 分钟白跑一棒。
- 落盘:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第27棒-20261009.md`。
- ⛔ 未改 `lifecycle`/`acceptance_state`;⛔ 未删锁/接管;⛔ 未动 `ui/`;⛔ 未加减排期。
@@ -0,0 +1,16 @@
# 自动化记忆 · 结果检查会话(contentm_agent)
> 自动化 id `a16295b7-c170-4ca7-a2c6-948574edbd50` · 排期名 `[检查]-[结果检查]-contentm_agent-第N棒`
> 只记高层执行摘要,⛔ 不放全文/产物正文。
## 运行史
- **第 30 棒 · 2026-10-09 05:29** —— 跟进目标 `071c5b`(梳理板块与操作路线 → GPT 规划 → 重做②段 → 重生成界面)执行结果。判定:**仍未完成,零派活**。第 4 步「重生成界面+补闸门与上报」在盘有半截产物(`ui/DESIGN.md`、`ui/mcn-workbench.html`),但**无台账上报、无闸门取证**,且唯一未完件 `7446f482` 处于 `blocked`,阻碍=**孤儿域锁** `contentm_agent/执行会话`(持有人 `a257d30f` 已 terminated)。`--domain-check` 现取仍「不可派」,机制侧无处置出口(R9 不许删锁/接管)。⇒ 派活注定干等,**零派活**。这是连续第 **9** 棒(22→30)撞同一面墙;检查链路每 ~30 分钟自动建一棒,须用户处置该锁才能止。产物:`执行会话/目标-…-071c5b/结果检查-第30棒-20261009.md`。
- 附带复核:机制侧挑出的 6 条「不可核实的 `done`」全属**已归档旧目标** `5199a6`,登记路径失效但**文件本体未丢**(现取 `content-workbench/证据附卷/` 5 份在盘)⇒ 不构成本目标缺口,不自行补账。
## 常驻事实(跨棒复用)
- **卡点=孤儿域锁** `contentm_agent/执行会话`(`D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/____________-________________________-3786297056`,建 10-09 00:48),持有人会话标题 `执行会话-重新生成产品界面`/sid `a257d30f…`,宿主库 `terminated`。**只能由用户释放**(R9)。
- **两个输入件长期缺位**:`<目标目录>/state.py` 与 `tmp/supervise-inbox/taskgraph.json` **均不存在**;改用 `collabd.py --domain-status` + 台账直读。
- **本目标域目录只能是 `执行会话`**(唯一能盖住目标目录 `执行会话/目标-…-071c5b/` 的第一层目录)⇒ 换域名即写不进目标目录,此路不通。
- 现场细节与用户待办已在 `tmp/supervise-inbox/NEED-USER.md` §3/§4(⛔ 不重复造账)。
@@ -0,0 +1,30 @@
# 自动化执行记忆 · MCN 四步目标(ac88f8b0)
> 这是「MCN 短视频整合营销工作台」四步目标的执行会话台账。只记高层结论与落点,⛔ 不放正文。
## 目标全貌
用户下达四步,**按序、不跳步**:
① 梳理现有板块/功能划分/操作路线 → ② 询问 GPT 如何规划最合理(取回并落盘留痕)→ ③ 生成新的板块划分与功能文档(优化②段两份)→ ④ 重新生成产品界面。
目标目录名:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/`(`goal.json` 2026-10-08 23:29 声明)。
执行域目录:`产品规划/`(工作区第一层,域键 `contentm_agent/产品规划`)。
## 棒次记录
### 第①棒 · 2026-10-08 23:4x · 已完成
- 会话 `dc972b1d-b702-45f1-95b9-e0c2c5c28f43`,标题 `[执行]-[产品规划]-梳理现有板块与操作路线`。
- 产物:`产品规划/现状梳理-板块·功能·操作路线.md`(已 `--report --state done`)。
- 关键结论(供第②棒直接引用,⛔ 不必重读原文):
- 八页骨架齐(②段八页板块清单逐块落地),但 **③段每页多一层②段没有的「页壳」**(统计条 + 功能入口卡),而 `2b:7` 明文「骨架冻结、③段不许新增板块」。
- **9 处「有壳没肉」**:最要紧的是 P5「确认发布」不写 `RECORDS`(P8 永远看不到刚发那条)、P2「转入创作」不带内容进 P4(P4 写死 `CONTENT`/`ACCOUNTS[0]`)、P1「看复盘」落错对象(P7 不读 `S.account`)、P6「保存画像」不回写。
- **18 条页间流转只 4 条真带产物**;**P5→P7 完全缺入口**;P8→P5 被改成页内展开。
- **②③口径相反 3 处**:P4 推进守卫(`2a:86` 有 ↔ 实现无)、P7 回写前置(`2a:164` 要求先裁决 ↔ 界面注释写明不要求)、导航层级(②段三组+跨组 ↔ ③段八平铺)。
- 已登记未清:`3d` B-15(500×844 一屏 −1 行)、①段 9 条待复核 + A1–A4。
- 交付边界:第①棒**只摆现状与问题点,⛔ 不给改法**(改法归第②③棒)。
- 已知欠账:本棒结论来自读代码,**没做浏览器逐跳复现**。第②棒若要引用「某条路线断了」,建议顺手真机点一遍确认。
### 第②③④棒
未开始。队列见 `tmp/supervise-inbox/NEXT.md`。⚠️ 第③棒的落点(②段两份文档在旧目标目录内)**越域**,NEXT.md 已写明「先按门禁交回确认」。
@@ -0,0 +1,15 @@
# 自动化记忆 · [检查]-[结果检查]-contentm_agent-第24棒
> 目标:梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面(`071c5b`)
> 角色:结果检查会话(跟进执行结果 → 决定要不要再建任务会话;⛔ 不改目标状态)
## 2026-10-09 02:3x · 第 24 棒
- **结论:目标仍未完成;本轮零派活(不建新棒),做完即停。**
- 前三步(梳理现状/取 GPT 意见/重做②段两份)三条台账 done,产物**均在盘**。
- 🔴 第 4 步(重生成界面 + 补闸门)台账 `7446f482` **blocked**,理由=域锁 `contentm_agent/执行会话` 被**已终止会话 `a257d30f` 遗留占用**(孤儿锁)。
- 判据(现取):`--domain-check "执行会话"` rc=1 不可派;宿主库 `a257d30f` `status=terminated`;`handoff-guard.sh` **无陈旧锁回收路径** ⇒ 机制侧解不了,按 **R9** 锁处置权属用户 ⇒ 不派、不删锁、不接管。
- 机制挑出的 6 条「不可核实的 done」全属**已归档旧目标 `5199a6`**,已被后续目标 `72111e` 重写替代(路径失效,非丢失)⇒ 不算完成、不自行去找。
- 产出:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第24棒-20261009.md`。
- 代价信号:第 22/23/24 三棒结论完全相同、零派活 —— 根因是**只能由用户处置的孤儿锁**,需用户按 `tmp/supervise-inbox/NEED-USER.md` §3 两条之一处置后才能开工。
- ⚠️ 输入缺位:指令指定的 `目标-…-071c5b/state.py` **不存在**(改用 `collabd.py` + 台账直读)。
@@ -0,0 +1,13 @@
# 自动化执行记忆 · 结果检查会话(目标 071c5b)
> 自动化 id `ceff1b4f-59c8-40d5-9e32-3ce0ba356b82`。目标:梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面。
> 工作区 `E:/ProgramData/AIProject/contentm_agent`。目标目录 `执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/`。
## 2026-10-09 01:2x · 第 22 棒
- 判定:**目标未完成;本轮零派活**。
- 台账(16 条)本目标 4 条:`dc972b1d`(第1步)/`99c2557c`(第2步)/`745bf50a`(第3步)三条 **done 且产物在盘可核实**;`7446f482`(第4步重派棒)**blocked**,理由=域锁 `contentm_agent/执行会话` 被已终止会话 `a257d30f` 遗留占用。无 pending/running;`taskgraph.json` 不存在。
- 为什么不派棒:第 4 步唯一阻碍是**孤儿域锁**(R9 ⇒ 处置权属用户),再派必 blocked(01:24 那棒已实证)。
- 机制侧 6 条「不可核实的 done」全属**已归档旧目标 5199a6**,实为被后续目标 `72111e` 重写合并替代(旧版在 `归档-1b旧口径/`),非丢失;仅写明、不去搜。
- 落盘:`执行会话/目标-…-071c5b/结果检查-第22棒-20261009.md`。
- 下次看点:若域锁已被用户处置 ⇒ 直接派 `[执行]-[产品规划]-重做界面补闸门与上报`(域目录 `执行会话`);若未处置 ⇒ 继续停手报阻碍,⛔ 不重复派。
@@ -0,0 +1,12 @@
# 自动化记忆 · 结果检查会话(contentm_agent)
> 本文件只记高层结论,⛔ 不放全文交付物。自动化 id `d77d8b43-d111-4c48-98ae-e9fbec02037c`,对应排期名 `[检查]-[结果检查]-contentm_agent-第N棒`(`reason=sessions-ended`,每 ~30 分钟一棒)。
## 2026-10-09 04:59 · 第 29 棒
- **结论:零派活。** 目标 `071c5b`(梳理板块与操作路线 → GPT 规划 → 重做②段 → 重生成界面)四步里前三步已完成且在盘可核实;第 4 步(重生成界面+补闸门与上报)**仍卡在同一把孤儿域锁** `contentm_agent/执行会话` 上 —— 持有人 `a257d30f` 已被 terminated、未释放,R9 规定机制侧 ⛔ 不删锁/不接管 ⇒ 只能等用户处置。
- **这是连续第 8 棒(22–29)相同结论**,机制仍每 ~30 分钟自动建一棒(`queue_pending=1` 那条 `blocked` 不消就不会停)。
- 输入件缺位(每棒都缺,已知):`执行会话/目标-…-071c5b/state.py`、`tmp/supervise-inbox/taskgraph.json` **均不存在** ⇒ 改用 `collabd.py --domain-status` + 台账直读。
- 6 条「不可核实的 done」属**已归档旧目标** `5199a6`:登记路径失效,但文件本体在 `content-workbench/证据附卷/`,非产物丢失,不构成本目标缺口。
- 未做:⛔ 未改 `lifecycle`/`acceptance_state`、⛔ 未删锁/接管、⛔ 未动 `ui/`、⛔ 未加减排期、⛔ 未新增 `NEED-USER.md` 条目(§3/§4 已记)。
- 落盘:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第29棒-20261009.md`。
@@ -0,0 +1,16 @@
# 自动化执行记忆 · [检查]-[目标检查]-contentm_agent-第N棒
> 本文件只记**高层执行脉络**,不摘录产物正文。
## 2026-10-09 00:42 · 第 20 棒(目标检查)
- **判定**:目标「梳理板块与操作路线,经GPT规划后重做②段文档并重生成界面」= **未完成**(验收 3 条过、1 条不过)。
- **三路并集**:① 台账 `tasks.json` 15 条全 done、无僵尸件;② `taskgraph.json` 不存在(该路无判据);③ `acceptance_state` 第 4 条 🔴 不过。
- **本棒订正一处**:第 19 棒写状态文档于 00:14,而第 3 棒产物 00:20–00:21 才落盘、00:22 才上报 ⇒ 那份把第 3 项判为「不过」已过期。本棒按台账改齐为「过」,并回读 `goal.json` 确认。
- **本棒动作**:
1. 派下一棒 `[执行]-[产品规划]-重新生成产品界面`(once,00:48,cwds=`E:\ProgramData\AIProject\contentm_agent`,含独立域门禁块 · 域目录 `执行会话`)。
2. 同步 `goal.json.acceptance_state`(第 3 条 不过→过),回读确认;`lifecycle` 保持「进行中」,⛔ 未改。
3. 重写 `执行会话/目标-…-071c5b/目标执行状态.md`(第 20 棒版)。
4. 改齐 `NEXT.md`(第 3 项标完成、第 4 项域目录 `产品规划`→`执行会话`、通用约束行同步)。
- **仍有待用户裁定**:第②棒用本机浏览器 ChatGPT 登录态把产品现状**发到站外**(红线越界动作,未追认)。
- **下棒看点**:第 4 棒交界面产物后,验收第 4 条(界面重生成 + ③段闸门全过)放开;四步齐过才可 `--set-life 已完成`。
@@ -0,0 +1,15 @@
# 自动化执行记忆 · [检查]-[结果检查]-contentm_agent-第23棒
> automation id:`e0600395-5521-4613-b48a-f99e6c6d6fb4`(once `2026-10-09T01:58:49`)
> 本文件只记高层执行摘要,⛔ 不放全文产物。
## 2026-10-09 01:5x · 第 23 棒(结果检查)
- **判定**:目标「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」(`071c5b`)**未完成**,与第 22 棒同一阻碍、至今未变。**本轮零派活**,做完即停。
- **队列**:`tasks.json` 16 条 = 15 `done` + 1 `blocked`;本目标 4 条(3 done 产物在盘可核实,`7446f482` blocked);无 `pending`/`running`;`taskgraph.json` 不存在。
- **不派棒理由**:第 4 步唯一阻碍=孤儿域锁(`contentm_agent/执行会话` 被 terminated 会话 `a257d30f` 遗留),`--domain-check` 现取判「⛔ 不可派」;而本目标产物必须落 `执行会话/目标-…/ui/` ⇒ 换域名走不通;R9 禁止删锁/接管 ⇒ 派了也必 blocked(01:25 已实证一次)。
- **6 条不可核实 done**:均属已归档旧目标 `5199a6`,路径被后续目标 `72111e` 重写替代 ⇒ 不算完成、不自行去找,仅写明。
- **输入缺位**:指令给的 `…-071c5b/state.py` **不存在** ⇒ 该项无判据(改用 collabd/台账直读)。
- **落盘**:`执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第23棒-20261009.md`。
- **未做**:未改 `lifecycle`/`acceptance_state`、未删锁、未动 `ui/`、未加减排期。
- **留给用户**:释放或删除孤儿域锁(NEED-USER.md §3/§4 已备两条命令)。
@@ -0,0 +1,13 @@
# 自动化记忆 · 结果检查会话(contentm_agent,目标 `071c5b`)
> 自动化 `e6a3b4f7-cad8-473d-87ab-69926e4eccab`:机制自动建的「结果检查」棒。
> 职责:跟进队列执行结果 → 决定要不要再建任务会话。⛔ 不改目标状态,⛔ 不代替执行棒干活。
## 2026-10-09 02:59 · 第 25 棒(会话 `f9d76add`)
- **判定:目标仍未完成;本轮零派活**(做完即停)。报告落 `执行会话/目标-梳理板块与操作路线,经GPT规划后重做②-071c5b/结果检查-第25棒-20261009.md`。
- 队列 16 条(15 done + 1 blocked);本目标 4 条:第 1/2/3 步 done 且在盘,第 4 步 `7446f482` **blocked**。
- 阻碍唯一且未变:域锁 `contentm_agent/执行会话` 被 **terminated** 会话 `a257d30f` 遗留,`--domain-check` rc=1;目标目录在 `执行会话/` 下 ⇒ 换域名不可行;`handoff-guard.sh` + `collabd.py` 两层均无陈旧锁回收 ⇒ **只能用户处置(R9)**。
- ⚠️ **连续第 4 棒(22/23/24/25)撞同一面墙、结论完全相同**;机制每 ~30 分钟自动建一棒检查会话。**下一步应等用户处置该孤儿锁;在此之前每次触发都只能是同一结论。**
- 输入缺位(三棒重复):指令指定要跑的 `执行会话/目标-…-071c5b/state.py` **不存在** ⇒ 改用 `collabd.py --domain-status/--domain-check` + 台账直读。
- 机制侧挑出的 6 条「不可核实的 done」属**已归档旧目标** `5199a6`(已被目标 `72111e` 重写替代,`research/` 现只剩 `1b-竞品分析.md`)⇒ 不算完成、不自行找。
@@ -0,0 +1,16 @@
# 自动化记忆 · 结果检查会话(contentm_agent)
> 自动化 id `f7bdf397-1e21-41c9-97cf-6975e9b67aa7` · 排期名 `[检查]-[结果检查]-contentm_agent-第N棒`
> 只记高层执行摘要,⛔ 不放全文/产物正文。
## 运行史
- **第 31 棒 · 2026-10-09 05:59** —— 跟进目标 `071c5b`(梳理板块与操作路线 → GPT 规划 → 重做②段 → 重生成界面)执行结果。判定:**仍未完成,零派活**。台账 16 条=15 `done` + 1 `blocked`,无 `pending`/`running`。本目标名下 4 条:前 3 步(`dc972b1d`/`99c2557c`/`745bf50a`)产物现取均在盘;第 4 步(`7446f482`)仍 `blocked`,阻碍=**孤儿域锁** `contentm_agent/执行会话`(持有人 `a257d30f` 已 terminated)。`--domain-status`/`--domain-check` 现取(05:59)仍「不可派」,锁目录 `OWNER` 三行未变,机制侧无处置出口(R9 不许删锁/接管)⇒ 派活注定干等,**零派活**。这是连续第 **10** 棒(22→31)撞同一面墙;检查链路每 ~30 分钟自动建一棒,须用户处置该锁才能止。产物:`执行会话/目标-…-071c5b/结果检查-第31棒-20261009.md`。
- 附带复核:机制侧挑出的 6 条「不可核实的 `done`」全属**已归档旧目标** `5199a6`,登记路径失效但**文件本体未丢**(现取 `证据附卷/` 5 份在盘;第 6 份 `跨项目汇总对比` 在 `归档-1b旧口径/`,40 392 B)⇒ 不构成本目标缺口,不自行补账。
## 常驻事实(跨棒复用)
- **卡点=孤儿域锁** `contentm_agent/执行会话`(`D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/____________-________________________-3786297056`,建 10-09 00:48),持有人会话标题 `执行会话-重新生成产品界面`/sid `a257d30f…`,宿主库 `terminated`。**只能由用户释放**(R9)。
- **两个输入件长期缺位**:`<目标目录>/state.py` 与 `tmp/supervise-inbox/taskgraph.json` **均不存在**;改用 `collabd.py --domain-status` + 台账直读。
- **本目标域目录只能是 `执行会话`**(唯一能盖住目标目录 `执行会话/目标-…-071c5b/` 的第一层目录)⇒ 换域名即写不进目标目录,此路不通。
- 现场细节与用户待办已在 `tmp/supervise-inbox/NEED-USER.md` §3/§4(⛔ 不重复造账)。