chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)

- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
This commit is contained in:
admin committed 2026-10-10 23:13:22 +08:00
1 parent 30b46dbd0c
commit c1b5e4d966
735 files changed
+153192 -2415

No files matched your search

@@ -0,0 +1,104 @@
# 心跳核对(第三轮)· N9 复测棒已在跑 · 2026-09-29 22:49
> 触发:监督程序心跳「需求仍未完成(持续 30 分钟)」。
> 目标:手机查看并可回复桌面 WorkBuddy 中会话。
> 本轮结论:**该谁动 = 已经在动。不派新棒、不需要用户拍板。**
---
## §0 结论速览
| 问 | 答 |
|---|---|
| 任务图还剩什么 | **N9**(running,复测棒在跑)+ **N10**(pending,`deps=[N8,N9]` 挡住) |
| 卡住了吗 | 上游已通;**垫片 20090 此刻 502**(复测棒第①步的射程内,非新卡点) |
| 该派谁 | **不派** —— 唯一两个后继(N9 复测 / 垫片常驻化)都在跑或已排期 |
| 需要用户吗 | **不需要**(真账号验收那条是「待触发」,现在不用动) |
---
## §1 机器读数(本轮实测,2026-09-29 22:48–22:49)
| 层 | 读数 | 判 |
|---|---|---|
| N9 复测棒会话 | `e17c96e0`,`status=working`,`updated_at` 22:48:49 | ✅ 在跑 |
| 它持的锁 | `[协作]N9复测-2248`,域 `ai1net-dsh-anywhere`,22:48:13 | ✅ 已开工 |
| 任务图上报 | 22:48:20 `N9: blocked → running` by `[协作]N9复测-2248` | ✅ 已接管 |
| 设备侧守护 | node pid **50024** 存活;`overlay-daemon.log` 末行 22:26:58 `UP -- registered … accepted=[20090]` | ✅ 在服役 |
| relay 客户端 | `state=up(for 1288810ms)` ≈ 21.5 min 连续、`reconnects=0`、`rtt=434ms` | ✅ 链路活 |
| 🔴 **relay 转发量** | `streams=0` / `in=0B` / `out=0B` | ⚠️ **至今零请求被转发** |
| 47 relay `/status`(权威) | `u:bdf89014-…` 的 `sessions` 含 `d-bdf89014-…-626dc095`;`dialers: []`;capacity 7515/used 3 | ✅ 注册在册 |
| **垫片 20090** | `health=**502**`、无 LISTENING、`electron.exe` **0 个** | 🔴 **不在** |
| 队列 | `head=null` · `pending=0` · `gate=free` · `blocked={N9, N9-持续性, N10}` | ✅ 与事实一致 |
---
## §2 本轮唯一新发现:**relay 的「在线」≠ 端到端可用**(登记为 M8)
上面两行并排看就是病根:
```
47 relay /status → sessions: [d-…-626dc095] ← 说「在线」
本机 20090 → health=502 / 无监听 / 0 进程 ← 实际「背后没人」
```
**机制**:relay 判 worker 在线,只认「有没有客户端注册上来」(注册时自报 `accepted=[20090]`),**从不校验 `20090` 背后是否真有进程在听**。注册成功那一刻就把端口记进路由表,此后**不再复核**。
**后果(今天已复发 3 次)**:
- ④闸的 `503 device-unreachable` 与「relay 说 online」可以**同时为真**;
- 任何只看 relay `/status` 就断定「上游已恢复」的判断都会**假绿**(上一轮我自己也差点这么判);
- 唯一可靠判据是**两个都读**:relay 注册态 **+** 本机 20090 健康态。
⇒ **已把这条写进本轮 `blocked.json` 的 N9 条目**,防下一棒只读 relay 就往下走。
---
## §3 为什么本轮**不派**(三条硬理由)
1. **唯一后继正在跑** —— N9 本体读数必须由复测棒自己出(它 22:48:20 已接管 N9);我另起一棒=制造两个工人抢同一个靶子会话,必出假读数。
2. **会撞锁** —— 相关域 `ai1net-dsh-anywhere`(N9 复测)与 `ai1net-dsh-desktop`(垫片常驻化)都已被持/已排期,硬派即撞。
3. **抢跑会取到假 502** —— 复测棒第①步就要(按协议)把垫片拉起来;此刻它正在做这件事,我在旁边复测只会读到它拉起来之前的 502。
**兜底**:N9 复测棒若收口时仍未出本体读数 ⇒ **下一轮心跳我直接派接续棒**(同线、接它留下的缺口),不需要用户介入。
---
## §4 在排的两棒(都不是本轮派的,本轮只核对)
| 棒 | id | 线 / 排期 | 硬判据 |
|---|---|---|---|
| N9 复测 | `b8335866` | `ai1net-dsh-anywhere` / **22:48(已在跑)** | ④闸 200 + V2 消息真落进桌面会话;单独点名 `streams` 是否由 0 变正 |
| 垫片常驻化 | `d27d2210` | `ai1net-dsh-desktop` / **23:12** | **本会话收口后 20090 仍 200**(自己活着时测不出来 ⇒ 必须交下一棒验) |
两棒域不重叠,可并行;23:12 那棒内置冲突闸:若 20090 被别棒占着就避让并自接(+6 min)。
---
## §5 用户介入档
| 档 | 内容 |
|---|---|
| **① 现在** | **无**。全程走测试身份(`E:\dsh-worker-dev`,凭据有效至 **09-30 11:06**),AI 可自办 |
| **② 待触发** | 真账号验收需「用户身份」设备在线,其凭据 **09-28 20:35 已过期 ≈26 h** ⇒ 到那步只能你登一次(命令在 `NEED-USER.md §②`,标了「现在不用动手」) |
| **③ 已撤回** | 上轮「需你放行 `schtasks`」**作废** —— 经入口脚本 spawn 的 `schtasks` 实测可用(22:26:55 那次即证),被拦的只是会话里直接调这一条 |
---
## §6 机制缺陷台账(累计,⛔ 本轮未动机制层 —— 需独占锁+用户确认)
| # | 缺陷 | 后果 | 状态 |
|---|---|---|---|
| M1 | `last_progress_at` 只认宿主 ACCEPTED run | 「在干」判成「没干」⇒ 每轮假 STALL | 未修 |
| M2 | 受阻模板一律渲染「🛑 需人处理」 | 跨线等待被假升级(已第 3 次复现) | 未修 |
| M3 | `taskgraph().ready` 只按 deps 算 | `running/blocked` 仍算「可派」 | 未修 |
| M4 | 泄漏锁无 TTL / 持有者 completed 不自动失效 | 必留泄漏锁 | 未修 |
| M6 | 「垫片常驻」无归属无验收 | 缺口反复复发 | 本轮已派棒(23:12)试点 |
| M7 | 只读棒不落盘 ⇒ 读数不可追溯 | 22:37 复核棒的读数无人能查 | 未修 |
| **M8** | **relay 的 online 判据不含后端(20090)健康** | **假绿 ⇒ ④闸 503 与「在线」并存** | **本轮新登记** |
---
## §7 锁
窄域 2 键(`ai1net-dsh-server/tmp` + `ai1net-dsh-server/交付物`)`RC=0`;收尾 `--release-exec "[主]心跳核对-2249"`。
现存 `.locks` 里的 `[协作]N9复测-2248` 是复测棒在持,按 R9 未动。