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

+31
View File
@@ -0,0 +1,31 @@
---
alwaysApply: false
paths: ["dsh-server-docs/04-调整方案/**", "dsh-server-docs/05-交接单/**", "dsh-server-docs/INDEX.md"]
---
# 写改造档案 / 交接单:规范
## 档案(`04-调整方案/<NN>-<主题>.md`)
- **编号先原子占号**:`mkdir 04-调整方案/.lock-<NN>` 成功再写("先 ls 再写"会撞号,已实证两次)。
**不要相信任何文档里写死的"下一号"** —— 一律现跑:`ls 04-调整方案/ | sort -n | tail -1`。
编号 63 是空号,**勿补占**。
- **模板 8 段**(交接单)/ **结构**(档案):目标 → 改动 → 验证 → 红线遵守 → 回滚。
- **档案只增不改** —— 历史事实冻结;发现与现值不符时**改入口(BRIEF/INDEX),回改档案**。
- 需要改动既有档案时,在文末加「**修正(YYYY-MM-DD)**」小节,不删原文。
## 收尾三件套 + 一件
```bash
python3 scripts/docs-audit.py # 结构:编号冲突 / 悬空引用(退出码非 0 即需处理)
python3 scripts/docs-manifest.py # 刷新机读清单 docs-manifest.json
bash scripts/docs-sync-check.sh # 双端对账(退出码 0 = 全绿)
python3 scripts/docs-consistency.py # 事实:写死取值 + 跨页取值冲突(新增)
```
## 单子(交接单)
- 8 段必填:目标 / 只读前置 / 范围 / 决策点 / 步骤 / 验收 / 回滚 / 回报格式。
- **决策点**:已定的写"已定(谁定的/依据)";未定的写"开跑前问用户";
**技术项不写进决策点**(自己定,写进回执)。
- 基线数字**必须带取数时间 + 复核命令**,不写死绝对值。
+27
View File
@@ -0,0 +1,27 @@
---
alwaysApply: false
paths: ["**/*.html", "**/*.css", "**/*.js"]
---
# 前端改动:强制基线
**动手前先读** `dsh-server-docs/06-工作台UI规范.md`(设计 Token / 布局 / 组件 / 交互 / 9 条已知坑)。
**冲突时以该文件的实测 Token 为准**,不要用通用审美覆盖它。
## 三条硬要求
1. **静态文件改完即时生效,不要重启服务** —— `web/*.html`、`.css`、client bundle 由门户直出,
重启 `dshs` 是**无谓的中断**(⚠️ R8 已修正:开发环境服务器 ⇒ 不必等确认;但**无收益的重启按 R11 仍属劣化,别做**)。
只有改 `src/**`(TS)才需要 `npm run build` + 重启。
2. **验证注入脚本必须三条齐全**:
`curl -L --compressed -c jar -b jar -H "Accept: text/html" <URL>`
—— 缺任一条都会拿到 gzip 字节流,`grep` 关键字永远搜不到(会误判"注入没生效")。
3. **视觉判断**辅以 `impeccable`(Operate 模式)与 `taste-skill`(反 AI 味)。
## 已知坑(别重踩)
- `main#view` 高度必须是 `calc(100vh - 55px)`(55 是实测值,写 54 会多出第二层滚动条)。
- **"视口自适应高度"要上下都算** —— 只看列表上方会算漏下方(按钮行 + card padding + `#view` padding-bottom),
实测正解是 `calc(100vh - 520px)`。
- `.modal-mask` 是 `display:flex` → 必须显式写 `[hidden] { display: none }`,否则弹窗关不掉。
- `.tab` 有胶囊式与下划线式**两套同名定义**,新页面另起类名(如 `.pg-tab`)。
+33
View File
@@ -0,0 +1,33 @@
---
alwaysApply: false
paths: ["**/*.ts", "**/*.cjs", "**/*.mjs"]
---
# 服务器侧改码:流程与门禁
## 哪一层要重启(**R8 判据**)
| 改什么 | 是否需 build + 重启 | 是否中断在线用户 |
|---|---|---|
| `src/**`(TS,编排器) | ✅ `npm run build` + 重启 `dshs` | ✅(开发环境)**直接做** —— 动手前一句话说明即可,⛔ **不必等确认**(R8 · 2026-09-13 用户明令「这个是开发环境服务器,不用担心中断用户」;2026-09-16 收口) |
| `web/*.html`(门户静态页) | ❌ 即时生效 | ❌ 否 |
| profile 层(cordis patch / bundles) | 重启该用户实例 | 仅该用户 —— 同样**直接做**,一句话说明即可 |
**改 `web/*.html` 千万不要重启服务** —— 那是**无谓的中断**(R8 的"不必等确认"**不等于**"可以无谓重启":按 **R11 只做正向迭代**,无收益的重启仍是劣化)。
## 部署前
1. **校验改前基线**:`ssh bt-server 'git hash-object <file>'` vs 本机 `git rev-parse HEAD:<file>`
—— **比 md5 可靠**(不受 CRLF / 编码影响;md5 已误判过一次)。
2. 备份:`cp <file> <file>.bak-<ts>`,回滚命令写进档案。
## 插件安装(`ensure-*.cjs` / `pnpm`)
- **必须走 pnpm**:`pnpm add file:<tgz>`;lockfile 才是账本,手放 `node_modules` 无效。
- **同名同版本 tgz 改了内容必须升版本号** —— pnpm 会复用旧包(已踩)。
- 装完若需实例生效 → 重启该用户实例 → 属 R8,**动手前一句话说明影响即可,⛔ 不必等确认**。
## 验证
- API 链路**必须同时覆盖"有请求体"与"无请求体"** —— 只测 POST 会整条漏掉 GET/SSE。
- 浏览器验证用 `browser-harness`,**铁律:动手前先 `list_tabs()`**,确认附着的不是用户正在用的 Chrome。