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:
commit
ce8e6ceed9
396 files changed
+66045
No files matched your search
@@ -0,0 +1,45 @@
|
||||
起实例(21000)⇒ relay 出现 `21000 -> 38991` ⇒ 门户 303+`dsh-auth` ⇒ 再取 `/` **200 / 62,451 B / text/html**;`stop` ⇒ 端点经 `PORT_DEL` 消失;`32022` 监听 = 0。
|
||||
- **关键缺陷(本轮修)**:`RemoteSpawner` 构造函数**漏赋值 `this.translateEndpoint`** ⇒ 翻译静默失效 ⇒ Manager 拨自己本机 ⇒ **空响应 + 零日志**。定位靠**判别器**(47 临时监听 21000 接住请求)。另修一处**失败开放**(判据由 `reachability.via` 改为 `dsh_hosts.via` 原文)。新增 `test/remote-spawner.test.mjs`(先红后绿,36/36)。
|
||||
- **产出**:交接单新增 **§10.5**(含终验命令级证据 + 分层回滚表 + 残留项);接续入口 §0/§2/§5/两行状态同步(新指纹 `730166813897ab50a6079ab3b3723150`);今日日志追加;MEMORY.md 状态层(净 **−26** 字符)。
|
||||
- **纪律**:未 commit / 未 push;锁已释放;`_tmp_r3/` 已清理;工具调用 **34** 次。
|
||||
- **残留(不阻塞)**:腾讯云安全组 `32022` 放行规则仍在(本机已无监听),改它需要控制台凭据 ⇒ 待用户处理。
|
||||
- **下一棒**:覆盖网络**应用层** —— `覆盖网络_瓶颈落地方案_20260916.md`「只做三件事」之第 1 件 **presence 改造**。⛔ 不要再做 R0–R4。
|
||||
|
||||
## 2026-09-16 22:3x–23:0x(第 3 次执行 · 用户追加「继续执行 下一步工作」)
|
||||
|
||||
- **先纠一条我自己传下去的错误指示**:上一条"下一棒 = presence 改造"**是笔误** —— 取证发现 `src/net/relay/placement.ts` 是**全仓唯一**含 "presence" 字样的文件 ⇒ 仓库里**没有应用层**,"presence 改造"无从下手;且 `覆盖网络_应用场景与待完善清单 §五` 把房间层排在主线**第 7 步**(前置 ②–⑥)。⚠️ **教训:自动化记忆里的"下一棒"会被原样重新注入 ⇒ 写错一次会自我复现**,务必与接续入口校对后再写。
|
||||
- **执行内容** = `会合中继拆分 §9.4` 的缺口 **R5 = 会合可换机**(收掉 R1–R4 隐含前提「Manager 必须与 relay 同机」):Manager 改 `dialer:true` 只拨出、落点搬到**自己本机**预绑池(`127.0.0.1:25000..26099`,64 口);新增 `DIAL/DIAL_ACK` 帧、`StreamPeer` 抽象、relay 侧拨号方白名单(权限只收窄)。
|
||||
- **结果**:单测 **38/38**;E2E 打出 `DIAL manager -> w-106:19000`(控制面)与 **`-> w-106:21000`(实例面)**;**relay 回环端点 `streams=0`**;门户 `303`→cookie→`200 / 62,451 B`。🔴 **换机等价实验**(清 `DSHS_RELAY_STATUS_URL` ⇒ Manager 对 relay 回环口一无所知)**仍全通**,两个回环端点 `streams` **全为 0** ⇒ R5 达成。已铺 47 并对账 29/29 hash 全同。
|
||||
- **新发现两条缺陷(按红线"先报告后动手"⇒ 未修)**:① `src/fs/remote-user-fs.ts:70-73` 地址解析不出时**静默回退本地 agent** ⇒ 重启窗口期 w-106 假 `404 not_found`(判别器 = relay 有无 `DIAL`)② `state.py:39` 把 `.exec-lock`(目录)当文件读 ⇒ **恒报「锁空闲」**。
|
||||
- **产出**:交接单新增 **§11**(命令原文 + 分层回滚 + 残留 + **§11.4 勘误 R4 那条 `not_found` 单因结论**);接续入口 §0/§2/§5 + 状态表刷新(新指纹 `9199dd3f2f71f9fa67aca26739566c2e`);今日日志追加;MEMORY.md 状态层(净 **−96** 字符)。
|
||||
- **纪律**:未 commit / 未 push;锁已释放;`_tmp_r5/` 已清理。
|
||||
- **下一棒(已勘误,务必照此)**:⛔ **不是 presence**。按 `覆盖网络_应用场景与待完善清单 §五` 主线从 **第 ② 项「网抽象 + 地址规划 + 引导(P0-1/2/3)」** 起按序推进(③ 一机一钥 + 信任根 → ④ 443/TCP 兜底 → ⑤ 参数表 → ⑥ 3–5 台最小形态 → 之后才谈内容分发/房间层/游戏)。⛔ 不要再做 R0–R5。
|
||||
|
||||
## 2026-09-16 23:2x–23:5x(第 4 次执行 · 用户「按照你的建议执行」= 采纳上一轮的 A→B)
|
||||
|
||||
- **执行内容 = 我上一轮提出的「A → B」**:A = 修 §11.6 记下**没动手**的两条缺陷;B = 起主线第 ② 项(产出交接单)。
|
||||
- **A1 已修(假 404)**:根因定死 = 文件面 `hostDirectory` 是**惰性 Map**,唯一写入者 `hostsProvider()` 此前**只被 spawner** 调用 ⇒ 重启窗口期 `agentFor('w-106')=undefined` ⇒ 旧代码**静默回退默认机**(`127.0.0.1:19100`)⇒ 假 `404 not_found`。修法 = `ensureHost` **按需补齐**(治本)+新增 `host_unresolved`→**503 且零请求发默认机**(治安全)。**冷启动 E2E 实测:`launch#1 http=200`、relay 有 `DIAL -> w-106:19000`、`not_found`=0**(旧版同一脚本 = 全 404 + 零 DIAL + not_found=3)。先红后绿已实证。回归 **82/81/0**(1 skip 为既有)。
|
||||
- **A2 已修**:`state.py` 改读 `.exec-lock/OWNER`(**目录**,原按文件读 ⇒ 恒报"空闲");持锁时复验正确报占用。
|
||||
- **B 已完成(出单)**:`交接单_网抽象与地址规划R6_20260916.md`(指纹 `744bcc762809d8d45d6cc3d8433f870e`),含已定项 D1–D4 + 3 个可回滚 Step + 8 条命令级验收 + 分层回滚 + **L3 专项前置约束**。
|
||||
- **产出**:R2-R4 单子新增 **§12**(新指纹 `ce5a62fb3dcf0f239cbd61ff21f804e3`,旧值 `9199dd3f…` 作废);接续入口 §0/§2/§5 + 状态表刷新;MEMORY.md 状态层净 **−162** 字符;今日日志追加。
|
||||
- **纪律**:未 commit / 未 push;`_tmp_fix/` 已清理;全局执行锁已释放。
|
||||
- **下一棒(⚠️ 务必照此,别再自我复现笔误)**:唯一执行依据 = **工作区根 `交接单_网抽象与地址规划R6_20260916.md`**(先校指纹 `744bcc76…`)。它把主线 **②**(P0-1 网抽象 / P0-2 引导 / P0-3 名字解析)收敛成 **3 个可回滚 Step,每步做完停一次**。⛔ 不要再做 R0–R5;⛔ **不是 presence**(那是主线第 7 步);⛔ ② 阶段**不引入 L3/虚拟网卡**(见该单 **D1**,含 `100.64.0.0/10` 那条硬约束)。
|
||||
- **待决定(不阻塞,不属下一棒必做)**:`src/supervisor/leased-spawner.ts:149` 同族"静默回退默认机"要不要按 A1 口径收(该单 §12.7 已记)。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-16 23:4x–23:5x · 收尾补完(入口口径同步 + 日志编码修复)
|
||||
|
||||
**补完上一轮漏掉的收尾**:
|
||||
- 入口 `接续入口_覆盖网络线_20260916.md` §2 两处过期声明(第 106 行、第 121–123 行)已改为「已修 + 证据 = R2-R4 单子 §12」;**顶摘第 14 行**同为「未修」已一并改。
|
||||
- R2-R4 单子 §11.6 标题仍写「未修」⇒ 加后缀「✅ 现已修完,见 §12」+标题下插勘误段(保留 R5 当时的记录作存档)。
|
||||
- 🔴 **指纹连带**:改单子正文 ⇒ 指纹 **`ce5a62fb…` → `b110b5c4e3eb8afcac08af537d333c99`**(同步单子第 3 行 + 入口第 156 行)。② 单 `744bcc76…` **未受影响**。全库旧口径关键词扫描 = **0 残留**。
|
||||
|
||||
**🔴 意外发现并已修(本条链自己造成的)**:`2026-09-16.md` **开头有 2 个非法 UTF-8 字节**(`b5 84`)⇒ **触发自动编码检测走偏为 GBK** ⇒ 用 Read 工具读该日志**全文乱码**(实测「浠d环」= "代价")。全文件仅此 2 字节非法(其余 212,337 字节合法)。已排除 `fix_log.py`(纯 `rb`/`wb` 字节级搬移,不可能新增字节)⇒ 坏字节来自更早的写日志动作,**根因未定位**。**已修** = 备份(→ `.backup-20260916/2026-09-16.md.before-encoding-fix`)后删这 2 字节,现为纯合法 UTF-8(修后 Read 已正常)。⚠️ **日志开头第一条记录不完整**(以"产 1("这样的中段开头)—— 原头部内容丢失,无法恢复(无更早备份)。
|
||||
|
||||
**防线**:日志/笔记追加一律 Python `open(...,'ab')` 写字节,⛔ 不用 `cat >>`;写完跑一次"严格 UTF-8 合法"校验(`b.decode('utf-8')` 不抛异常)。
|
||||
|
||||
**⚠️ 另发现 1 处同类(非本链产物,按 R7 只报告、未动手)**:`automations/218e5b11-a16c-445b-b32a-fa5939d14395/memory.md` 第 1032/1033 字节处同样有 2 个非法 UTF-8 字节。全 memory 目录扫描 38 个 `.md` ⇒ 仅此 1 个待处。
|
||||
|
||||
**纪律**:未 commit / 未 push;全局执行锁已释放。
|
||||
Reference in new issue
Block a user