docs(平台线): 版本管理与包更新机制 拍板落地(C案→B案 · 执行棒登记)

用户拍板(2026-09-26 06:36 原话):
  「C 方案,然后B,这次就用版本更新机制去更新网络上各节点,子节点和设备」

口径(唯一执行单 = 交付物/版本管理与包更新机制-现状与方案-20260926.md)
- 用户说的 C 案 = 层 A(止血)+ 层 B-1~B-4(版本目录化 / channel 灰度 / 定向钉版 / 设备纳入)
- 随后做的 B 案 = 层 B-5(全局版本矩阵视图)
- 层 C 跨区拓扑本次不做(属覆盖网络线),但实现须兼容其口径
- 收尾必须真跑一次分发到 47 本机 worker + 106 子节点 + 设备
- 执行棒第一件事 = 取证设备(桌面端)侧载体(承缺陷 D6)

本棒产出
- 交接单 §5 改为「已拍板」+ 新增 §8 执行棒细化(S1 止血 → S2 完整版本管理 → S3 全局矩阵视图 → S4 真跑分发)
- 入口 §0 落 06:36 拍板行 + §2 落续作二/续作三注
- 05-交接单/README.md §一 第 44 行追加拍板(该目录 gitignore → 不入库,按既有口径)
- 执行棒 automation da73ab87-fb2f-47f0-a8d8-8ea3ad35eb19(一次性 · 2026-09-26T06:52)

事故与判据(已自愈 · 无损)
- tmp/p36/patch-c3.py 复合式 open(P,"wb").write(join(...)) —— Python 先求值 open() 即截断,
  join() 再抛 TypeError ⇒ 入口被清成 0 字节;已 git checkout -- 复原(341,330 B / 968 行,
  sha 1d44073b… 与 HEAD 逐字节一致),随后改用 Edit 精确片段替换补写
- 新增铁律:改共享文件只准 Edit 片段替换,或「先算全量 bytes 再一次性写」;
  禁用 open(...,"wb").write(表达式) 复合式

边界
- 未改 D:/github/dsh_shenxian/src/** 一行(只读取证)
- 未 ssh 真机做任何变更;未碰他线在途改动(CODEBUDDY.md / state.py / MEMORY.md 等)
This commit is contained in:
admin committed 2026-09-26 06:45:59 +08:00
1 parent a38d8b674d
commit 2a1226ca13
3 files changed
+94 -1

No files matched your search

@@ -102,7 +102,16 @@
## 5 决策点(**待拍板 = 1 项**)
**要用户定的是**:106 拉包超时要修到什么程度 —— 只把超时调大让它能拉完,还是顺手把"版本管理"补成可灰度可回滚的机制?
**🔴 已拍板(2026-09-26 06:36 · 用户本人原话)**:「**C 方案,然后B,这次就用版本更新机制去更新网络上各节点,子节点和设备**」。
**口径对齐(⛔ 执行棒务必按本行理解,勿被 §2 的层名混淆)**:
- 用户说的 **C 案** = 本文 **层 A(止血)+ 层 B-1~B-4**(版本目录化/channel 灰度/定向钉版/**设备纳入**)——「完整版本管理」。
- 用户说的 **B 案(随后做)** = 本文 **层 B-5**(全局版本矩阵视图)。
- **层 C(跨区拓扑)本次 ⛔ 不实施**(属覆盖网络线架构层);但实现须与其口径兼容:每区 Manager 各持内容源、节点只向本区拉、同版本号须字节一致。
- **收尾必须用这套机制真跑一次分发**:`[email protected]`(含以后版本)→ **47 本机 worker + 106 子节点 + 设备(桌面端)**,并读数验证。
- ✅ **执行棒已登记** = automation `da73ab87-fb2f-47f0-a8d8-8ea3ad35eb19`(一次性 · 2026-09-26T06:52)。
**原三选项(存档)**:
- **A 案(只修超时,层 A)**:优点 = 改动小(两处常量 + 一个重试)、当天可验、106 立刻能拿到修复;缺点 = 版本管理仍是"最新一份",下次要灰度/回滚还得再做一轮。
- **B 案(层 A + 层 B)**:优点 = 一次把"节点与设备的版本管理与更新机制"补齐(含全局矩阵视图);缺点 = 要动 manifest 结构与装配口径,回归面更大,且要新增概念(channel),周期长。
@@ -123,3 +132,30 @@
## 7 本轮已改文件(⛔ 仅本工作区产物,未碰 `src/**`)
- 本文件(新建)|入口 §0/§2 + `$DOC/05-交接单/README.md §一` + 当日日志(收口行)
---
## 8 执行棒细化(拍板后新增 · 2026-09-26 06:36)
### 8.1 子阶段顺序(⛔ 不许跳、不许换序)
| 子阶段 | 内容 | 完成判据 |
|---|---|---|
| **S1 · 止血** | 层 A-1~A-4(拆超时 20 s↔300 s/按大小动态/重试退避 2s·8s/失败留痕) | 106 对账快照 `stale` 不含 `dsh-plugin-mcn-suite`、`failed` 为空 |
| **S2 · 完整版本管理** | 层 B-1 版本目录化 + B-2 channel(stable/canary)+ B-3 定向钉版 + **B-4 设备纳入** | 能"只让某节点/设备升到指定版本"、可回滚到任意历史版;**设备侧真跑通一次拉取** |
| **S3 · 全局矩阵视图** | 层 B-5 `GET /api/plugins/shared/status` | 一屏返回「每 flat × 每 host/设备」的版本、指纹、漂移、最近成功时间 |
| **S4 · 真跑分发**(收尾必做) | 用 S1–S3 落成的机制把 `0.5.1` 分发到 **w-47 + w-106 + 设备** | 三处读数一致;`w-106` 快照 `stale/failed` 清空 |
### 8.2 未知项与处置(⛔ 不许"假装知道")
1. **设备(桌面端)侧载体未取证**(承 D6)⇒ **开工第一件事就是取证**:桌面端有没有「包/插件目录 + 拉取入口」、凭据走哪条(序46/47 的设备 grant?)。**有 ⇒ 按同一对账协议接入;没有 ⇒ 具名报告缺口 + 给最小接入方案,⛔ 不硬造。**
2. **`manifest` 是共享层旁的旁挂状态文件** ⇒ 改其结构须**向后兼容**(老节点读新 manifest 不能崩)。
3. **`src/worker` 属机制层** ⇒ 域锁必须**独占**(开工前确认无其他会话在跑)。
### 8.3 必须遵守的既有纪律
- 新增能力 ⇒ **纯插入**;修 bug ⇒ 可改既有逻辑但**须回归用例 + 新行为可观测 + 阈值可注入**(超时/重试次数一律走 env,⛔ 不写死)。
- 测试跑 `lib/` ⇒ **改完必 `build`**(否则新旧产物混跑,症状像"注入无效")。
- ⛔ 不改 `07-scripts/`;⛔ 不动 `config`/`crypto`/`isolation`/`index` 等机制层其他文件(只碰必需者且先报告)。
- 生产变更(`restart dshs-worker` / 47)可直接做,**动手前一句话说明**;不可逆操作先报清单。