chore(工作区): 纳入版本控制基线(回收 411 MB 过程产物)

回收 411 MB(470 M → 58.8 M),全部经回收站,可恢复:
- 待清理/(146.2 M,含 relay 分片 128 M 与 42 项过程目录)
- tmp/(32.4 M,按接续棒命名的过程临时区)
- .workbuddy/tmp/(39.5 M)
- 4 份 workbuddy.db 冗余副本(101 M,09-23 事故的坏副本 / 抢救产物)
- tmp/im16/gw/centrifugo 二进制(63.9 M,可重下)+ 缓存残留

入库范围:常驻规则(CODEBUDDY.md / README.md / state.py)、在途接续入口与
接续包、docs/、交付物/、交接单/、归档/、scripts/、.codebuddy/、
.workbuddy/memory/;共 398 件,其中 >60 KB 的 26 件全为文档。

排除(.gitignore):tmp/、待清理/、运行态日志与缓存、*.db 与 DB 备份整目录、
打包二进制(*.tar.gz / *.tgz)、记忆修复前备份。
This commit is contained in:
admin committed 2026-09-24 07:51:03 +08:00
commit ce8e6ceed9
396 files changed
+66045

No files matched your search

@@ -0,0 +1,42 @@
# 覆盖网络线 · 序 ⑬ 执行棒(automation `a513b25c`)— 运行记忆
> 用途:下一棒开工前扫一眼,确认本棒没有遗留「未落盘的状态 / 未告知的拍板」。
> ⛔ 只记高层结论与指针,不复制正文。
---
## 2026-09-17 15:2x–15:5x · 第 1 次运行 —— ✅ 全部完成(收官)
**任务**:序 ⑬「在册小缺陷清算 `Q1 → Q2 → Q3`」**执行棒**,按入口 §2 + `交接单_观测口径与在册缺陷_20260917.md` §5.9 表 / §8.8-3 开工。
**结果**:`Q1 ✅ 已修并验收` / `Q2 🔴 未达成(**真因换人**:新发现数据面缺陷)` / `Q3 ✅ 达成(探针 **12/12 PASS · rc=0**)`;收口 5 件全办、**零上抛**、`src/` 与参数表**零改动**、零 commit / push。
**核心成果(一句话)**:`mksess` 修好(改插 PG)+ 探针首次 **12/12**;但 **Q2 的真因不是单内记的 `landModels → writeHomeFile`,而是「relay 流上的 HTTP keep-alive 复用」** —— 同一条连接上的**第 2 条** agent 请求必回 `400 clientError`,机制 = **worker 侧把 agent 自己的上一份响应回灌给 agent**。
**关键指针**:
- Q1 产物 = 47 上 `/opt/dshs/mksess.cjs`(**`a97c0f214650fbc552c07d804fd153be`**)+ `mksess-guest.cjs`(**`af6eab38c4ff5c365ee17e29d7b98a31`**,薄封装);原件 `.bak-seq13-20260917-152653`;本地副本 `_中间产物_待清理/seq13/`。
- Q2 证据 = 交接单 **§9.3**(含 **1 条命令的最小复现**:对 47 的拨号池口 `127.0.0.1:25000` 用**同一条连接**连发两条 `/fs/isdir` ⇒ 200 然后 400)。
- Q3 证据 = 交接单 **§9.4**;探针 `PASS OBS-09 本机:20000=401 w-106:42461=401`、`PASS OBS-11 …实际 77 多出 0 缺失 0`。
- 事件 = 交接单 **§9**(9.1–9.7 全节);原始取证 = `_中间产物_待清理/seq13/` + 各机 `/tmp`(106 `cap.pcap`、47 `st2.txt`)。
**🔴 本棒留给下一棒的两条硬事实**:
1. **guest(w-106)实例是"出格拉起"的** —— 因 Q2 堵住 `enter`,改由 **106 的 worker agent `POST /launch`**(`uid=100002`)拉起,**未经 Manager 租约**;Manager 的 reaper 一旦回收它 ⇒ `OBS-09` 对端腿回 `000`(**环境态非缺陷**)。要回到"无实例态":停 106 的 `dsh-100002-*.scope` + 停 w-47 上 admin 那个实例。
2. **文档库・技能里对 `mksess.cjs` 的描述("DB 直插")仍是旧口径** —— 本棒只改 47 上的脚本(R7)。需同步时另起一小棒。
**下一棒登记**:automation id **`3e0a7b01-9257-4b76-b82f-4998c9f7eab0`**「覆盖网络线-序14执行棒-relay流keep-alive复用缺陷修复」(一次性,`scheduledAt` = 2026-09-17 **15:53** = 收口 +3 min,`nextRunAt` = 1789631580000)。已用陈述句告知用户并落盘到入口 §0/§2 与 `MEMORY.md` 在途单。
**边界遵守**:⛔ 未 commit / 未 push(`git status` = 43、`src/` = 20 **均为既有基线**,Δ0)|⛔ 未改任何生产值(参数表指纹仍 `8f08e74b…`;`RELAY_FAILOVER_*`/`HB_SEC`/burst 一字未动)|⛔ 未把 `COOLDOWN_MS=0` 写入任何路径|⛔ Q4(`src/net/relay/**` untracked,卡提交授权)与 Q5(`.bak-seq7-*`)**只报告**|临时会话用完即删(`DELETE 2` ⇒ `sessions` 回基线 2)。
**收口清单核对**:① 释放锁 ✅ ② 陈述句告知 + 登记下一棒 ✅ ③ 入口 §0 + §2 推进到序 ⑭ ✅ ④ 工作区日志 `.workbuddy/memory/2026-09-17.md` ✅ ⑤ 交接单 §9 回填 ✅ ⑥ 本文件 ✅。
---
## 运行须知(给后续复跑的同类棒)
- 本 automation **是一次性的**,已执行完毕 ⇒ ⛔ 不要重启它;若需再跑,另建新棒。
- 开工前先跑 `state.py` + 扫最新两条 automation memory(防漏掉别人留下的拍板)。
- 🔴 **`mksess*.cjs` 修好后仍要 `DELETE FROM sessions WHERE user_agent='poc-curl2'`**(清理口径不变);PG 连接串走 `DSHS_DB_URL` env → `/etc/dshs.env` → `dshs.service.d/*.conf`(⛔ 别把凭据写回脚本)。
- 🔴 **探针必须带参数表**:`node scripts/overlay-probe.cjs --table "<工作区根>/参数表_覆盖网络_20260917.md"` —— 不带会因为参数表不在代码仓根而报「找到 0 个参数表」。
- 🔴 **400 `{"error":"Bad Request","message":"Client Error","statusCode":400}` 这个 body 的出处 = Fastify 的 `clientError` 兜底(`fastify.js:985`),它写裸 socket、不写 pino 日志** ⇒ 凡是"日志里什么都没有但调用方拿到 400"的现象,先怀疑"对端 HTTP 解析器收到非法字节流",别去翻业务路由。
- 🔴 **同一条 TCP 连接的第 2 条请求才出错** ⇒ 排查这类问题要**显式复用连接**(`curl` 一次给两个 URL),单发一次永远看不到。
- 🔴 **判定"400 是谁返回的"先穷举本机监听口**(`for p in …; do curl …; done`)—— 比读代码猜快一个数量级;本次正是靠"3080→404 / 20080→纯文本 / 19100→401 / 25000→200"把范围钉死的。