记忆:目标未完成且已停;第二把孤儿锁(cc07347c 手动关未释放,status=completed)

This commit is contained in:
WorkBuddy committed 2026-10-09 07:21:58 +08:00
1 parent 655017ef2c
commit a98999c765
4 files changed
+41 -1

No files matched your search

+12
View File
@@ -298,6 +298,18 @@
- 📌 **可复用的判断**:一份文档里"规则没被遵守"往往不是规则缺失,而是**规则被放在了用途限定的章节里** ——
挪位置比补内容更有效;要挪就挪到**第一屏**(每次加载必经之地)。
## 07:20 · 目标状态核实(用户问「目标完成了吗 还在执行吗」)
**答案:未完成,而且已经停了;还被一把新的孤儿锁挡住。**
- **目标状态**:**未完成**(验收第 4 条「产品界面已重新生成且闸门全过」= 🔴 不过;台账 15 `done` + 1 `blocked`)。
- **执行状态**:**停着** —— 周期排期 **0 条**、一次性棒 22 条全部已耗;`--gap` 报 `[任务会话] 产品规划:stale|在册 6、活 0`;控制台一句「没有人在推进」。
- **第④步产物**:`ui/DESIGN.md`(46 807 B)+ `ui/mcn-workbench.html`(135 041 B)在盘,但 **`3b-实测记录.md` 不存在**、`_gate_shots/` 空 ⇒ 按判据不算完成。
- 🔴 **新孤儿锁(第二把,同型)**:域键 `contentm_agent/执行会话` 被「执行会话-重做界面补闸门与上报」(第二棒,会话 `cc07347c`)持有 ——
06:32:15 起跑抢到锁 → 06:40 卡死(浏览器僵死)→ **07:10:16 用户手动关** ⇒ 会话结束但**锁没释放**。
⚠️ 宿主库 `cc07347c` 的 status = **`completed`**(不是 terminated)——**手动关被标成 completed**,所以更不会触发任何释放逻辑。
⇒ **同一成因、第二次发生**(第一次是 `a257d30f` 在 00:53 被 daemon 换代终止)。两层缺口(锁不回收/判定不看死活)都还在。
## 07:12 · 结果检查第 33 棒 —— 阻碍换人(旧孤儿锁已解、新持锁会话在保护期),本轮零派活
- 本棒(自动化 `cdf24e8d`,第 33 棒)现取五样:`state.py` 仍不存在、`taskgraph.json` 仍不存在、台账 16 条(15 done + 1 blocked)、`lifecycle`=进行中、`acceptance` 3 过 + 1 不过。
+1 -1
View File
@@ -57,6 +57,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 天。
- **域锁**:域目录=**工作区下的第一层目录**;⛔ 别在域目录外套公共父目录(所有子目录会算成同一个域键 ⇒ 域锁失效)。抢锁 `handoff-guard.sh --claim-exec "<会话名>" --domains "<域目录>"`(包在 `skills/session-mechanism/scripts/lock/`);抢不到 ⇒ **停手报告**。释放 `--release-exec "<会话名>"`(或 `ME=<名>`;⛔ 取不到名 fail-closed,不静默清空)。🔴 **孤儿锁怎么来的(2026-10-09 两次实查)**:锁是**磁盘持久物**(`.locks/<域目录转义>/OWNER`),而会话**无论怎么结束都不释放**它 —— ① 被宿主终止(第一次:`a257d30f` 遇 daemon 冷启动换代,`status=terminated`);② **被用户手动关**(第二次:`cc07347c` 卡死后用户关窗,`status=completed`,⚠️ 手动关是标 `completed` 不是 `terminated`)⇒ 都不会跑 `--release-exec`。而域冲突判定**只比会话名、不判死活**,R9 又禁 AI 删锁 ⇒ 只能用户处置。**第二把已实证在 06:33 建、07:10 成孤儿**。**同型第二例**:`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,13 @@
# 自动化记忆 · 结果检查会话(第 32 棒起)
> 自动化 id `c9779455-72c6-4cf2-88df-e26c866dc64e`(`[检查]-[结果检查]-contentm_agent-第32棒`)。
> 只记高层结论,⛔ 不复制全文。
## 2026-10-09 06:30 · 第 32 棒(首次运行)
- 目标 `071c5b`(梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面)。
- **判定**:卡了十棒的孤儿域锁**已释放**(`--domain-check "执行会话"`=可派;在册域锁 2→1),且队列已有接手排期 `58855437`(once 06:32 补闸门与上报)⇒ **本轮零派活**(再派即重复)。
- 台账 16 条(15 done + 1 blocked);`lifecycle`=进行中;`acceptance` 3 过 + 1 不过(第 4 步界面已落盘但闸门取证/上报缺失)。
- 6 条「不可核实的 done」属已归档旧目标 `5199a6`(文件被搬至 `证据附卷/`,登记路径失效,非丢失)⇒ 不构成本目标缺口。
- 产物:`执行会话/目标-…-071c5b/结果检查-第32棒-20261009.md`。
- 观测点:06:32 后看台账是否出现第 4 步 done(带可读 artifact)。
@@ -0,0 +1,15 @@
# 自动化记忆 · [检查]-[结果检查]-contentm_agent-第N棒
> 自动化 id `cdf24e8d-c682-4e82-911f-ffe0348d77a6`(常驻按轮次复用同一条 id,每轮换棒次号)。
> 目标:`071c5b`「梳理板块与操作路线,经 GPT 规划后重做②段文档并重生成界面」。
## 2026-10-09 07:10 · 第 33 棒
- **判定**:第 4 步(重做界面补闸门与上报)**仍未完成**;阻碍**换人** —— 旧锁(`a257d30f` 遗留)确已解除,第 2 棒也确已跑过,但它没留齐闸门取证、没上报,且自己又占了同一把域锁。
- **本轮动作**:**零派活**。依据两条现取读数 —— `--domain-check "执行会话"` ⇒ ⛔ 不可派(被 `cc07347c` 持有);`orphan-lock.py --dry-run` ⇒ 持有者 `completed` 但静默仅 ~3 分钟(<30)⇒ **保护期内不动**(不属可自解档)。派了也是「注定干等的活」,故不派。
- **台账**:`7446f482`(第4步)`blocked -> blocked`,`--reason` 改为当前事实(谁在持锁/为何不派)。
- **产物**:`执行会话/目标-…-071c5b/结果检查-第33棒-20261009.md`。
- **关键发现**:第 2 棒会话 `cc07347c`(06:32–07:10,completed)已产出 `ui/_tools/` 5 份脚本 + 改了 `ui/mcn-workbench.html`(133459→135041 B)+ 跑了 selftest(`_scratch/selftest-1440.txt` 大面 PASS);**缺** `ui/_gate_shots/`(空)+ `ui/3b-实测记录.md` + 台账上报。**停住根因=浏览器僵死**(`_bh_chrome.log`:06:56 端口 9223 不应答、07:06 chrome 崩),与 00:53 的 daemon 换代**不同因**。
- **自愈路径**:常驻每约 30 分钟建检查棒 ⇒ 下一/再下一轮跑 `orphan-lock.py` 时本锁静默将 ≥30 分钟 ⇒ 判为可解除 ⇒ 放锁后即可派执行棒收口。**本轮无需用户介入。**
- **未做**:未改 `lifecycle`/`acceptance_state`;未删锁(只 `--dry-run`);未动 `ui/`;未建任何排期;未写 `NEED-USER.md`。
- **已知输入缺口(连续 16 棒)**:`state.py` 与 `tmp/supervise-inbox/taskgraph.json` 均不存在 ⇒ 这两路无判据,改用 `--domain-status` + 台账直读。