docs/HANDOFF-2026-09-17.md
Rama master · réplica de lectura del repositorio original.
# 交接说明 — 2026-09-17
> **⚠️ 这不是最新的一份。** 本文写的是 v3.9.36,**当前一份是
> [HANDOFF-2026-10-15.md](HANDOFF-2026-10-15.md)**。状态表与"仍未做"请以最新那份为准。
> 索引在 [README.md](README.md)。交接是 append-only,旧结论不删。
**上一份**:[HANDOFF-2026-09-16.md](HANDOFF-2026-09-16.md)(它停在 v3.9.35,不是现状)。
方法论仍看 [AUDIT-LEDGER.md](AUDIT-LEDGER.md)。本份只写**现在还能接手的事实**。
---
## 0. 当前状态
```
产品 tag v3.9.36 —— 本份随发版改。OTA 跟最新 annotated tag。
master == v3.9.36 的提交已推送到 origin(CI 含一条"默认路径字节"门禁,见 §1)
作者 dwgx。禁止 AI 署名 / Co-Authored-By
活树 D:\Project\WindsurfAPI。不要建 D:\Project\windsurf
Mac 路径 D:\Macos\workspace\Project\windsurf 只是联接
Windows Node v24.x;无 /usr/bin/git。**五个真实 Git 夹具现在是带原因的 skip**,本机套件 0 fail
```
开着的 issue / PR(2026-09-17 核对):
| | 状态 | 下一刀 |
|---|---|---|
| #272 | 开 | assistant 只带图片的回合被整条丢弃(默认路径静默丢图)。**修它 = 默认 wire 变化**,先做 issue 里的最小 A/B |
| #273 | 开 | 两处 wire 语义待现场校准:result 先于 call 的历史;同回合多帧的 reasoning 重复 |
| #258 | 开 | 旱灾名单:`DROUGHT_SAFE_SELECTORS` 已进 v3.9.28,不扩 `FREE_REACHABLE`,等报告者确认 |
| #250 | 开 | **唯一确认的活数据缺陷**:reasoning 泄进 content。LEAK_TRACE 已上,等现场抓包 |
| #245 / #239 / #236 / #262 / #208 | 开 | 分别等报告者 / 付费校准 / 复现信息 / 提议决定 / 公告 |
## 1. 接手三分钟内会踩的
1. **不要在 `master` 上 `git commit`**(`.githooks/pre-commit` 拒,且发生在 `git add` 之后)。分支 → ff-only。
2. **`npm test` 不是发布门**;权威是 `npm run test:release`(Linux)。突变规格不在套件里。
3. **不要打开/打印** `.env` / `accounts*` / `*session.env`。OTA 跟 annotated tag。
4. **`docs-consistency-guard` 现在只扫 git 跟踪的 markdown**——但 `scripts/` 是**白名单制**
(`.gitignore` 里 `scripts/*` + 逐条 `!scripts/<name>`):新脚本不加白名单就永远进不了提交。
5. **`test/_research/` 被显式排除**在可运行集之外(研究笔记,期望值过期)。往里放 `.test.js` 不会被执行。
## 2. v3.9.36 改了什么
四条线(细节见 [releases/RELEASE_NOTES_3.9.36.md](releases/RELEASE_NOTES_3.9.36.md)):
1. **PR #271**(贡献者):并行 `tool_calls` 之间的游离 assistant 文本折进交错块;评审后补掉丢图、
空 ID 配对、字段丢失三处。
2. **请求路径**:缓存键门控(裸 key 场景不再白算)、`/v1/messages` 单遍、正则提升、SSE 前缀表、
图像不再逐次 base64;编码器每字段单分配、分帧器线性化。
3. **可靠性**:会话索引淘汰只动自己的键、复用池租户公平份额、额度刷新合并、响应存储拷贝边界
(并把它从 `structuredClone` 换成只复制容器:3 MB 载荷 put 2.79→0.10 ms)、JWT 缓存淘汰、
流失败分层 + 转移间隔。
4. **安全**:凭据库唯一 tmp + 串行写 + 拒绝缩水修复 + 死写者锁回收、登录 `credentialStored`、
可信客户端 IP、主机白名单(带分类,不耗账号错误预算)、stats 导入原型键、日志脱敏。
**门禁**:`test/wire-byte-identity.test.js`(270 帧 vs 上一个 release)+ CI 作业
`Default-path request bytes`;`npm run gate`;突变 sweep 计数断言;`spec-baseline-audit` 定时;
`secret-scan` 覆盖未跟踪文件。
## 3. 该暴露 / 不该暴露
与 09-16 §3 相同,未变:公开的是 `README*.md`、`docs/releases/*`、`docs/ENV-SWITCHES.md`、
`docs/DEVIN-CONNECT-CUTOVER.md`、本交接链、`docs/AUDIT-LEDGER.md`、`HISTORY-LEDGER*`、源码与测试;
**绝不进 git / 绝不贴到 issue**:`.env`、`accounts*`、`*session.env`、`.trace/`、`.wire-dump/`、
`docs-internal/`、`.agent/` / `.claude/` / `.grok/` 控制面、根 `CLAUDE.md` / `AGENTS.md`。
## 4. 仍未做(不是漏做)
- 默认开 ACU `^22`:#239 等数据;`FREE_TIER_SELECTOR` 仍是 `swe-1-6-slow`。
- **未审计面**(第一轮那张按风险排序的表,十六轮里从未宣布 CLEAN):`tool-emulation.js` /
`langserver.js` / `conversation-pool.js` / `models.js` / `auth.js` 其余部分。
- #272 / #273 需要上游 A/B 与逐帧抓包,不是写代码的事。
- `test/_research/responses-cache-hit-seq.test.js` 重定基(技术债,非缺陷)。
- 家里云生产树:已弃用,不要 SSH、不要覆盖。
## 5. 发版口令
见 [releases/README.md](releases/README.md)。bump `package.json` 一次、`package-lock.json` **两次**;
annotated tag 在 master push 之后打;不要在 master 上直接 commit。