diff --git a/.workbuddy/memory/2026-10-08.md b/.workbuddy/memory/2026-10-08.md index 2046228..d8d0b6e 100644 --- a/.workbuddy/memory/2026-10-08.md +++ b/.workbuddy/memory/2026-10-08.md @@ -927,3 +927,25 @@ 🔴 **闸门现状:通过 2048 | 失败 12 | 提示 27**(第八轮收口时为 2060/0/27)。这 12 条**全由另一会话那批提交引入**:四段表子步列含 `3c GPT参考版`|②③边界复述|停线规则复述 ×3|可选档骨架名单 ×4|说人话门槛 ×5|对比度门槛|设计契约字段|②—③定案原话 ×5|1b 定案原话 ×4|grill-me 火力点 ×2|`strategy/` 旧路径(`SKILL.md#141`)|`ux/` 旧路径(`SKILL.md#77/142/143`)。⛔ 本会话改动零新增 FAIL(提交前后各验一次)。 **提交**:`46bee95`,已推 `237a09a..46bee95`(回退方式:`git revert 46bee95`)。 + +--- + +## 第十一轮 · 闸门 12 条 FAIL 的归因坐实(用户质疑「别的会话没处理过这个技能」) + +**用户质疑**:「这个不都是产品规划的技能吗 别的会话没有处理过这个技能」⇒ 复核后**质疑不成立**,那个会话确实处理过。 + +**铁证(抽版本对跑,可复现)**: +- `git archive 44d42b0 product-planning` 抽出来跑闸门 → **`✅ 命名一致性全过`**(0 失败) +- `git archive 1d7d31a product-planning` 抽出来跑 → **`2048 | 失败 12 | 提示 27`** +- `git diff --stat 44d42b0..HEAD -- product-planning/scripts/check_naming.py` → **空**(判据在整个区间零改动;它最后一次被改是 `7a476f9`,在 44d42b0 之前) +⇒ **12 条是 `1d7d31a`(10-08 22:22,作者 maogeigei)一步引进来的**,不是长期欠账,也不是判据变严翻旧账。 + +**该提交的改动范围**:`product-planning` 下 **7 个文件**(`SKILL.md`、`stage-delivery/SKILL.md`、`execution-runbook.md`、`layouts-tooling.md`、`stage-discovery/SKILL.md`、`stage-requirements/SKILL.md`、`create-prd.md`)+ session-mechanism 两个。 + +**改动性质像回退,不像合并**(以 `stage-requirements/SKILL.md` 为例): +- 把 `## ⭐⭐ ②—③ 交接口(唯一权威处 · 改边界只改这一块 · 2026-10-06 用户定案)` 的「**唯一权威处**」声明连同下方说明**整段删掉** +- 删掉「为什么立这一块:停线规则被三段写成三种、②段写成四种……」那段(**这段正是「单一可信源」门禁的立法理由**) +- 删掉「⛔ 交给③段时骨架是冻结的…」那条 +⇒ **权威处声明被削弱之后,复述就重新长回来** ⇒ 修法顺序必须是**先恢复权威处声明、再清复述**,反了会反复。 + +**产出**:`技能包闸门待修清单-20261008.md` 加第五节「归因铁证」(两版本对跑的可复现命令 + 三条证据 + 改动性质),供用户带去与那个会话对质。 diff --git a/.workbuddy/memory/MEMORY.md b/.workbuddy/memory/MEMORY.md index 5a20c38..a8c7fb0 100644 --- a/.workbuddy/memory/MEMORY.md +++ b/.workbuddy/memory/MEMORY.md @@ -46,7 +46,7 @@ - 🔴 **工作区已 git 化**(2026-10-08 08:1x):远端 `git@ssh.alotbuy.com: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 `(全局 git config 未动),可推翻。 - 🔴 **全局技能仓**(`E:/ProgramData/.workbuddy/skills`)是**独立仓**:远端 `git@ssh.alotbuy.com:admin/workbuddy_skills.git`,分支 `master`(⛔ **无 upstream 配置** ⇒ 必须 `git push origin master` 显式推,且 `git status -sb` **不显示 ahead**,别拿它判断同步与否),提交者身份是**全局** `maogeigei `(与工作区仓的局部 `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)**已入库,不再是"未纳管"**。 - 🔴 **并发覆盖实录与 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 开头写一次」的复述禁令 ⇒ **写"不复述"时别把名单抄进来**。 -- 🔴 **全局技能包闸门现状(2026-10-08 22:4x)**:`check_naming.py --root . --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ **通过 2048 | 失败 12 | 提示 27**(第八轮收口时 2060/0/27)。这 12 条**全由另一会话那批提交(说人话合并/供给块重构)引入**:复述类 9 条(②③边界 / 停线规则 / 可选档骨架名单 / 说人话门槛 / 对比度 / 契约字段 / ②—③定案原话 / 1b 定案原话 / grill-me 火力点)+ 旧路径 2 条(`SKILL.md#141` 的 `strategy/`、`#77/142/143` 的 `ux/`)+ 四段表子步列含 `3c GPT参考版` 1 条。**待其收口或另行指派,⛔ 别默认是"自己上次的债"**。 +- 🔴 **全局技能包闸门现状(2026-10-08 22:4x)**:`check_naming.py --root . --ws "E:/ProgramData/AIProject/contentm_agent"` ⇒ **通过 2048 | 失败 12 | 提示 27**(第八轮收口时 2060/0/27)。这 12 条**已坐实由提交 `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 ⇒ **看板要重启**才生效(配置模块级只读一次)。 - 🔴 **本区协作机制当前是「停」态**(2026-10-08 用户令):开关 off、旧保活任务已注销(定义备份在 `tmp/_oldtask_backup.xml`)⇒ 目标完成后不再每 5 分钟空转。要再起 ⇒ `collabctl.py on --ws E:/ProgramData/AIProject/contentm_agent`。 diff --git a/技能包闸门待修清单-20261008.md b/技能包闸门待修清单-20261008.md index 3d53cc8..0ab9b8f 100644 --- a/技能包闸门待修清单-20261008.md +++ b/技能包闸门待修清单-20261008.md @@ -1,7 +1,8 @@ # 技能包闸门待修清单(2026-10-08 22:4x) > 用途:`product-planning` 技能包 `check_naming.py` 现存 **12 条 FAIL** 的逐条现场。 -> ⚠️ 这些 FAIL **不是** 2026-10-08 22:4x 提交 `46bee95`(B 方案补落)引入的 —— 那次改动提交前后各跑一次闸门,**零新增 FAIL**;本包第八轮收口时闸门是 `2060 / 0 / 27`。 +> 🔴 **归因(已坐实,见第五节)**:这 12 条由提交 **`1d7d31a`**(2026-10-08 22:22,作者 `maogeigei`)引入 —— 它在「撤销误用的『项目会话』更名 + 说人话新稿按合并落地」里改了 `product-planning` 下 **7 个文件**(`SKILL.md`、`stage-delivery/SKILL.md`、`execution-runbook.md`、`layouts-tooling.md`、`stage-discovery/SKILL.md`、`stage-requirements/SKILL.md`、`create-prd.md`),改动看着像**回退/覆盖**而非合并。 +> ⚠️ 也**不是** 2026-10-08 22:37 提交 `46bee95`(B 方案补落)引入的 —— 那次改动提交前后各跑一次闸门,**零新增 FAIL**。 ## 复跑命令 @@ -113,3 +114,46 @@ E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe scripts/ch 1、这个包当前是**多会话共写**,推进以分钟计。动手前先 `git log -1` 看有没有人刚推过,改完**立刻**提交。 2、判「我的改动还在不在」用 `git show HEAD:<文件> | grep`,⛔ 不要看 `git show --stat` 的行数(多文件提交的 `--stat` 是合并统计,照它判会误报"内容缺失")。 3、改动涉及 `layouts-tooling.md` 时注意:该文件的开头(骨架名单与理由)与 §4.9(导航栏)是**权威处**,修复述时不要把权威处一起删掉。 + +--- + +## 五、归因铁证(可直接复现) + +### 5.1 两个版本各跑一次闸门 + +``` +cd E:/ProgramData/.workbuddy/skills +for c in 44d42b0 1d7d31a; do + rm -rf /tmp/pp-$c && mkdir -p /tmp/pp-$c + git archive $c product-planning | tar -x -C /tmp/pp-$c + printf "=== %s ===\n" "$c" + (cd /tmp/pp-$c/product-planning && \ + E:/ProgramData/.workbuddy/binaries/python/versions/3.13.12/python.exe \ + scripts/check_naming.py --root . --ws "E:/ProgramData/AIProject/contentm_agent" 2>&1 | tail -2) +done +``` + +实测结果: + +1、`44d42b0`(第八轮收口版,含此前全部规则改动)→ `✅ 命名一致性全过`(0 失败) +2、`1d7d31a`(22:22 那个提交)→ `小计:通过 2048 | 失败 12 | 提示 27` + +⇒ **12 条是 `1d7d31a` 一步引进来的**,不是长期欠账。 + +### 5.2 判据没动过 + +1、`git diff --stat 44d42b0..HEAD -- product-planning/scripts/check_naming.py` → **空**(判据在整个区间零改动) +2、`check_naming.py` 最后一次被改是 `7a476f9`(在 `44d42b0` 之前) + +⇒ 排除「判据变严导致旧账被翻出来」这一解释,**只能是内容变了**。 + +### 5.3 它改了什么(性质像回退) + +以 `stage-requirements/SKILL.md` 为例,`1d7d31a` 做了这些: + +1、把 `## ⭐⭐ ②—③ 交接口(唯一权威处 · 改边界只改这一块 · 2026-10-06 用户定案)` 的「**唯一权威处**」声明连同下面那段说明整段删掉,退回成 `## ⭐⭐ ②—③ 交接口(2026-10-06 用户定案)` +2、删掉「为什么立这一块:停线规则被三段写成三种、②段写成四种……」那段(这段正是「单一可信源」门禁的立法理由) +3、把交接口表的两列内容改回旧的细粒度写法 +4、删掉 `⛔ 交给③段时骨架是冻结的:③段不许新增 / 移动 / 删除板块,缺板块要回②段改` + +⇒ 权威处的声明被削弱之后,复述就重新「合法」地长回来了。修的时候**先恢复权威处声明,再清复述**,顺序反了会反复。