chore(工作区): 插件投放与分库线收口入库(第 35 棒 + 22:44 拍板落盘)

范围 = 本线(插件投放与分库线)产物 + 记忆类,共 27 件:
- 接续入口_插件投放与分库线(1 件):§0 新增 22:44 拍板行;§2 第 36 棒范围改 5 步、条件步转无条件
- 交付物(22 件):MCN 数据面接入阶段一/阶段二系列(含 B 案落地与 shadow 读数)、
  P0 修通与移动端真机验收、pnpm-EPERM、两机 lib 差异、共享层台账语义、
  基础插件身份与回滚、插件接入验收、插件数据面取数口、移动端迁包与字号扩面、跨机错误消息
- 记忆(4 件):2026-09-24 / 2026-09-25 日志、MEMORY.md、本棒 automation 执行记录

⛔ 未含他线在途改动(只报告、不代提交):机制层 CODEBUDDY.md / state.py /
.codebuddy/rules/server-ops.md、接续入口_IM线、接续入口_StoryForge验收线、
其余 29 个 automation 目录、docs/规则与载体/、归档/、接续包_*。
This commit is contained in:
admin committed 2026-09-25 23:06:29 +08:00
1 parent c1461fd958
commit 318430c9e9
27 files changed
+5649 -72

No files matched your search

