docs(dsh-server-docs): mksess 口径校正(DB 直插→PG 直插)+ 技能 dsh-auto-handoff-chain 三处同步建立(序⑰ S1/S2)

- 02-运维手册.md:mksess 命中处补「PG 直插 + 连接串来源」+ D1 勘误指针两行(档案 77 的旧形态说明,正文不改)
- skills/dsh-change-workflow/SKILL.md(146/395/495 三行)、skills/dsh-env-bootstrap/references/常驻规则-快照.md(55 行):同口径校正
- skills/dsh-auto-handoff-chain/:新建文档库副本(SKILL.md v1.3.2 + scripts/chain_report.py),此前该技能三处同步从未建立
- README.md / INDEX.md:登记该技能(技能表 + 「什么时候查什么」+ 技能清单表)

判据:E1 = 0 行、E2 两副本 md5 全同、E3 diff -r = 0 行、E4 登记命中 README 1 / INDEX 2、镜像 47 同值
This commit is contained in:
admin committed 2026-09-17 17:03:34 +08:00
1 parent 146c3d25ef
commit bc0dd2c96d
10 files changed
+551 -9

No files matched your search

@@ -72,6 +72,35 @@ python3 scripts/docs-consistency.py # 事实:写死取值 + 跨页取值冲
- 判据 = 「**承诺现行**的文件不许含已废止/写死/矛盾的取值」;
**历史豁免**:`04-调整方案/**`、`archive/**`、`01-规划与架构`、`02-运维手册`。
**建议补跑(不在四件套内,但会毁可读性)—— 编码合法性**
```python
for p in all_md: # 用 open(p,'rb').read().decode('utf-8') 整块判,别逐字节
try: open(p,'rb').read().decode('utf-8')
except UnicodeDecodeError as e: print(p, e.start)
```
🔴 **只有几个非法字节也会毁掉整份文件**:自动编码检测判"不是 UTF-8"⇒ 走偏为 GBK ⇒ **整份读出来全乱码**。
(2026-09-16 实测:212 KB 的日志因**开头 2 字节**坏 ⇒ `Read` 全文乱码。处置见 `PLAYBOOK §10.1`。)
---
### 3.1 交接单的「口径指纹」—— 改正文必连带(2026-09-16 实测)
| 项 | 内容 |
|---|---|
| 算法 | `tail -n +4 <单子>.md \| md5sum`(**跳过前 3 行**:标题 / 空行 / 指纹行) |
| 含义 | 前 3 行**不参与** ⇒ 改指纹行本身不破指纹;改**正文任何一字** ⇒ 指纹必变 |
| 引用点 | ① 单子第 3 行 ② 接续包/入口里对它的引用 ③ 记忆(`MEMORY.md` / 日志)里记的值 |
🔴 **改完单子正文的正确收尾顺序**:改正文 → **复算指纹** → 写回第 3 行 → 用脚本**全文 `replace`** 所有引用点(⛔ 别手改)→ 复算自证「实算值 == 三处登记值」。
⚠️ **一次要改多处正文时,先全改完再算一次**(实测改两轮 ⇒ 指纹算三轮 ⇒ 白绕 2 轮工具调用)。
**⛔ 最容易漏的不是单子,而是"单子之外"的过期口径**(本轮真漏过一次):
```bash
grep -rn '<旧口径关键词>' --include='*.md' . # 例:未修 / 待专门一轮 / 已定位、未修
```
- **文件顶部 `>` 摘要块最容易残留** —— 下一棒第一眼读的就是它。
- 单子的**历史章节**(如"§11.6 当时未修")**保留原文 + 加勘误段/标题后缀**,别删 —— 历史可追溯,且不会误导跳读者。
---
## 4. 漂移处理 SOP(发现 → 收敛,五步)