diff --git a/.workbuddy/memory/automations/35e1bfbc-d247-4db2-9d90-b0580793736f/memory.md b/.workbuddy/memory/automations/35e1bfbc-d247-4db2-9d90-b0580793736f/memory.md index b888ea6..e2ab6ed 100644 --- a/.workbuddy/memory/automations/35e1bfbc-d247-4db2-9d90-b0580793736f/memory.md +++ b/.workbuddy/memory/automations/35e1bfbc-d247-4db2-9d90-b0580793736f/memory.md @@ -49,4 +49,36 @@ 3. **响应是 gzip** —— 不加 `--compressed` 时 `grep` 只报 `Binary file matches`、"看起来没输出" ⇒ 取 JSON 一律 `--compressed`。 4. **端口口径**:平台 Web = `127.0.0.1:3080`;`20001` = **该用户实例**;`18081` = centrifugo;`25022–25063` = relay dial pool ⇒ ⛔ 别把实例端口当平台端口。 +## 规划棒(2026-09-26 06:29–06:5x · 会话 `p36c-platform-versioning`) + +用户:「**你就是平台线,看看如何修复(还有 worker 如何更新包,是不是应该有个机制,现在的网络结构各种节点和设备,如何进行版本管理和包更新机制)**」 + +- **只读取证 + 出方案,⛔ 未改 `src/**` 一行**;产出 `$WS/交付物/版本管理与包更新机制-现状与方案-20260926.md`(**=下一棒唯一执行单**)。 +- **结论**:机制骨架**齐全**(worker 启动即拉+定时轮询、`POST /shared-layer/pull`、`.manifest.json` 权威清单、`.node-sync-reports.json` 对账快照)⇒ ⛔ 不是"没有机制"。 +- **根因 D1**:`src/worker/agent.ts:376` 的 `20 s` 超时常量被**对账面 `:426` 与下载面 `:508` 共用** ⇒ 2.0 MB 包跨云拉不完。另 7 条 D2–D8(无退避/失败历史只剩最新/版本只留一份/无 channel/**设备不在分发链上**/无全局矩阵视图/台账状态失真)。 +- **方案三层**:层 A 止血 / 层 B 版本管理机制 / 层 C 跨区拓扑。⛔ 撞 1 项待拍板 ⇒ **未登记下一棒**。 + +## 拍板落地棒(2026-09-26 06:36–06:5x · 会话 `p36d-platform-versioning`) + +用户拍板原话:「**C 方案,然后B,这次就用版本更新机制去更新网络上各节点,子节点和设备**」 + +| 项 | 结果 | +|---|---| +| 口径 | 用户说的 **C 案** = 层 A + 层 B-1~B-4(版本目录化/channel/定向钉版/**设备纳入**);随后 **B 案** = 层 B-5(全局矩阵视图);**层 C 本次不做**;**收尾真跑分发到 47 本机 worker + 106 + 设备**;**执行棒第一件事 = 取证设备侧载体**(D6) | +| 落盘 5 处 | 本件 §5(改「已拍板」)+ **§8 执行棒细化**(S1 止血→S2 完整版本管理→S3 全局矩阵视图→S4 真跑分发)/入口 §0 拍板行 + §2 续作二·三注/`05-交接单/README.md §一` 第 44 行/当日日志 | +| 🔴 **事故(已自愈 · 无损)** | `patch-c3.py` 复合式 `open(P,"wb").write(b"\n".join(parts))` —— Python **先求值 `open()`(立即截断)→ 再求值 `join()`** ⇒ join 抛 `TypeError` 时**入口已被清 0 字节**(只看 traceback 会误判"没写进去")。发现 = `wc -c` = `0`;复原 = `git checkout --`,`git hash-object` == `git rev-parse HEAD:` = `1d44073b…` **逐字节一致**(341,330 B / 968 行,HEAD 含 06:29 行、对账 `0 0`)⇒ **零丢失** | +| 🔴 **新增铁律** | 改共享文件**只准** ① Edit 精确片段替换 或 ② **先算全量 bytes 再一次性写**;⛔ **禁用 `open(...,"wb").write(表达式)` 复合式**(同源风险 = 任何"先 open 再算内容"的写法) | +| 提交/推送 | `2a1226c` → `90acb1c`,两次均 push(`a38d8b6..2a1226c` / `2a1226c..90acb1c`),对账 **`0 0`**、`HEAD == origin/master` ✅ | +| 仅 3 件入库 | 本件 + 本线入口 + 本日志;自查**无** `tmp/`/中间产物/`05-交接单`;⛔ 未 `git add -A`、⛔ 未代提交他线(`CODEBUDDY.md`/`state.py`/`MEMORY.md`/他线入口 全部未纳入) | +| 文档库侧 | 唯一改动 = `05-交接单/README.md §一` 46→62575 B;`git check-ignore -v` ⇒ `.gitignore:45` 整目录忽略、未跟踪 ⇒ **按既有口径不入库**(⛔ 未 `-f`)。`docs-sync-check.sh` = ❌(一致 268/不一致 **21**/仅本地 **4**/仅服务器 0),差异面**全为他线在途**(`07-scripts/*`·`08-skills/*`·`CODEBUDDY.md`·`01-规范/09`·`02-架构设计/*`·`04-调整方案/*`·`05-交接单/*`)⇒ **非本线引入、交文档库同步线处置** | +| automation | 本 automation `35e1bfbc` = **`PAUSED`** ✅;✅ **已登记执行棒 `da73ab87-fb2f-47f0-a8d8-8ea3ad35eb19`**(一次性 · `2026-09-26T06:52` = 收口 06:44 + 8 min,落在 5~8 min 窗口内)= **`ACTIVE`** | +| 锁 | 域锁 `p36d-platform-versioning` **反序释放**:`--release-publish` ⇒ `✓ 已释放发布锁(归属已核)` rc=0 → `ME="p36d-platform-versioning" --release-exec` ⇒ `✓ 已释放域锁` rc=0。⚠️ 提醒「另有 1 把锁属**他人**(`im-reverse-channel`),按 R9 未动」 | + +### 下一棒(`da73ab87`)必须知道 +- **唯一执行单** = `$WS/交付物/版本管理与包更新机制-现状与方案-20260926.md`(§6 八段 + **§8 细化**)⇒ ⛔ 别按入口 §2 下方「第 36 棒」旧范围开工。 +- **第一件事 = 取证设备(桌面端)侧载体**(有 ⇒ 按同一对账协议接入;没有 ⇒ 具名报告缺口 + 最小接入方案,⛔ 不硬造)。 +- **S1 完成判据** = `w-106` 对账快照 `stale` 不含 `dsh-plugin-mcn-suite`、`failed` 为空。 +- ⛔ **别用 `open(...,"wb").write(表达式)` 复合式改共享文件**(本轮已实测吃掉一整份入口)。 + +