@@ -0,0 +1,48 @@
# automation `cf072f77-347d-4939-b437-b0f3d1ec363e`(插件投放与分库线 · 第 35 棒 · 执行棒)—— 执行记录
**运行**:2026-09-25 21:47 → 22:5x|会话 `p35-exec-plugin-dataline`|状态:**已置 `PAUSED`**(一次性任务,已消费)
## 一句话结果
①–⑤ 全达成(处方 (a) 落码+单测 66/66 → 出包 `0.5.0` → 上池+发布共享层 → 加列迁移 2 条 `ADD COLUMN` → 回填 `local_id`);**A2(平台取数口面)达成**;🔴 **⑥ 未全绿**(`account_video_source` `shadow match=false`,platform 34 / local 39)⇒ 依执行单 §五 S6/S7 **停住不切档**,**⑦ 整条留给第 36 棒**。
## 关键处置
- **⑦ 未执行**(⛔ 未切任何表、⛔ 未重启 47、⛔ 未触碰 106)⇒ **A5 未达成**、**A2 实例内面未达成**、**A8 如实记「两机不一致」**。
- **两条根因(后棒直接引用,⛔ 不要重新摸底)**:
- **甲** = 本地 `account_video_source` **5 组重复 `aweme_id`**(39 行 = 34 唯一键 + 5;平台主键唯一 ⇒ 必然折叠;读路径恒取 `id` 最大一份 ⇒ 旧副本不可见)。**非数据丢失。**
- **乙** = PG `jsonb` 重排对象键 × `canonicalJsonText()` 保留键序 ⇒ 逐键比对**假阴性**(与序无关比对 ⇒ 34/34 全等)。⚠️ **真缺陷**(该函数供迁移幂等键/`imports.js` 去重/预览判据)⇒ 切档前必修。
- **R10 修复**:实例 home `data-plane.json` 被第 32 棒 root 探针遗留 `root:root` ⇒ 已 chown 回实例 uid。
- **探针坑**:`mksess.cjs` TTL 仅 600 s;`String(obj).length` 恒为 15(假长度读数);node 代码 ⛔ 不内嵌 bash `node -e`。
- **锁机制缺口**:`lock-guard-hook.py` 需 `OWNER` 含 `CODEBUDDY_SESSION_ID` 才认「我的锁」,而 claim 侧取不到 id 时写 `会话:未取到` ⇒ 持合法域锁被拦(fail-closed)。本棒修法 = 把真实 session id 回填进**自有**锁的 OWNER(⛔ 非删锁、非接管)。
## 产出
- 交付件 `交付物/MCN数据面接入-阶段二-B案落地与shadow读数-20260925.md`(368 行;A1–A9 逐条附命令+输出+退出码)
- 入口 `接续入口_插件投放与分库线_20260922.md` §0/§2 |`dsh-server-docs/05-交接单/README.md §一`|当日日志
- 本机证据与探针:`tmp/p35/`(`run-p35.mjs`/`diag-src{,2,3}.mjs`/`remote-0*.sh`/`out/*.out`)—— 47 侧 `/tmp/p35*` **已全删**
## 未闭合 / 待拍板
1. ✅ **已拍板 2026-09-25 22:44 ⇒ A 案**:删本地 5 条旧副本(不可逆 · 已授权)⇒ 转入第 36 棒范围第 ③ 步(先导出留档 → 再删 → 删后本地应 34 行;⛔ 只删行、⛔ 不删库文件)。
2. ✅ **已拍板 22:44 ⇒ B 案**:插件包源码不纳入版本管理,改为定期打包备份 ⇒ **已由第 35 棒会话落地**(固定目录 `E:/dsh-backups/plugin-src/`;基线包 6,065,179 B/330 文件/md5 `247dd145…`;每周 automation `1e3c9070-a75d-4ae4-b81e-06e2eb20a5b4`)。⇒ **不 commit / 不 push 转为长期有效**。
3. 🔴 **仍未闭合**:⑦ 切档 + 47 实例/106 worker 合并重启验收整条未做;106 共享层仍为旧版;`canonicalJsonText()` 键序缺陷待修(第 36 棒 ①)。
## 排棒
本棒 automation **已置 PAUSED**;✅ 已登记下一棒 = automation **`35e1bfbc-d247-4db2-9d90-b0580793736f`**(一次性 · `2026-09-25T23:10` · `cwds = E:/ProgramData/AIProject/aliyun-dsh-server`)⇒ 修 `canonicalJsonText()` 键序 → 出包 `0.5.1` → 上池 → 重取影子读数 →(已拍板则闭环 ⑥ + 执行 ⑦;未拍板则停在 ⑥)。
## 收口(22:38 实测)
`ME="p35-exec-plugin-dataline" bash 07-scripts/handoff-guard.sh --release-exec` ⇒ `RC=0`/`✓ 已释放域锁(p35-exec-plugin-dataline)`;复核 `.locks/p35-exec-plugin-dataline` **已移除**、`.exec-lock` **已移除**、全库 `find -name OWNER` **零命中**;`.locks/` 仅余空容器 `.migrations/`(属常态)。⛔ 未动任何他人锁。
## 22:44 拍板落盘(同一会话续做 · 非新棒)
用户回复「1、A;2、B」⇒ 二次抢锁(3 域:入口/交付物/`.workbuddy`,`rc=0`,OWNER 归属已断言)后落盘:
- **第 36 棒 automation `35e1bfbc-d247-4db2-9d90-b0580793736f` prompt 已更新**:注入两条拍板(① A 案删本地 5 条旧副本;② B 案不纳管 + 备份已落地);原「④ 条件步」**转无条件** ⇒ 收口时 ⑦ 完成则**不登记下一棒**。
- **入口 §0** 新增 22:44 拍板行;**§2** 第 36 棒范围改写为 ①–⑤ 五步(插入「删本地 5 条旧副本」步);硬约束③ 由「待拍板未决」改为「**长期不 commit / 不 push**」。
- **交付件** §〇(结论加拍板说明)/§五(两条标 ✅ 已拍板 + 备份机制取证)/§六(释放实测 + 备份实测)/§七(范围按拍板改写)同步更新。
- **新建每周备份 automation** `1e3c9070-a75d-4ae4-b81e-06e2eb20a5b4`(`FREQ=WEEKLY;BYDAY=SU;BYHOUR=3;BYMINUTE=30` · `cwds` = 本工作区)。
- 当日日志已追加「22:44 … 第 35 棒后续」节(含 **Git Bash `tar` 盘符坑 ⇒ 必须 `--force-local`** 这条新坑)。
- 锁:落盘完成后**再次带会话名释放**(本次 `--claim-exec` 的 OWNER 里 session id 已正确写入,未复现「未取到」)。