Yichen Jiang
54c60f4079
fix(llm,settings): refuse post-disposal route replacement and teardown notifications
...
Two lifecycle holes the registry and the consumer helper left open.
`AdapterRegistrationHandle.replace` had no liveness guard: after the handle's
disposer ran, a replace put routes back into the registry with nothing left to
release them, so the adapter leaked permanently. `owned` being empty cannot
carry that fact, because `replace([])` is the legal empty-section state, so the
disposer records it explicitly.
`installSettingsSection`'s watcher lacked the guard its own disposer carries:
a stored change landing while the consumer unloads reached `onChange`, which
re-registers routes against a fiber whose resources are being released.
Also documents `withFileLock` in the atomic-write README (it claimed one
export), records the age-based lock takeover as a known limitation, and lists
ctx.settings and ctx.credentials in the architecture capability table.
2026-07-30 23:23:18 +08:00
..
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-25 01:58:42 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-27 04:14:51 +08:00
2026-07-23 19:29:01 +08:00
2026-07-23 19:10:25 +08:00
2026-07-23 19:29:01 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-28 11:39:53 +08:00
2026-07-28 11:39:53 +08:00
2026-07-28 11:39:53 +08:00
2026-07-30 23:23:18 +08:00
2026-07-30 23:23:18 +08:00
2026-07-30 23:23:18 +08:00
2026-07-29 14:20:06 +08:00
2026-07-29 14:20:06 +08:00
2026-07-29 14:20:06 +08:00
2026-07-23 19:29:01 +08:00
2026-07-23 19:10:25 +08:00
2026-07-23 19:29:01 +08:00
2026-07-26 16:45:27 +08:00
2026-07-26 16:45:27 +08:00
2026-07-26 16:45:27 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-29 00:39:56 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-30 17:09:42 +08:00
2026-07-30 17:09:42 +08:00
2026-07-30 17:09:42 +08:00
2026-07-23 18:45:56 +08:00
2026-07-22 22:26:24 +08:00
2026-07-23 18:45:56 +08:00
2026-07-25 14:17:24 +08:00
2026-07-25 14:17:24 +08:00
2026-07-25 14:17:24 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-29 20:10:42 +08:00
2026-07-30 17:28:26 +08:00
2026-07-30 17:28:26 +08:00
2026-07-30 17:28:26 +08:00
2026-07-30 14:09:04 +08:00
2026-07-30 14:09:04 +08:00
2026-07-30 14:09:04 +08:00
2026-07-29 23:36:49 +08:00
2026-07-29 23:36:49 +08:00
2026-07-29 23:36:49 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-25 15:25:52 +08:00
2026-07-25 15:25:52 +08:00
2026-07-25 15:25:52 +08:00
2026-07-27 11:31:38 +08:00
2026-07-27 11:31:38 +08:00
2026-07-27 11:31:38 +08:00
2026-07-23 18:45:56 +08:00
2026-07-22 22:26:24 +08:00
2026-07-23 18:45:56 +08:00
2026-07-26 20:59:05 +08:00
2026-07-26 20:28:37 +08:00
2026-07-26 20:59:05 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-26 02:33:29 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-28 13:55:59 +08:00
2026-07-25 01:58:42 +08:00
2026-07-24 23:43:10 +08:00
2026-07-24 23:43:10 +08:00
2026-07-24 14:21:36 +08:00
2026-07-22 22:26:24 +08:00
2026-07-24 14:21:36 +08:00
2026-07-23 18:45:56 +08:00
2026-07-22 22:26:24 +08:00
2026-07-23 18:45:56 +08:00