Menghuan1918
0b40f74ce8
fix(native): 钉牢 files 接管泄漏的守护断言 + 记录两条不变量
#777 已修掉根因(清理循环跳过 FILES_KIND、注册失败回滚已占用的 id),但它的两处
断言写在「活着的 id 集合」上——泄漏的 id 恰好构成同一个集合,未修复代码上同样
通过;且槽位失败判据按 key 命中,而一个描述符的两个槽共用一个 key,所以
registerSlots 的「部分回滚」分支从未被执行。
- tests/native-registration.spec.ts:断言改写到注册表的事件日志(孤儿 id 会让键
集合看起来完全正常);槽位失败判据改为 name::key,从而可以只让某个描述符的
第二个槽失败、真正走到部分回滚;补 reportFailure 的 phase 断言。实测:在
v0.22.0 源码上 4/4 红,在修复后的源码上 4/4 绿。
- src/client/native/index.ts:给 disposeSafely 补注释,说明释放失败只写
console.error、不弹诊断条的理由(两个调用点都在 teardown 路径上;真被占住的
id 会在下一次注册尝试里经 reportFailure 显式报出)。
- AGENTS.md:§3.4 第 9 条补上这两条不变量(含真机日志实证的链接),§6 把
native-registration.spec.ts 纳入关键测试守护。
- docs/plans/2026-09-28-native-files-takeover-reload-leak.md:事故/证据/否决方案
记录(含「吸收」方案为何被否)。
验证:pnpm typecheck / pnpm lint 通过;pnpm test 122 files / 1292 passed / 9 skipped。
2026-09-28 10:57:10 +08:00
..
2026-08-10 16:46:01 +08:00
2026-08-16 19:14:57 +08:00
2026-08-10 16:46:01 +08:00
2026-08-10 16:46:01 +08:00
2026-08-21 21:39:59 +08:00
2026-08-16 23:35:57 +08:00
2026-08-20 02:09:36 +08:00
2026-08-13 10:26:57 +08:00
2026-08-18 01:22:28 +08:00
2026-09-02 23:26:04 +08:00
2026-08-12 23:04:30 +08:00
2026-08-14 23:04:25 +08:00
2026-08-17 00:06:20 +08:00
2026-08-18 10:50:30 +08:00
2026-08-14 14:53:03 +08:00
2026-08-22 19:10:02 +08:00
2026-08-15 15:05:06 +08:00
2026-08-18 23:23:17 +08:00
2026-08-18 01:22:28 +08:00
2026-08-19 04:04:44 +08:00
2026-09-02 23:37:40 +08:00
2026-08-21 01:28:17 +08:00
2026-09-06 00:59:03 +08:00
2026-09-04 20:28:35 +08:00
2026-08-24 01:19:43 +08:00
2026-08-23 22:02:47 +08:00
2026-08-24 00:59:27 +08:00
2026-09-03 09:56:31 +08:00
2026-08-26 21:40:32 +08:00
2026-08-26 18:21:43 +08:00
2026-08-29 15:49:19 +08:00
2026-09-02 23:13:57 +08:00
2026-09-01 16:07:33 +08:00
2026-09-03 21:21:22 +08:00
2026-09-04 22:08:02 +08:00
2026-09-06 23:48:25 +08:00
2026-09-08 00:04:25 +08:00
2026-09-08 22:20:15 +08:00
2026-09-08 21:21:29 +08:00
2026-09-10 17:13:32 +08:00
2026-09-10 22:26:02 +08:00
2026-09-09 13:15:49 +08:00
2026-09-10 17:13:32 +08:00
2026-09-10 14:54:19 +08:00
2026-09-11 16:58:29 +08:00
2026-09-11 16:20:58 +08:00
2026-09-27 22:19:05 +08:00
2026-09-27 22:18:19 +08:00
2026-09-21 21:00:09 +08:00
2026-09-23 23:58:59 +08:00
2026-09-23 23:58:59 +08:00
2026-09-27 22:19:05 +08:00
2026-09-27 22:18:57 +08:00
2026-09-27 22:18:57 +08:00
2026-09-28 10:57:10 +08:00