# 交接单 · 五条工作线入口副本漂移的核正(2026-09-27) > 交接载体:接手方**不需要读本棒上下文**即可直接执行。 > 来源会话:`session-8757908d`(本机 DSH 会话)|结束原因:可自决部分做完,余项等用户 > 落点:`E:\ProgramData\AIProject\ai1net-dsh-server\docs\交接单\` --- ## §1 目标 核正「本工作区 `ai1net-dsh-server` 持有五条工作线入口的**过期副本**」这一系统性缺陷,使任何会话都不会再按过期副本的口令去开工。 ## §2 只读前置(接手前先跑,全部只读) ```powershell # ① 两处工作区的同名入口逐对比大小与时间 $a='E:\ProgramData\AIProject\ai1net-dsh-server'; $b='E:\ProgramData\AIProject\aliyun-dsh-server' Get-ChildItem $a -File -Filter '接续入口_*.md' | ForEach-Object { $g=Join-Path $b $_.Name '{0,-40} 本 {1,9:N0} {2} 远 {3,9:N0} {4}' -f $_.Name,$_.Length,$_.LastWriteTime.ToString('MM-dd HH:mm'), (Get-Item $g).Length,(Get-Item $g).LastWriteTime.ToString('MM-dd HH:mm') } ``` **期望**:五份本工作区副本**均带 `本副本已停更` 告示**(在文件头 900 字符内);真源文件均更大、更新。 ## §3 范围 - **动了**:本工作区 5 份 `接续入口_*.md` 的**文件头**(各加一条指针告示,共 +431 ~ +632 B)。 - **⛔ 没动**:真源(`aliyun-dsh-server` 侧 5 份)一字未动;本工作区副本的**正文一字未删**(已逐份哈希断言)。 - **⛔ 没做**:不删副本、不移位置、不改判据与结论、不进入任何执行棒。 ## §4 决策点(本棒已自决,可推翻) - **D-1 处置方式选「标注」而非「同步」或「删除」**。 - 我选了什么:只在过期副本头部加指针告示。 - 为什么:① 工作区规则禁整文件覆盖,同步 = 一次 1 MB 级覆盖;② 删除不可逆,且该库明令「不许移走白名单内的东西」;③ 标注**失败代价对称**,最坏情况是文件头多四行。 - 可推翻点:若确认这些副本**不该存在**,则应改为归档(该库二值决策:归档 or 删除),⛔ 不新建中间态目录。 ## §5 步骤(接手方照做) 1. 跑 §2 的只读前置,确认五份都有告示。 2. 若发现**新出现**的漂移(本工作区副本反而更新),先判定哪边是活的那份,**⛔ 不要按文件名猜**;判据 = 「该入口 §0 的『最新一行 = 执行依据』所指的棒号与日期」。 3. 需要动文件 ⇒ 先按本库规则抢锁:`bash $DOC\07-scripts/handoff-guard.sh --claim-exec "<会话名>"`。 ⚠️ **抢锁必须校验退出码,⛔ 别接管道**(`| Select-Object` / `| grep` 都会吃掉退出码;本棒自己踩过一次,看到 `rc=-1` 而锁其实抢到了)。 4. 抢不到 ⇒ **停手报告**,⛔ 不删锁、不接管。 5. 完工反序释放:`--release-exec "<会话名>"`。 ## §6 验收(可复跑的机器判据) ```powershell # 判据 1:5 份副本全部带告示 (Get-ChildItem 'E:\ProgramData\AIProject\ai1net-dsh-server' -File -Filter '接续入口_*.md' | Where-Object { (Get-Content $_.FullName -TotalCount 3 -Encoding UTF8) -match '本副本已停更' }).Count # 期望 = 5 # 判据 2:本工作区副本正文未损(标题行仍在) Get-ChildItem 'E:\ProgramData\AIProject\ai1net-dsh-server' -File -Filter '接续入口_*.md' | ForEach-Object { '{0,-40} {1}' -f $_.Name, [bool]([System.IO.File]::ReadAllLines($_.FullName,[Text.Encoding]::UTF8) -match '^# 接续入口') } # 期望 = 5 行全 True ``` **本棒实测读数(2026-09-27 10:3x,主会话自跑)**: | 项 | 读数 | |---|---| | 新建告示 | **4** 份(插件投放与分库线第 1 轮已有) | | 每份「原文逐字未变」哈希断言 | **5/5 全部 True** | | 增量体积 | +431 B(覆盖网络线)· +493 B(技能重组线)· +593 B(IM线)· +632 B(StoryForge验收线)· +548 B(插件投放与分库线,第 1 轮) | | 真源未改动 | 5/5(只读打开) | | 锁 | 抢 `rc=0` → 释放 `rc=0` | ## §7 回滚 每份副本的原件备份在**同目录**,命名 `接续入口_<线名>_<日期>.md.bak-20260927-103210` … `-103xxx`(按修改时间取最新一组)。 回滚 = 用对应 `.bak-*` 覆盖回原文件,然后复跑 §6 判据 1(期望变回 **0**)。 ## §8 回报格式 ``` ① 判据 1 读数 = __ / 5 ② 判据 2 读数 = __ 行全 True ③ 新发现的漂移 = (无 / 逐条列出「线名 + 本副本读数 + 真源读数 + 判定哪边是活的」) ④ 本棒是否动了真源 = (否 / 是 + 文件 + 原因) ⑤ 锁状态 = (已释放 / 仍在谁手上 + 原因 + 下一步) ```