You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
原因与 #5170 同源:kernel.ts 走 this.context.trigger(...)(裸循环、不 catch),lite-kernel.ts 这三处仍走 kernel-base.ts 的 triggerHook(每 handler try/catch,注释 "Continue with other handlers even if one fails")。#5170 只把 kernel:ready 换成了传播版分发器。
Activity
os-zhuang commentedon Aug 4, 2026
分诊(PM 循环第 4 轮,会话
session_01Pbu27iNUfQCHeuS551Rqo7):挂pm:blocked,Blocked-by: PR #5258(同文件kernel-base.ts/lite-kernel.ts,且要改 #5258 刚立的「其余钩子 fail-soft」pin 测试 —— 必须基于其合并后的 main)。合入后转pm:queue即派。PM 裁定(否决窗口):取 A ——
kernel:listening与kernel:bootstrapped改传播(复用 #5258 落地的triggerHookOrThrow),kernel:shutdown保留 fail-soft 并在注释写明理由(停机路径一个 handler 失败不该阻断其余清理)。这是 #5170 刚被维护者背书的同一原则的直接延伸(同一钩子名两内核一个语义;「Bootstrap complete」打给一个没在监听的进程是最难看的假成功),restore-invariant 类,不再上升。落地要求:改哪条 pin 就显式改哪条;HonoServerPlugin 的listen()不需要自己包 catch(传播即正确);全套对称回归用例照 #5258 形状。Generated by Claude Code
os-zhuang commentedon Aug 4, 2026
认领:PM 循环第 4 轮(阻塞解除:#5170→PR #5258 已合并,
triggerHookOrThrow与 fail-soft pin 测试已在 main)会话:
session_01Pbu27iNUfQCHeuS551Rqo7分支:
claude/issue-5257-listening-bootstrapped-propagateWorktree:
objectstack-issue-5257域:
domain:engine文件面:
packages/core/src/lite-kernel.ts、kernel-base.ts(注释)、lite-kernel.test.ts/kernel.test.ts、changeset(越界即停,报告说明)方向按 13:12Z 分诊裁定:A ——
kernel:listening与kernel:bootstrapped改传播(复用triggerHookOrThrow),kernel:shutdown保留 fail-soft 并在注释写明理由;改哪条 pin 显式改哪条。在飞不相交已核:#5038(objectql/automation/triggers)与 core 不交;#5086/#5253 已交付。Generated by Claude Code
os-zhuang commentedon Aug 4, 2026
验收:ACCEPT —— PR #5275(转 ready + auto-merge)
会话:
session_01Pbu27iNUfQCHeuS551Rqo7(PM 循环第 4 轮)裁定 A 严格按范围落地:
kernel:bootstrapped/kernel:listening换传播式分发(复用 #5258 的triggerHookOrThrow),state='stopped'、原始错误不包装、不打印假成功行;kernel:shutdown保留 fail-soft 且理由写在分发点(中断停机 = 把坏 handler 放大成资源泄漏);hono-plugin 零改动(传播即正确)。证据闸超预期:非测试订阅者全表逐个分析健康 boot 抛错性(objectql/sharing/pinyin/automation 全部自带防护,唯一会抛的正是要传播的 honolisten()),无测试依赖吞 —— 不触发 needs_decision。pin 翻面显式:#5258 的三合一 pin 拆成三条具名用例(bootstrapped 失败 boot / listening 失败 boot 且从未宣告成功 / shutdown 保持 fail-soft 并断言 destroy() 跑到),前两条有 ObjectKernel 对称双胞胎 —— 「同一钩子名两内核两语义」这个 bug 类只有成对具名用例按得住。
实况核验:draft ✓ / Fixes 行 ✓ / 6 文件在面内(events.mdx 按新事实改写并诚实标注 #5274)✓ / core 426(+4 新用例)+ runtime 1313 + hono 164 + sharing 347 + automation 665 + 连接器 + 门禁 8 项全 PASS ✓ / tsc +4 为既有 TS7006 噪声类、逐一对应新用例并明说(#4311 台账)✓ / changeset minor、受众提示照 #5258 形状 ✓。
重要新发现:#5274(ObjectKernel 的 shutdown 不是 fail-soft —— 抛错 handler 跳过全部
destroy()并process.exit(1),日志谎报「Shutdown timed out」,探针实测)—— 本单硬约束下正确地未越界修,PM 即刻分诊。Generated by Claude Code
fix(core)!: unify `kernel:ready` failure semantics — a throwing handl…
fix(core)!: a throwing kernel:bootstrapped / kernel:listening handler…
fix(core): isolate kernel:shutdown dispatch and stop reporting handle…