记忆:目标 08:14 四步全过收口;核实总闸 off 与事实矛盾(保活任务其实在,且它是按开关收敛的那一方)
This commit is contained in:
1 parent
cdc53eb833
commit
01d3aaac24
5 files changed
+121
-1
No files matched your search
@@ -339,6 +339,27 @@
|
||||
- **产出要求**:新建 `ui/3b-实测记录.md`(实测回填,⛔ 不许凭记忆填)+ 补 `_tools/`/`_gate_shots/`(⛔ 别留空目录)+ `DESIGN.md` 按实补齐 Gate-1 与逐视口表 + 台账 `--report --state done`。
|
||||
- 已同步 `NEXT.md` 第 4 项(写明实况、前情与已派棒)。
|
||||
|
||||
## 08:14 · ✅ 第三棒跑完,目标收口(四步全过)
|
||||
|
||||
- 落盘(现取实测):`ui/3b-实测记录.md`(30 868 B @08:16)+ `ui/_tools/`(8 脚本 @08:01)+ `ui/_gate_shots/`(17 帧 @08:02)+
|
||||
`ui/mcn-workbench.html`(137 555 B @08:06)+ `ui/DESIGN.md`(52 163 B @08:15)。
|
||||
- 台账 `ab0f2d84` `state=done`;队列 `{n:17, done:17}`(**无 blocked**,含此前那条 `7446f482`);`goal.json` 的 `lifecycle = 已完成`,**四条验收全「过」**。
|
||||
- ⚠️ **登记一条偏离待裁定**:窄屏 3 档密度红 —— 560×900 / 500×844 / 390×844 的 P1 一屏行数低于契约 6 行;已登记、不阻断,**是否调窄屏断点待用户裁定**。
|
||||
- ⇒ 浏览器纪律两条(只连不起 + 一类任务一个标签)在本棒**没有复现卡死**。
|
||||
|
||||
## 09:47 · 核实另一个会话报的「总闸与事实矛盾」(用户令「别的会话检查出来的问题,确认下」)
|
||||
|
||||
**它报的两条,一真一假,而且有一个前提已经过时。**
|
||||
|
||||
✅ **真**:`contentm_agent` 的总闸 = `off`,而常驻 ✅ 活(pid 4768 / 心跳 8 秒前)⇒ 开关与事实矛盾成立。
|
||||
而且"有东西会去停它"这条也成立 —— `collabctl.py` 第 28 行逐字:`pythonw collabctl.py ensure` = **幂等收敛:开关 on⇒补齐缺失的;off⇒全停**,而保活任务 `collabd-keepalive-contentm_agent` 周期触发它 ⇒ **off 状态下迟早被收敛停掉**。
|
||||
|
||||
❌ **不准确**:「没有保活任务兜着」—— 保活任务**在**(`collabd-keepalive-contentm_agent` = `Ready`;另两区显示 `Running` 只是恰好落在触发窗口内)。
|
||||
准确说法是:保活任务不是"保住它"的力量,而是**按开关收敛**的那一方 —— 开关 off ⇒ 它反而会去停它。
|
||||
|
||||
⚠️ **已过时的前提**:它说「那条工作区的目标还在推进,停下就断在中间」—— **目标已于 08:14 完成**(见上一节)。
|
||||
⇒ B 方案原本唯一的那条缺点("断在中间")**不成立**;现在 B ⇒ 变成"顺理成章地停掉"。
|
||||
|
||||
## 07:12 · 结果检查第 33 棒 —— 阻碍换人(旧孤儿锁已解、新持锁会话在保护期),本轮零派活
|
||||
|
||||
- 本棒(自动化 `cdf24e8d`,第 33 棒)现取五样:`state.py` 仍不存在、`taskgraph.json` 仍不存在、台账 16 条(15 done + 1 blocked)、`lifecycle`=进行中、`acceptance` 3 过 + 1 不过。
|
||||
@@ -349,3 +370,48 @@
|
||||
- 🔴 **第 2 棒到底做到哪(现取,实测在盘)**:会话 `cc07347c` 06:32:15→07:10:16 `completed`(~38 分钟);已产出 `ui/_tools/` **5 份脚本**(cap/check_js/check_skeleton 06:34,grab_selftest/mutate_test 06:40)+ 把 `ui/mcn-workbench.html` 由 133 459 改到 **135 041 B**(06:39,改动前版备份于 `_scratch/…bak-before-gatefix.html`)+ 跑了 `_scratch/selftest-1440.txt`(**大面 PASS**:对比度 5.93/4.76:1、横向溢出 0、一屏行数、字号档、浮层焦点锁与 Esc/遮罩、滚动零点四容器全 0);**缺**:`ui/_gate_shots/`(空)、`ui/3b-实测记录.md`(不存在)、**未 `--report`**。
|
||||
- 本棒只写 `执行会话/目标-…-071c5b/结果检查-第33棒-20261009.md`;⛔ 未动 `ui/`、⛔ 未删锁/接管、⛔ 未改目标状态、⛔ 未新增排期、⛔ 未写 `NEED-USER.md`。
|
||||
- **自愈路径**:常驻每约 30 分钟建检查棒 ⇒ 下一棒(约 07:40,届时静默 ~30 分钟)或再下一棒(约 08:10,~60 分钟)跑 `orphan-lock.py` 时本锁翻到「可解除」⇒ 放锁后即可派执行棒收口第 4 步。**本轮无需用户介入。**
|
||||
|
||||
## 07:4x · 结果检查第 34 棒(本目标第 4 步仍未完成,但阻碍已消解、第三棒已排队 ⇒ 零派活)
|
||||
|
||||
- 🔴 **判定**:第④步仍未完成;但**域锁彻底没了**,且**补第④步的执行棒已在排队**(`aac0deb5` =`[执行]-[产品规划]-补第④步闸门取证与上报(第三棒)`,once 07:45,cwds 正确)⇒ **本轮零派活**,等第三棒报结果。
|
||||
- 🔴 **阻碍翻面的三条现取证据**:`--domain-status` ⇒ **当前无人持域锁**;`--domain-check "执行会话"` ⇒ **✅ 可派|域空闲**;`orphan-lock.py --dry-run` ⇒ 锁根**一把锁都没有**。
|
||||
- 🔴 **`orphan-lock.py` 真身在技能包**:`E:/ProgramData/.workbuddy/skills/session-mechanism/scripts/lock/orphan-lock.py` —— 派活单里给的 `<工作区>/.workbuddy/collab/lock/orphan-lock.py` **本区不存在**(本区 `.workbuddy/collab/` 下没有 `lock/`)。下次派活单该改这个路径。
|
||||
- **谁解的锁 / 谁建的棒**:同时窗内本区唯一在动的会话=`184c4986`「查询目标完成情况」(**主会话**,末次活动 07:43:34);`NEXT.md`(mtime 07:43)记「第二棒遗留孤儿锁已于 **07:40 由 `orphan-lock.py` 解除**」「已重派第三棒」。`aac0deb5.created_at`=07:42:57(本轮检查会话 `fire_at` 07:43:14 之前 17 秒)。
|
||||
- **台账出口**:`--report 7446f482 --state blocked --reason "…"` ⇒ `OK 已上报:blocked -> blocked`(理由改成:锁已无 + 活已由 `aac0deb5` 接续 + 本件作历史留痕)。
|
||||
- **第三棒前提已核**:9223 **LISTENING**(pid 1988)+ `/json/version` 正常回 JSON(Chrome/155)⇒ 「只连不起」有得连;常驻心跳 0.0 分钟、`round=82`、`pid=38768`(已从 33 棒记的 7388 换过)、`argv0` 指本区 ⇒ 机制在位。
|
||||
- **第④步仍缺(现取)**:`ui/3b-实测记录.md` 不存在、`ui/_gate_shots/` **空**、`ui/DESIGN.md` mtime 仍停 00:51;已在盘的是 `mcn-workbench.html`(135 041 B,06:39)+ `DESIGN.md`(46 807 B)+ `_tools/` 5 份脚本。
|
||||
- **代价信号(值得记住)**:第 22~34 棒连续 13 棒都停在第④步收口,其中 ≥12 棒的直接原因是**同一件事 —— 域锁没释放**(两次孤儿锁:`a257d30f` terminated/`cc07347c` 被用户手动关)。⇒ 「收工必跑 `--release-exec`」是本目标最大浪费来源。
|
||||
- 本棒只写 `执行会话/目标-…-071c5b/结果检查-第34棒-20261009.md`;⛔ 未动 `lifecycle`/`acceptance_state`、⛔ 未删锁/接管、⛔ 未建任何排期(重复建会抢同一把锁)、⛔ 未动 `ui/`、⛔ 未写 `NEED-USER.md`。
|
||||
|
||||
## 08:0x–08:1x · 执行第三棒完工 —— 第④步「重生成界面」闸门取证 + 台账上报已补齐(本目标四步全齐)
|
||||
|
||||
- 会话 `ab0f2d84`(`[执行]-[产品规划]-补第④步闸门取证与上报(第三棒)`),07:48 抢到域锁、08:1x 收工。**产物已 `--report done` + 域锁已 `--release-exec` 释放**(按工作区**相对路径**写 `--artifact` 才不触发「不在目标目录内」软提醒;绝对路径会触发,但不拒收)。
|
||||
- 🔴 **本棒只补验证与上报,⛔ 没重做界面**:`ui/mcn-workbench.html` 由 135 041 → **137 555 B / 1 706 行**(md5 `36d92ad6…`),共动 **4 处**,几何/骨架一格未改。交付目录终态:`mcn-workbench.html` + `DESIGN.md`(52 163 B,md5 `3ad8d426…`)+ 新写 `3b-实测记录.md`(30 KB)+ `_tools/` **8 个脚本** + `_gate_shots/` **17 张 PNG**。
|
||||
- 🔴 **动过的四处(两处真问题 + 一处自己造的回归 + 一处判据过松)**:① **自检重入死循环**(`paint()` 末尾把 route 留在 selftest,而 `toast()` 的 `setTimeout` 又调 `paint()` ⇒ 永久占住渲染主线程、页面一辈子不应答)——**这正是 2026-10-09 早上「整机卡死」的根因**,修法=`paint()` 入口守卫;② 「功能入口层残留」判据只查当刻 DOM(上一条检查停在 P8 ⇒ 注进 P1 的 `.sect-nav` 查不到)=**假对照**,改为八页逐页查;③ 我一度放宽 `hashchange` 守卫 ⇒ 整屏自检被 P8 覆盖、变异 M6 从报红退化成「连输出都没有」⇒ **回退原写法**;④ `check_skeleton.py` 判据由「名字互为前缀」**收紧为「剥注解后严格相等」**(原写法放过「只加后缀」的漂移:②段改「账号矩阵一览」仍 PASS;真值核对剥注解后 39/39 逐字相同 ⇒ 不需要前缀宽容)。
|
||||
- 🔴 **实测口径(全部现取)**:契约视口 1440×900 **自检 PASS 77 / FAIL 0**(控制台 0 报错);**变异对照 20/20**;骨架闸门**正向 PASS + 三条反向变异全部报红**(②段 39 块逐页逐位一致);命名闸门 `check_naming.py --ws` ⇒ **通过 2060 / 失败 0 / 提示 27**;**16 档逐视口:绿 13 / 红 3**(`560×900` P1 5 行、`500×844` P1 3 行、`390×844` P1 0 行 + P2 5 行)。
|
||||
- ⚠️ **归属要说清**:V2 的窄屏密度**比 V1 差了**(V1 只 `500×844` 一处红)。成因是 V2 自己的两处设计(侧栏 `64 → 184px`、新增 Page Shell 一层抬高空行顶),⛔ **不是本棒造成**;本棒只是把真值测出来并登记 ⇒ 是否动窄屏断点**留给用户**。
|
||||
- ⚠️ **两个数必须小心**:①截图是 **17 张**,脚本末尾印的「成功 18 / 共 18」是**拍摄次数**(`P1-1440` 被算两次、落同一文件名),⛔ 按 `ls | wc -l` 复核才是文件数;②`3b-实测记录.md` **不自我登记 md5**(每改一次就作废),要核对现取。
|
||||
- 🔴 **浏览器纪律落地**:只连 9223(pid 1988)+ **一类任务只开一个标签复用**(`cap.py`/`grab_selftest.py` 改单标签、新增 `_tools/tab_close.py` 收工清场)。收工 `tab_close.py` 只关自己那个 targetId,复核 `REMAIN 1`(剩下的是用户自己的 chatgpt 页,⛔ 没碰)。
|
||||
- 🔴 **锁的真身位置(下次别再找错)**:本区的域锁**不在工作区里**,而在 **`D:/github/dsh_shenxian/dsh-server-docs/05-交接单/.locks/<转义名>/OWNER`** —— 因为 `handoff-guard.sh` 的 `ROOT` 会先读技能包旁的 `roots.env`(当前不存在 ⇒ 落在 `$_SM_HERE/..`),实际解析到 `dsh-server-docs`。释放用**对称姿势**:`--release-exec "<会话名>"`(名字进 `$2`,脚本已修成与 `--claim-exec` 对称;取不到名 fail-closed)。
|
||||
- ⚠️ **说人话自评**:`3b-实测记录.md` 初稿自评 **44(未过 45)** ⇒ 重写了「§八 复述密度」与「补连续叙述」两处后复评 **46**;`DESIGN.md` 45(压线)。⛔ 不是改分数凑线,改的是被扣的地方。
|
||||
|
||||
## 结果检查 · 第 35 棒(08:1x,自动化 `0abe6dbb`)
|
||||
|
||||
- ✅ **第 4 步已由第三棒 `aac0deb5` 补齐并经本棒核验通过**(`ui/3b-实测记录.md` 30 868 B 在盘;`_tools/` 8 脚本、`_gate_shots/` 17 帧不再空;`DESIGN.md`/`mcn-workbench.html` 自报 md5 现取复核一致)⇒ **目标四步全 `done`,判定「疑似已完成」**。
|
||||
- 🔴 **台账两处动作**:① `ab0f2d84` 上报时漏带 `--by` ⇒ 补上「第三棒」归属;② `7446f482`(01:25 出生即 blocked 的首次尝试,活已由第三棒完成)**关闭为 `done`** —— 目的=**让队列清零**,否则 `queue-empty` 分支的目标检查会话永不触发、两条腿互相锁死空转(第 34 棒 §七 记的空转账根因之一)。回读 `tasks.json`=**17 条全 done,零 pending/running/blocked**。
|
||||
- 🔴 **孤儿锁那档已消解**:07:40 `orphan-lock.py` 自动解除(用户 08-09 逐字授权),07:45 第三棒抢锁成功;现取 `--domain-status` 无人持锁。NEED-USER §3/§4 已补「已消解」留痕。
|
||||
- ⚠️ **新补进 NEED-USER 的一条**(原只写在目标目录、用户看不到):第②棒把产品现状**发到站外**这条红线**仍未追认/否决**(目标执行状态 §四.1)。
|
||||
- ⛔ 未改 `lifecycle`(仍进行中)、⛔ 未改 `acceptance_state`(目标检查会话的活);本轮报告落目标目录 `结果检查-第35棒-20261009.md`。
|
||||
- 📌 **教训沉淀**:`--report --state done` **漏带 `--by` 会造出无主件**(台账看不出谁干的);**已被后续棒继承并完成的旧 `blocked` 要主动收口**,否则它就是空转的锚点。
|
||||
|
||||
## 目标检查 · 第 36 棒(08:2x,自动化 `d6bf6fda`)—— 判「目标已完成」并收口
|
||||
|
||||
- ✅ **判定:目标已完成**。三路并集逐条核:① 台账 `tasks.json` **17 条全 done**(本目标 5 条:`dc972b1d`/`99c2557c`/`745bf50a`/`ab0f2d84`/`7446f482`);② `taskgraph.json` 仍不存在(这一路无判据,同第 18~35 棒);③ `acceptance_state` 原第 4 条「🔴 不过」是**第 21 棒的旧事实**(01:16,卡在「半截、无凭据」),已被第③棒 08:14 上报翻面。
|
||||
- 🔴 **本轮的关键动作=把判据从「旧稿」拉回「现取」**:`目标执行状态.md` 停在 01:17(第 21 棒),而**结果检查第 22~35 棒不更新它** ⇒ 若照旧稿读会判「不过」并再派棒 ⇒ **空转闭环**。故本棒按「先取证再结论」重核:`ui/3b-实测记录.md`(30 868 B,08:16)在盘、`ui/_tools/` 8 脚本、`ui/_gate_shots/` 17 帧、`ui/DESIGN.md` 52 163 B、`ui/mcn-workbench.html` 137 555 B ⇒ 第④步三个子条件(产物在盘/台账上报/闸门有凭据)**全满足**。
|
||||
- ✅ **写回验收**:`goalctl.py declare --yes --kpi "…"` **整表重写 4 条全「过」**(先干跑核对解析=4 条无跳过,再 `--yes`;已回读确认)。备份落 `bak-goalctl-20261009/goal.json`。
|
||||
- ✅ **改生命周期**:`collabd.py --set-life 已完成 --by "[检查]-[目标检查]-contentm_agent-第36棒"` ⇒ **进行中 → 已完成**(回读 `lifecycle=已完成`)。副作用:**常驻程序随之优雅退出**(pid 38768,原因=目标已完成)—— 这是设计行为,⛔ 不是故障。
|
||||
- ⚠️ **登记偏离(不阻断)**:窄屏 3 档密度红(560×900/500×844/390×844),成因是 V2 自身设计(侧栏 64→184px、新增 Page Shell),V2 比 V1(仅 1 档红)**变差**;已登记、留用户裁定,⛔ 未擅自改。
|
||||
- ⛔ **本轮未做**:未派任何棒(四步全 done,无缺口);未删锁/接管(现取无人持域锁);未代执行棒干活。
|
||||
- ⛔ **两处路径失效(记下别再找)**:任务单给的 `contentm_agent/state.py` **不存在**(第 18~35 棒同样如此);`contentm_agent/.workbuddy/collab/lock/orphan-lock.py` 也**不在工作区**(真身在技能包 `session-mechanism/scripts/lock/`)。
|
||||
- 📌 **口径沉淀**:`目标执行状态.md` 只由**目标检查**更新,**结果检查**不更新它 ⇒ 「文档看似唯一依据,但可能落后十几棒」—— 判前必须拿台账+产物**现取对一遍**,⛔ 不许照旧稿直接判「不过」。
|
||||
|
||||
Reference in new issue
Block a user