核实8a8412完成:信源16路留8弃8、赛道过滤层落prd/2a(F15不插号)与两张图、旧版自动进归档-过期版+索引同步;独立复核闸门2061|0|27与冻结项未动

This commit is contained in:
WorkBuddy committed 2026-10-11 22:06:56 +08:00
1 parent c3e124e4ae
commit ce49e23ac1
12 files changed
+1430 -19

No files matched your search

+69
View File
@@ -142,6 +142,17 @@
- ①起点一律指向**方案文件夹**(`docs/pm/mcn-shortvideo-agent/` 的 `专题/` 与 `prd/`、`ui/`),不再指向执行区散落的目录 ⇒ 「两态规则」第一次真正起作用。
- ②明确写「**`docs/` 一个字都不许改**」—— 执行棒的域锁只允许写 `执行会话/` 内 ⇒ 产物落目标目录,**收口时由主会话同步进方案文件夹**(旧版进 `归档-过期版/`)。这条是域锁与新规则的接口,第一次跑,要看顺不顺。
## 22:05 · 用户问「目标完成了吗」⇒ 已完成,且两态规则第一次真正跑通
- ✅ **判定:已完成**。`lifecycle = 已完成`(21:44:00),三条判据全 `过`。**这次跑了三棒执行 + 三棒检查**:执行棒 `f615337b`(20:48:12–20:58:52,收窄+设计+出图)→ 检查棒第 52 棒(21:11–21:17)→ **执行棒 `1d1fdce6`(21:24–21:33,「把 F15 与 F9 扩写落进 prd2a 并补 2b 两句」)** → 检查棒第 53 棒(21:41–21:45 判完成)。⚠️ 第二棒是**检查棒自己派的**(因为第一棒只出了方案、没落产品文档)⇒ 机制在没人干预下自己补了这一步。
- ✅ **方案文件夹已同步(两态规则首次完整跑通)**:`prd/2a` 68 924 B(原 61 683)/`prd/2b` 52 992 B(原 52 643);两份旧版**自动进了 `归档-过期版/`**(`2a-产品功能__8a8412.md`/`2b-界面布局__8a8412.md`);`索引-当前权威版.md` 同步更新(4 806 B)。
- 🔴🔴 **发现我派活单里那条「`docs/` 一个字都不许改」是多余的**:实际是**执行棒直接改了 `docs/`**(它持了 `docs` 域的锁 ⇒ 域锁按**域**互斥、**不是**"只许写自己的域",会话可以持多个域的锁)。⇒ 两种路径都可行(执行棒直接改=少一次搬运/主会话收口改),**关键是改完必须做「归档 + 索引同步」这两步**。⇒ 这条我记进 MEMORY 了,下次派活单不再写那句无效限制。
- ✅ **我独立复核过(不采信判据自我报告)**:闸门 **2061|0|27**(我自己跑了一遍);冻结项一个没动(页面 7/导航一层七项/板块 39/流转 20 条/对象 11 个);`2a` 里 F15 接在 F14 后**不插号**;两张图里过滤段**写死了字段名与三档阈值**(`宽松55/30 · 标准70/40 · 严格85/60`;匹配度 `M` 直接喂给七维的「账号匹配度 25%」那一维,⛔ 不两处各算一套)。
- ✅ **信源收窄的实质**(我读了产物):`信源收窄-短视频平台与内容社区.md`(13 225 B)—— 16 路逐条复核、**留 8 弃 8**;判据是一条线(「条目本身是不是"大家在搜什么/社区在聊什么/平台在推什么/对标号在发什么"」⇒ 留;「是新闻/产品名/百科词条、要先做一轮再加工」⇒ 弃);弃用**不是一删了事**,每条写实测返回过什么、为什么不够贴题、将来什么条件下拿回来。
- ✅ **两处它做得比我要求的好**:①**复核后改了我的口径** —— 我判 `Google Trends` 与 `Product Hunt` 都偏资讯,它复核后**留前者、弃后者**(两者不是一个形态:前者是搜索需求信号、后者是产品发布);②**如实交回一处缺口**(快手、视频号**没有源**)并单列 §三,⛔ 没当成"已经收窄完了"。
- 📌 产物清单(目标目录 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`):`信源收窄-短视频平台与内容社区.md`(13 225 B)/`赛道过滤层-设计.md`(23 241 B)/`产品框图-热点与选题-赛道过滤版.html`(34 463 B,108 文本节点)/`功能流程图-热点到选题-赛道过滤版.html`(27 382 B,83 节点)/`2a-落盘记录.md`(8 239 B)/`交付说明.md`(7 927 B)。
@@ -207,3 +218,61 @@
- ✅ 回读实测:`acceptance_state` 三条都变成 `过|…`;`lifecycle` = `已完成`;常驻随之优雅退出(pid 42172)。
- ⚠️ **派棒排期并非只有本目标一条**(通报又写错):实跑 `automation_update list` 见到 `df3dead8` 接续-技能包脚本去本机硬编码(19:38)、`02787e55` [执行]-[B站AI设计教程采集]-承接队列(18:57)两条 ACTIVE once 仍在册。本轮不派棒所以无冲突,**但「没有别的待执行排期」这句通报再次不可信**。
- 📌 遗留待拍板未动:A 要不要把 12 平台矩阵同步进 `2a`/`2b`;上一版 6 条改结构项(A–F)仍挂 `NEED-USER.md` 第 6 节。
## 20:42 · 第 51 棒检查会话:核对目标「收窄热点源并加赛道过滤」(8a8412)
- **判定=未完成**,但**没有派新棒**:执行排期 `50a8f8f3`「[执行]-[产品规划]-收窄热点源并加赛道过滤层」已在册 ACTIVE、`scheduledAt=20:48`,与本棒核对时刻(20:41)仅差 7 分钟 ⇒ 派棒即是重复。
- 🔴 **通报第三次写错**:本轮触发通报称「本项目没有别的待执行排期」,实跑 `automation_update list` 见 **3 条 ACTIVE once**(`50a8f8f3`/`d52d8fd9` 抖音采集/`5b2ab4fa` 第50棒)。规矩照旧:⛔ 别信通报,派棒前自己 list。
- 三路核对实况:`tasks.json` 全 `done` 且**无一条属当前目标**(最后一条 `346cf532` 属上一目标 `39646d`);`taskgraph.json` **不存在**;工作区根**无 `state.py`** ⇒ 实际只跑两路,靠状态文档补齐。
- 动作两项:① 补写 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/目标执行状态.md`(三条判据 + 结论 + 下一棒动作;换目标时它只有空模板);② `goalctl.py declare --kpi` 把 `acceptance_state` 取值从 **`未过`** 规范成 **`🔴 不过`**(`未过` 不在取值域,机器分不出「没判」与「判了没过」),回读确认已落盘(备份 `.workbuddy/collab/bak-goalctl-20261011/`)。
- `lifecycle` 保持「进行中」,⛔ 未标完成。下一棒:等 `50a8f8f3` 跑完,照状态文档核产物是否落进该目标目录,落了才改判。
## 20:5x · 目标 `8a8412` 执行会话收工 —— 收窄热点源 + 加赛道过滤层(四样交付)
- ✅ **四样 + 交付说明全落** `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`:`信源收窄-短视频平台与内容社区.md`(13 225 B,16 路逐条复核 ⇒ **留 8 弃 8**,弃的每条写实测返回过什么/为什么弃/拿回来条件)|`赛道过滤层-设计.md`(23 241 B,七问全答 + **新增功能条目 F15** 可整段粘 + **扩写 F9** 加赛道表字段组 + 三处小同步)|`产品框图-热点与选题-赛道过滤版.html`(34 463 B,1400×930)|`功能流程图-热点到选题-赛道过滤版.html`(27 382 B,1520×880)|`交付说明.md`。说人话 47/50 + 46/50。
- 🔴 **本目标的核心判断(别照抄用户名单)**:判据是「**这条源产出的条目,本身能不能当一条短视频选题的开头用**」。⇒ 弃海外 5 条(HN/Product Hunt/Wikipedia/Google News/BBC)+ 国内 3 条(知乎/头条/百度),理由=**产的是「新闻/名录/词条」,不是「选题」**,拿到手还要再加工。留 8 路并打四类信号标签(大众热度/垂类讨论/对标动作/平台话题)。两条单列理由:`Product Hunt` 换成 `YouTube 频道 RSS`(前者给产品名录、后者直接就是「他发了什么」);`百度热搜` 与微博同质(都是事件型)留微博。
- 🔴 **新加的层「按账号赛道过滤」四面定死**:插点=**分类之后、价值分之前**,且**只作用于外部热点那一路**(对标/评论/自有数据/人工四路天然按账号来);匹配读 `Account` 的 `定位`/`受众`/`偏好与红线` + 新增**赛道表**字段组(`包含词[]`/`排除词[]`/`领域白名单[]`/`过滤档`),⛔ 不读风格、⛔ 不读平台账号;规则 A 硬拦 + 规则 B `M = clamp(0,100, round(55 × (W' ÷ 2.0) + 30 × D + 15 × A))`(`W' = min(Σ命中词权重, 2.0)`,词权重 主词 1.0/长尾 0.6/受众 0.4);三档 宽松 55/30 · 标准(默认)70/40 · 严格 85/60。挡下来的进**「未匹配档」=P2 的一个筛选档位**(⛔ 不是新池子/新页面/新板块),留 7 天可捞回。
- ✅ **红线守住**:`docs/` 一个字没动;页面 7/导航名与顺序/板块 39/流转 20 条/对象 11 个**全未变**;新增条目走**末位编号 F15**(⛔ 不插号),`Topic.赛道匹配[]` 是数组字段(⛔ 不新增对象)。
- ✅ **自检三件**:`diagram-design/scripts/self_check.py` 两张图 ⇒ 均 `OK`(无障碍 SVG 契约 + 单文件安全);浏览器内几何自检(全部 `<text>` 取 `getBoundingClientRect`,判溢出画布 + 两两重叠 >3px)两张图各 **83 节点 ⇒ 溢出 0/重叠 0**;**变异对照**注入一个必然重叠的 text ⇒ 报 **1 条重叠**(`① 采集 · 收窄后 8 路 <> MUTANT-OVERLAP`),移除后回 83 节点 ⇒ 证明判据非恒绿。
- ⚠️ **踩坑一条(值得记住)**:`Read` 工具对 PNG 有**大文件闸**(本轮 488 KB 的整页截图被拦,提示「全文会写进会话历史、之后每轮全量重发」)⇒ 看图先压:**系统 `D:/miniconda3/python.exe` 带 Pillow 12.3.0**(managed 的 3.13.12 没装),`Image.resize` + `quality=72` 存 jpg(488 KB → 152 KB)即可读。另:PowerShell `Add-Type` 被安全策略拦(不能用来缩放图)。
- ✅ **收工**:`--report f615337b… --state done --artifact "执行会话/目标-收窄热点源并加赛道过滤-8a8412/"` ⇒ `OK 已上报 done`;`--release-exec` 按 OWNER 里 `ME` 原文(`[执行]-[产品规划]-收窄热点源并加赛道过滤`)释放 ⇒ `✓ 已释放域锁`,锁目录已清空(只剩 `.migrations`/`.orphan-release.log`);闸门重跑 **通过 2061|失败 0|提示 27**(与基线一致);浏览器**复用**既有 file:// 标签页(收工 `list_tabs()` 仍是 5 个,⛔ 未开新标签)。
- ⚠️ **遗留交回(⛔ 本棒未拍板)**:① 热榜这一路落在 P2 哪一块(并进 F1 vs 新增块 ⇒ 板块 39→40,破数字冻结),倾向并进 F1;② 赛道表编辑入口要不要在 P6 单列一块(P6 5→6 块),倾向挂在画像五维块内;③ 快手/视频号无源的两条解法(人工录入档 / 换第三方聚合)二选一。
- 📌 **收口未完(重要)**:F15 与 F9 的实改、两张图同步进 `docs/pm/mcn-shortvideo-agent/` 要**主会话按两态规则**做 —— 域锁只许写 `执行会话/`,这一步本棒做不了。本棒同时写了自动化记忆 `automations/50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4/memory.md`。
## 21:15 · 第 52 棒检查会话 —— 目标 `8a8412` 判「未完成」,派落盘棒
- 🔴 **最重要的一条教训:状态文档会滞后于产物**。上一棒 20:57 已 `done`、四份产物全在目标目录,但 `目标执行状态.md` 写于 20:42(早于产物),三条判据还停在「目标目录内无产物,执行棒未触发」。⇒ 检查会话**照文档抄判据会误判**,必须拿产物逐条重判(这也是「执行棒只交付产物、不写状态文档」这条分工的直接后果)。
- 判据重判结果:① 信源收窄 **过**(16→8,弃的每条有实测返回值/原因/拿回条件);② 赛道过滤层落进产品功能文档 **🔴 不过**(设计+F15 可粘块+F9 扩写都有,但 `prd/2a-产品功能.md` 一字未改);③ 两张图加过滤层 **过**(框图 10 处/流程图 9 处命中「赛道过滤」,且自检有变异对照)。
- 动作三件:① `goalctl.py declare --kpi … --yes` 把三条判据改齐(`过|…`/`🔴 不过|…` 规范写法),**回读 goal.json 确认已落**(备份进 `bak-goalctl-20261011/`);② 重写 `目标执行状态.md`(加「四、旧判据的作废清单」=把 20:42 版那句「无产物未触发」作废,⛔ 防止后续再拿它判红;加「五、收口待办」);③ 派新棒 `64a404f2`(21:24,域 `docs`)去把 F15/F9 扩写/三处同步落进 `prd/2a-产品功能.md` 并给 `2b-界面布局.md` 补两句。
- 🔴 **域锁是判据②的客观卡点**:`prd/2a` 落在 `docs` 域下,而执行棒默认只写 `执行会话/` ⇒ **派棒必须在提示词里显式指定域目录 `docs`**(`--domain-block docs` 取门禁块抄进去),否则新棒照样够不着 2a,判据会永远红。
- `lifecycle` 保持「进行中」,⛔ 未标已完成(判据②未过)。
- ⚠️ 三路判定仍只跑通两路:`taskgraph.json` 不存在;工作区根无 `state.py`(用 `goalctl.py` 默认输出顶替)。`tasks.json` 里当前目标 `8a8412` 有一条 `done`(20:57,`by` 字段为空)。
- ⚠️ `automation_update list` 实测:**通报说「没有别的待执行排期」是假的** —— 实际有 10 条 once 排期都挂着 ACTIVE(多数是已耗的历史棒,含 50a8f8f3 自己)。⇒ 派棒前一定自己核一遍,别信通报;也别把历史棒当成「待执行」。
## 21:2x–21:3x 执行棒 · 把 F15/F9 扩写落进 prd(sid `1d1fdce6`,域 `docs`,判据②做成「过」)
- 抢锁 → 改 → 跑闸门 → 释放,都在 `docs` 域内完成;`handoff-guard.sh --claim-exec`/`--release-exec` 用的都是会话全名。
- **改了 `2a-产品功能.md` 8 处**:① 文件头补本轮说明;② §〇 加「本轮追加(赛道过滤层)」;③ §二 `Account` 行加「+ 赛道表」+「被谁消费」补 P2(F15 正文写明 P2 是匹配发生处,不补就打架);④ §三 标题 14 → 15 条;⑤ S1 段末整段落进 F15(源块 §6.1 逐字);⑥ F9 核心对象行点赛道表 + 界线后追加「扩出赛道表字段组」;⑦ §四 标题改 F1–F15、加 F15 行、F9 差异栏补一句;⑧ §五 加本轮六条 + §七 五行落点补 F15(持久化「全部 15 条」,失败恢复行写明 F15 走 fail-open,与 F5 的 fail-closed 对照)+ §九 新增第 8 项(三条未拍板带回收三字段)+ 自检加两条。
- 🔴 **踩到一处措辞打架**:§九 第 7 项原写「⛔ 不编一条 F15」(指定时发布),而本轮 F15 已用于赛道过滤 ⇒ 改成「⛔ 不为它新增编号 —— F15 已用于赛道过滤,⛔ 不借它的号」。教训:**新增编号时要回头搜一遍文档里有没有「不许编这个号」的旧措辞**。
- **`2b-界面布局.md` 只改 2 处共 3 行**:P2 对标内容块补账号切换器 + 匹配度筛选器;P2 信息分档表加「匹配度筛选器|主屏常驻」一行(挂在既有板块,⛔ 不占块)。
- 冻结数改后现算全绿:F1–F15 无插号/页面 7/导航一层七项/板块 39(5+4+4+6+5+5+10)/流转 20/对象 11。
- **闸门改前改后都是 2061|0|27**(命令必须带 `--ws`,⛔ 不给 `--root .`)。
- 两态规则:被顶替的旧版用 `git show HEAD:<路径>` 取出来存进 `归档-过期版/2a-产品功能__8a8412.md`(61 683 B)与 `2b-界面布局__8a8412.md`(52 643 B)。✅ 这是个好用的招:**git 跟踪着 prd ⇒ 改前版本随时可以完整取回**,不靠手工备份。索引 §二 大小日期已更新(68 924 B/52 992 B),§五 归档份数 28 → 30。
- ⚠️ `--report` 报了软提醒「artifact 不在目标目录内」,但路径确实在 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/` ⇒ 该判据大概率是拿 artifact 与 `execution_doc`(= `…/目标执行状态.md`)**整条比**,不是比目录。软提醒不影响上报(已 `done`)。
- 产物:`执行会话/目标-收窄热点源并加赛道过滤-8a8412/2a-落盘记录.md`(逐处「改前 → 改后」+ 硬约束核对表 + 闸门两次数 + 说人话 46/50)。
## 21:4x · 第 53 棒检查会话:**目标「收窄热点源并加赛道过滤」判定已完成**(`8a8412` 收官)
- ✅ **三条判据全过并收口**:①信源收窄 过/②赛道过滤层落进 prd **由「🔴 不过」翻成「过」**/③框图流程图加过滤层 过。
`goalctl.py declare --kpi "三条" --yes` 写回(已回读核对)⇒ `collabd.py --set-life 已完成 --by "…第53棒"`(21:44:00)。
- 🔑 **判据 ② 翻转的依据**:执行棒 `64a404f2`(第 52 棒 21:14 派,排期 21:24)**已跑完并上报 done**(台账 `1d1fdce6`,21:31,
`artifact` = 目标目录 `2a-落盘记录.md`)。本棒**在磁盘上定向 grep 核验**(⛔ 不只信落盘记录的自述):
`prd/2a-产品功能.md` L179 `#### F15 赛道过滤与未匹配档`、L95 `Account` 行含「+ 赛道表」、L318/L324 F9 扩赛道表、L400 归属总表 F15 行;
`prd/2b-界面布局.md` L173 账号切换器与匹配度筛选器、L191 信息分档表新增行;归档两份在位;索引 §二 已更新、§五 28 → 30。
- ⛔ **未派棒**(无缺口);`--domain-status` 报「无人持域锁」⇒ ⛔ 未动任何人的锁、⛔ 未跑孤儿锁解除。
- ⚠️ **副作用(机制自带,不是故障)**:`--set-life 已完成` 让本区常驻 `collabd.py --supervise`(pid 10904)**优雅退出**;换目标时由新目标的主会话重起。
- 📌 **两条可复用的经验**:
1. 检查会话遇到「状态文档落后于新产物」⇒ 文档仍是唯一依据,但**允许按台账 artifact 定向核验磁盘**(grep 具体行号);这不算"到处翻文件"。核验完必须**文档与 `goal.json` 一起改齐**。
2. `goalctl.py declare --kpi` **不带 `--yes` 是干跑**(rc=0、打印「一个字节都没写」)⇒ 必须加 `--yes` 且**回读**。本机已栽过同型的"静默放行"。
- 📌 **遗留三条(⛔ 非验收判据,交回用户拍板)**:热榜这一路落 P2 哪一块(并进 F1 还是新增一块,新增则 39 → 40)/赛道表编辑入口是否在 P6 单列一块/快手与视频号无源怎么补 —— 已带回收三字段登记在 `prd/2a-产品功能.md` §九 第 8 项。
- 状态文档已更新:`执行会话/目标-收窄热点源并加赛道过滤-8a8412/目标执行状态.md`(新增「六、本棒核对记录(第 53 棒)」,原第 52 棒记录降级为「七」)。