-
Notifications
You must be signed in to change notification settings - Fork 0
meta skeleton walkthrough
ZP edited this page Aug 29, 2026
·
1 revision
← 返回 Wiki 首页 | 元文档 · 骨架走查记录 | 上一篇:实现记录 | 下一篇:DSH 装载验证 →
本文件由
packages/chat/kernel/src/skeleton.host.spec.ts在测试运行时自动生成, 记录P0-a承担的 9 个骨架步骤的实际执行结果。不是手写的。
生成时间:2026-08-29T18:01:23.875Z
本文件是提交进仓库的快照。 权威来源是测试本身 —— 运行
corepack yarn vitest run packages/chat/kernel会在build/下重新生成。 若两者不一致,以测试的实际输出为准并更新本文件。
- 管理员签发 2 个邀请码,甲乙各消费 1 个
- 重复消费同一个码被拒绝,返回
NOT_FOUND_OR_FORBIDDEN - 被拒绝的尝试同样写入审计(第 14 步要求)
- 甲创建组织
Acme→ 工作区研发→ 项目dsh-chat - 乙以
developer角色被邀请进项目,初始状态invited -
invited状态下授权判定拒绝发言,接受邀请转active后通过
- 工作项
wi-1分派给乙,状态assigned -
签收状态独立为
offered—— 分派只是「提出」,不代表乙已知晓或同意 - 乙的收件箱有 1 条未读通知,与领域写入同事务落库
- 未建立联系人时私聊准入判定拒绝
-
仅有
pending请求时仍然拒绝 —— 必须accepted才放行 - 乙接受后
contactAccepted(a,b) && !Block(a,b) && !Block(b,a)成立
- 乙未在线,消息与队列项在同一事务写入 relay
- 分配
DeliverySeq = 1 - 正文为中文,落库后可原样读回
- 队列达到容量上限后,新发送返回
RECIPIENT_QUEUE_FULL - 被拒绝的消息完全不存在 —— 该错误码的幂等语义是「发送未被接收」
- 早期未 ACK 的消息未被淘汰,正文原样保留
- 被拒绝的尝试写入审计并记录错误码
- 关闭数据库连接后重新打开同一磁盘文件(不是内存库)
- 未 ACK 队列项 2 条、未读通知 1 条、工作项状态
assigned、审计 15 条 - 重启后逐项核对,全部一致
- 乙的设备拉取一个带租约的批次,取到 2 条消息
- ACK 后再次重启 relay
- 重启后重新拉取返回 0 条 —— 已 ACK 的消息不再重复投递
- 收件箱仍只有 1 条通知,未因重启而重复
- 全流程共写入 16 条审计事件
- 其中 2 条为被拒绝的尝试,各自记录了错误码
- 审计表结构中没有
body/content列 - 审计事件序列化后不含任何已发送的消息正文