文档库:目录改为编号制(01-规范/02-架构设计/03-数据库/04-调整方案/ 05-交接单/06-ops/07-scripts/08-skills/09-archive),顶层散文件归入 01-规范/; INDEX.md 与 docs-manifest.json 重刷(档案 146 篇);旧目录名引用全量对齐。 IM 线:src/im/**(SDK / hub / store / presence / ws / gateway-token)、 src/web/routes/im.ts、src/db/plugin-data/**、src/supervisor/plugin-assembly.ts 及对应 test/**。 插件线:poc/{im-agent-bridge,im-connection-gateway,im-conversation-tabs, business-plugins-im,carbon-mcp-probe}、src/web/routes/{sessions,overlay-device}.ts、 src/net/relay/{device-grant,instance-credential}.ts。 仓库卫生:清出 40 个历史误入库 / 已改名文件(34 个交接单归档 + 6 个旧结构, 本地均有副本);dsh-server-docs/.gitignore 补 tmp/;交接单不入库(政策)。
把散落在代码里的真实部署值统一收进 config/,代码改为引用配置, 使仓库副本/开源导出不再带出生产域名、IP、内网路径与凭据。 新增 config/:platform.env.example(模板)· load.sh(shell 加载器)· index.cjs(node 加载器)· README.md(键一览与优先级)。 真实值放 config/platform.env —— 已 .gitignore 排除,不入库、不进导出。 TS 侧新增 src/platform-paths.ts 作部署路径的唯一解析处(零副作用): platformDir/stateDir/backupDir/artifactDir/installDir/scriptPath。 config.ts 接入这些字段;内置中继种子由生产 URL 改为空(改由 DSHS_OVERLAY_BOOTSTRAP_SEEDS 提供)。修掉 5 处硬编码绝对路径, src/** 注释中性化 116 行/53 文件。 scripts/** 36 个内部运维脚本:真令牌/PG 口令/隧道目标/主机号/路径 一律改从配置取;web/wake.html 的注册域白名单改为运行时从 location.hostname 推导;test/** 夹具 119 行/13 文件改 RFC 2606/5737 保留值,并把「内置种子必须为空」固化为回归断言。 取证:tsc 0 错;npm test 373/375(唯一失败 lease 属既有); 全仓扫描(大小写不敏感)代码面涉密标识 = 0;已部署 47 并零回归 (/opt/dsh/* 未搬家,/var/lib/dshs/platform 未被误建)。
把这批「已 scp 到 47 / 106 生产并在跑、但一直未入 git」的实现补进版本库 (其中 P2 的全部新源码此前一直是 untracked)。 分棒内容: - 序㉔ 内容分发块级寻址:src/net/relay/content/{runtime,source}.ts - 序㉖ 骨干稳定选路(jitter):src/net/relay/{index,network}.ts、src/web/server.ts - 序㉘ 组密钥加密(GCM 确定性):src/net/relay/content/{runtime,source}.ts - 序㉛ P1 一键加入 + 分组准入:src/net/relay/{join,registry}.ts、 src/web/routes/overlay-nodes.ts、scripts/overlay-node-{join,admit}.cjs、 test/overlay-join.test.mjs - 序㊵/㊶ 直连打洞 + peer 档:src/net/relay/direct/{candidate,index,punch}.ts、 scripts/overlay-direct-probe.cjs、test/overlay-direct.test.mjs - 序㊷/㊸ 观测面:scripts/overlay-probe.cjs、scripts/overlay-failover-drill.cjs 零回归三件套(2026-09-18 16:2x 提交前复跑,全绿): - npm test 201 tests / pass 200 / fail 0 / skipped 1(Node v22.22.2) - overlay-probe.cjs --table 28 PASS / 0 SKIP / 0 FAIL - overlay-failover-drill.cjs --scene all --table 12 PASS / 0 SKIP / 0 FAIL ⛔ 未纳入:_tmp_seq24/、_tmp_seq40/、_中间产物_待清理/(本机临时产物,仍 untracked) 🔴 未实施:D8 云安全组乙-1(待人工在云控制台落地,见 交接单_覆盖网络直连与P2P_20260918.md §8.11)