@agentunion/fastaun-browser 0.5.19 → 0.5.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/CHANGELOG.md +129 -78
  2. package/_packed_docs/CHANGELOG.md +129 -78
  3. package/_packed_docs/INDEX.md +201 -195
  4. package/_packed_docs/KITE_DOCS_GUIDE.md +93 -90
  5. package/_packed_docs/agent.md/SCHEMA.md +7 -7
  6. package/_packed_docs/agent.md//350/277/234/347/250/213agent.md/347/274/223/345/255/230/344/270/216etag/351/200/217/344/274/240/346/226/271/346/241/210.md +11 -11
  7. package/_packed_docs/protocol/06-/346/234/215/345/212/241/345/215/217/350/256/256.md +1072 -1072
  8. package/_packed_docs/protocol/10-Group-/345/255/220/345/215/217/350/256/256.md +676 -676
  9. package/_packed_docs/protocol/11-Storage-/345/255/220/345/215/217/350/256/256.md +8 -12
  10. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/211.md +443 -0
  11. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.0.md +161 -0
  12. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +658 -0
  13. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2113.0.md +233 -0
  14. package/_packed_docs/protocol/agent.md/SCHEMA.md +1 -1
  15. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +1 -1
  16. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +67 -63
  17. package/_packed_docs/sdk/05-E2EE/345/212/240/345/257/206/351/200/232/344/277/241.md +1 -1
  18. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +35 -8
  19. package/_packed_docs/sdk/08-/346/234/200/344/275/263/345/256/236/350/267/265.md +3 -3
  20. package/_packed_docs/sdk/09-group-rpc-manual.md +258 -254
  21. package/_packed_docs/sdk/09-message-rpc-manual.md +7 -4
  22. package/_packed_docs/sdk/09-storage-rpc-manual.md +18 -26
  23. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +61 -52
  24. package/_packed_docs/sdk/INDEX.md +92 -80
  25. package/_packed_docs/sdk/Ownership-SDK/345/256/236/347/216/260/346/214/207/345/215/227.md +169 -0
  26. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/227.md +349 -0
  27. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +922 -0
  28. package/_packed_docs/sdk/Ownership-SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +270 -0
  29. package/_packed_docs/sdk/Ownership2.1-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +300 -0
  30. package/_packed_docs/sdk/Ownership2.1-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +382 -0
  31. package/_packed_docs/sdk/Ownership2.1-TDD/345/210/206/351/230/266/346/256/265/345/256/236/346/226/275/350/256/241/345/210/222.md +708 -0
  32. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +476 -0
  33. package/_packed_docs/sdk/Ownership/347/256/241/347/220/206/344/270/223/351/242/230.md +559 -0
  34. package/_packed_docs/sdk/ProtectedHeaders/347/224/250/346/263/225/344/270/223/351/242/230.md +299 -0
  35. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +173 -0
  36. package/_packed_docs/sdk//345/207/255/350/257/201/344/270/216/347/273/204/347/273/207/346/234/215/345/212/241SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +211 -0
  37. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/345/256/236/347/216/260/347/247/273/346/244/215/346/214/207/345/215/227.md +331 -0
  38. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273SDK/351/233/206/346/210/220/346/214/207/345/215/227.md +207 -0
  39. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/344/273/243/347/240/201/345/256/241/346/237/245/346/212/245/345/221/212.md +252 -0
  40. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/345/256/236/346/226/275/350/256/241/345/210/222.md +156 -0
  41. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/346/226/271/346/241/210.md +273 -0
  42. package/_packed_docs//350/267/250/350/256/276/345/244/207/345/267/262/350/257/273/346/234/252/350/257/273/350/257/246/347/273/206/350/256/276/350/256/241.md +211 -0
  43. package/dist/agent-md-schema.d.ts +15 -4
  44. package/dist/agent-md-schema.d.ts.map +1 -1
  45. package/dist/agent-md-schema.js +64 -30
  46. package/dist/agent-md-schema.js.map +1 -1
  47. package/dist/agent-md.d.ts +10 -2
  48. package/dist/agent-md.d.ts.map +1 -1
  49. package/dist/agent-md.js +278 -121
  50. package/dist/agent-md.js.map +1 -1
  51. package/dist/aid-store.d.ts +46 -0
  52. package/dist/aid-store.d.ts.map +1 -1
  53. package/dist/aid-store.js +149 -10
  54. package/dist/aid-store.js.map +1 -1
  55. package/dist/aid.d.ts +4 -1
  56. package/dist/aid.d.ts.map +1 -1
  57. package/dist/aid.js +23 -42
  58. package/dist/aid.js.map +1 -1
  59. package/dist/auth.d.ts +1 -1
  60. package/dist/auth.d.ts.map +1 -1
  61. package/dist/auth.js +85 -18
  62. package/dist/auth.js.map +1 -1
  63. package/dist/bundle.js +1581 -781
  64. package/dist/cert-utils.d.ts +49 -1
  65. package/dist/cert-utils.d.ts.map +1 -1
  66. package/dist/cert-utils.js +102 -56
  67. package/dist/cert-utils.js.map +1 -1
  68. package/dist/client/delivery.d.ts +7 -0
  69. package/dist/client/delivery.d.ts.map +1 -1
  70. package/dist/client/delivery.js +243 -28
  71. package/dist/client/delivery.js.map +1 -1
  72. package/dist/client/rpc-pipeline.d.ts.map +1 -1
  73. package/dist/client/rpc-pipeline.js +89 -77
  74. package/dist/client/rpc-pipeline.js.map +1 -1
  75. package/dist/client/v2-e2ee.d.ts.map +1 -1
  76. package/dist/client/v2-e2ee.js +99 -80
  77. package/dist/client/v2-e2ee.js.map +1 -1
  78. package/dist/client.d.ts.map +1 -1
  79. package/dist/client.js +31 -17
  80. package/dist/client.js.map +1 -1
  81. package/dist/crypto.d.ts.map +1 -1
  82. package/dist/crypto.js +8 -6
  83. package/dist/crypto.js.map +1 -1
  84. package/dist/events.d.ts +5 -2
  85. package/dist/events.d.ts.map +1 -1
  86. package/dist/events.js +33 -14
  87. package/dist/events.js.map +1 -1
  88. package/dist/facades.js +5 -5
  89. package/dist/facades.js.map +1 -1
  90. package/dist/index.d.ts +1 -1
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js.map +1 -1
  93. package/dist/org-protocol.d.ts.map +1 -1
  94. package/dist/org-protocol.js +72 -12
  95. package/dist/org-protocol.js.map +1 -1
  96. package/dist/ownership-v21.d.ts +25 -8
  97. package/dist/ownership-v21.d.ts.map +1 -1
  98. package/dist/ownership-v21.js +142 -73
  99. package/dist/ownership-v21.js.map +1 -1
  100. package/dist/ownership-workflow.d.ts +6 -1
  101. package/dist/ownership-workflow.d.ts.map +1 -1
  102. package/dist/ownership-workflow.js +221 -58
  103. package/dist/ownership-workflow.js.map +1 -1
  104. package/dist/tools/cross-sdk-agent.d.ts +2 -1
  105. package/dist/tools/cross-sdk-agent.d.ts.map +1 -1
  106. package/dist/tools/cross-sdk-agent.js +91 -8
  107. package/dist/tools/cross-sdk-agent.js.map +1 -1
  108. package/dist/transport.d.ts +1 -0
  109. package/dist/transport.d.ts.map +1 -1
  110. package/dist/transport.js +2 -0
  111. package/dist/transport.js.map +1 -1
  112. package/dist/version.d.ts +1 -1
  113. package/dist/version.js +1 -1
  114. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -4,9 +4,60 @@
4
4
 
5
5
  格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
6
6
 
7
- ---
8
-
9
- ## 0.5.19 — 未发布
7
+ ---
8
+
9
+ ## 0.5.20 — 未发布
10
+
11
+ > 基线:2026-10-12 发布的 npm `0.5.19`,发布包已与仓库快照 `ab05792f` 核对;本节整理 2026-10-15 工作区的 SDK 增量。
12
+
13
+ ### 新功能
14
+
15
+ #### 通用签验与文档多签
16
+ - 新增异步 `AIDStore.sign/verify`,支持 `raw/document`、显式 `text/file` 输入、分离签名、TAG 和追加签名;raw 文件保留二进制,`file://` 文本按字面处理,文件就地签署使用显式可写文件句柄。
17
+ - 文档每一签覆盖此前完整字节前缀,附签必须包含 `signer_aid`;按签名 AID 和精确证书指纹逐签验证,尾签块总量限制为 2048 bytes。`agent.md` 与 Ownership 文件复用通用签验核心。
18
+
19
+ ### 修复
20
+
21
+ #### 消息同步、已读事件与设备
22
+ - Pull Gate 改为同 namespace 单飞、每客户端最多 4 个 namespace 并发;群事件与群消息使用独立 namespace,保留前台优先和同级 FIFO,超时任务结束前不释放同 namespace。
23
+ - 后台补拉保留目标上界和 `has_more/remaining`,超过默认页预算、小页/空页或暂时失败后继续调度;RPC 响应、前台排空和 gate 空闲触发恢复,关闭后台同步或切换身份、连接时废弃旧代任务。
24
+ - Forward 末页发布并持久化水位后独立发送最终累计 ACK,移除为提交 ACK 而发起的额外空 Pull;分页只捎带已提交水位,volatile 页消费后按最新 cursor 续拉。
25
+ - `message.read_changed`、`group.read_changed` 和 `read_state_sync` 在出队及每个处理器执行前复核身份代次;首次合法 raw 已读事件同时交付应用事件和协议镜像,避免身份切换后交付旧事件或漏发首次更新。
26
+ - 显式定向设备发送遇 bootstrap 缓存缺少目标时仅强制刷新一次;无定向、已强制查询及其他加密错误不额外重试。
27
+
28
+ #### agent.md 与本地草稿
29
+ - 自有 AID 默认 resolve 优先返回 IndexedDB 中的草稿/正文,读取不依赖联网或仍有效的私钥、证书;显式 refresh 和远端身份继续下载。
30
+ - 候选稿在网络预检前保存,失败稿由显式 upload 重试;下载和连接自动恢复不覆盖、重传失败稿,只有权威确认精确同一候选后才清除,旧上传完成不删除较新草稿或 pending。
31
+ - 损坏草稿元数据返回 `persistence_unavailable`;草稿失败不阻断独立 Ownership 任务和实体生命周期 checkpoint。
32
+ - 历史名片读取兼容缺失 Schema、旧指纹/CN 和旧群单签,按签署时间核验证书并隔离历史兼容缓存;新上传及现代实体多签保持严格校验。
33
+ - group/org 名片改为实体私钥主签、当前 owner 使用本人 token 上传,可选追加 owner 附签;移除实体额外 V2 上传授权,拒绝 owner 直接替代实体主签。
34
+ - 多签上传和重试保留原始字节;普通正文更新保留既有 owner/ownership 材料并使用原 ETag CAS。下载协商 `multi-v1`,兼容响应头大小写,304 缺少本地正文时重新获取。
35
+
36
+ #### Ownership 2.1 共识与恢复
37
+ - 权威读取核对 NS 原 ETag、owner 当前完整原文、摘要和存在性,使用 head/get/head 并在验签后复读;30 秒观察窗口包含首次网络等待,不再以 Storage `revision/object_id` 作为共识依据。
38
+ - owner.md 改走上传会话、HTTP PUT 和 `complete_upload`,使用 `expected_version` 条件提交;写前复查原件,CAS 冲突保留为 conflict,共识结果移除 `owner_md_revision`。
39
+ - pending 绑定起始完整快照和原始声明,不能因 owner 或数字版本相同复用旧审批;release 保持 base 版本,sub 清理后投影归零,新绑定从 1 开始,未清理的旧 release 不覆盖新关系。
40
+ - released 共识、恢复及清理均复核当前文件和新鲜证书状态;不能仅凭解锁认定完成或补造历史完成证据。损坏任务保留并失败关闭,其他 subject 任务仍可恢复。
41
+ - 补齐 PKI critical extension、BasicConstraints、KeyUsage 和路径长度校验,当前权威证书读取不复用历史兼容缓存或接受重定向。
42
+
43
+ #### 凭证、组织请求与实体恢复
44
+ - `request_binding` 最长 300 秒,admission 不超过成员 binding 截止时间;完整 verify 返回前重查异步等待后可能过期的凭证、状态证明和请求绑定,复用本轮已解析证书及限流结果。
45
+ - 已有合法 `client_signature` 保留并核对实际请求,冲突直接拒绝;服务事件限制白名单,规范化 AID 大小写并去重目标集合。
46
+ - 组织门面分离本地 `aidStore` 参数时保留显式 null;转让缺少替代成员材料先拒绝,checkpoint 已存在但私钥丢失时不生成替代密钥。
47
+
48
+ ### 兼容性与语言边界
49
+
50
+ - 显式登记允许 agent 不指定 owner;human 仍禁止 owner,group/org 仍要求 owner,无 owner 的 agent 不创建 Ownership 待续跑意图。
51
+ - 签验和证书解析继续使用异步 WebCrypto;文件输入使用浏览器对象/句柄,持久草稿和 Ownership 任务使用 IndexedDB,不引入 Node.js 路径接口。
52
+ - 包配置、锁文件、运行时 `VERSION`、V2 envelope 的 `sdk_version` 及加密 conformance 期望统一为 `0.5.20`。
53
+
54
+ ### 测试
55
+
56
+ - 扩展通用签验、多签原文、历史证书、离线草稿、损坏元数据、Ownership 原件 CAS/清理重绑、请求时效及实体恢复测试。
57
+ - 扩展 namespace 并发、后台续拉、末页 ACK、volatile cursor、已读事件逐处理器代次隔离和定向设备 bootstrap 测试,并更新浏览器离线 Ownership 用例。
58
+ - 共享 Ownership 向量和 cross-SDK agent 接入公开 Store 签验;增加四语言签验及 Name Service 多签矩阵入口,测试落点与执行边界见 Python parity 文档。
59
+
60
+ ## 0.5.19 — 2026-10-12
10
61
 
11
62
  > 基线:`0.5.18` 的仓库快照 `1f03bf2d`;本节整理 2026-10-11 工作区的 SDK 增量。
12
63
 
@@ -49,82 +100,82 @@
49
100
  - 扩展已读状态门面、单调缓存、身份切换、重连补偿、组织实体身份及服务事件验签测试;配套单域、浏览器、cross-SDK 和双域测试入口列于 Python parity 文档。
50
101
 
51
102
  ## 0.5.18 — 2026-10-06
52
-
53
- ### 新功能
54
-
55
- #### Owner relation 与 AID 注册编排
56
- - 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
57
- - 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
58
- - 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
103
+
104
+ ### 新功能
105
+
106
+ #### Owner relation 与 AID 注册编排
107
+ - 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
108
+ - 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
109
+ - 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
59
110
  - 新增 ownership proof canonical bytes、`factHash`/`statementHash`、UUID v4 `proofId` 和签名封套校验;AID 统一规范化为小写,普通 agent.md 更新保留现有 proof,不能通过普通 PUT 改 owner。
60
- - owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
61
-
62
- #### Owner relation Storage 与审计门面
63
- - 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
64
- - `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
65
-
66
- ### 修复
67
-
68
- #### 证书与签名安全
69
- - `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
70
- - RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
71
-
72
- #### V2 消息同步与投递
73
- - P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
74
- - inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
75
- - 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
76
-
77
- #### 会话、设备与连接生命周期
78
- - 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
79
- - 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
80
-
81
- ### 改进
82
-
83
- - 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
84
- - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
85
-
86
- ### 测试
87
-
88
- - 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
89
- - 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
90
- - 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
91
-
92
- ## 0.5.17 — 2026-09-19
93
-
94
- ### 新功能
95
-
96
- #### 非持久消息与设备定向
97
- - 正 `ttl` 的 V2 加密消息会透传到最终发送 RPC;`storage=volatile` 消息使用独立 volatile cursor 拉取和 ACK,不进入持久 `seq`、seq-tracker 或持久水位。
98
- - Push、Pull 和 sender IK 延迟恢复共用按消息去重及并发占用状态;纯 volatile 页可独立续页,cursor epoch 不匹配时清空旧 cursor 并重试一次,切换 AID、设备或 slot 时重置本地 volatile 状态。
99
- - `message.v2.pull` / `message.v2.ack` 接入公开调用管线和实例上下文校验;`message.ack` 支持只提交 `volatile_cursor(s)` / `volatile_ids`。
100
- - V2 `message.send` 支持 `device_id` / `to_device_id` 定向接收设备,同时保留发送方 self-sync 和 audit recipients;应用消息公开规范化的 `sender_device_id`,不再暴露内部 slot 字段。
101
-
102
- #### 群管理与 agent.md 事件
103
- - `GroupFacade` 新增 `block`、`unblock`、`getBlocklist`、`reportStatus` 和 `getMemberStatuses`;屏蔽、禁言和成员状态可通过高层 SDK 直接调用。
104
- - 远端 agent.md 已有版本的 ETag 或 Last-Modified 变化时,通过应用事件管线发布 `agentmd.changed`。
105
-
106
- ### 修复
107
-
108
- #### Storage / Group FS 上传 Content-Type
109
- - `writeBytes`、`uploadFile` 和 Group FS 上传在未显式指定类型时按实际字节识别 MIME,并以路径后缀作为回退。
110
- - 上传会话、HTTP PUT 和 `completeUpload` 使用同一 Content-Type;保留 session 的其它 header 并替换冲突的 Content-Type,修复 OSS 预签名校验不一致导致的 403。
111
-
112
- #### 群身份恢复
113
- - 匿名群创建在 RPC 前持久化群密钥并复用稳定的 `_create_request_id`,响应丢失后的重试不会重复创建群;命名群恢复可复用已保存身份。
114
- - 新群主收到 `owner_transfer_rekey_pending` 后只自动完成一次转让;重连时即使服务端角色仍为 member,也会按本地 pending 状态续跑 `complete_transfer`。
115
-
116
- ### 改进
117
-
118
- - Message、SendResult、PullResult 和 AckResult 类型补充 volatile 元数据、cursor、ACK 结果及 `sender_device_id`;`status` 接受 `accepted`。
119
- - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.17`。
120
-
121
- ### 测试
122
-
123
- - 增加 volatile Push/Pull/ACK、纯 volatile 分页、cursor 恢复、并发去重、定向设备和公开字段边界测试。
124
- - 增加群屏蔽/禁言/成员状态、匿名创建幂等、群主转让自动完成与恢复测试,并扩展浏览器 E2E 覆盖。
125
- - 增加 Storage/Group FS MIME 与 Content-Type 一致性测试及 conformance 版本验证。
126
-
127
- ## 0.5.16 — 2026-09-16
111
+ - owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
112
+
113
+ #### Owner relation Storage 与审计门面
114
+ - 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
115
+ - `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
116
+
117
+ ### 修复
118
+
119
+ #### 证书与签名安全
120
+ - `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
121
+ - RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
122
+
123
+ #### V2 消息同步与投递
124
+ - P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
125
+ - inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
126
+ - 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
127
+
128
+ #### 会话、设备与连接生命周期
129
+ - 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
130
+ - 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
131
+
132
+ ### 改进
133
+
134
+ - 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
135
+ - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
136
+
137
+ ### 测试
138
+
139
+ - 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
140
+ - 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
141
+ - 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
142
+
143
+ ## 0.5.17 — 2026-09-19
144
+
145
+ ### 新功能
146
+
147
+ #### 非持久消息与设备定向
148
+ - 正 `ttl` 的 V2 加密消息会透传到最终发送 RPC;`storage=volatile` 消息使用独立 volatile cursor 拉取和 ACK,不进入持久 `seq`、seq-tracker 或持久水位。
149
+ - Push、Pull 和 sender IK 延迟恢复共用按消息去重及并发占用状态;纯 volatile 页可独立续页,cursor epoch 不匹配时清空旧 cursor 并重试一次,切换 AID、设备或 slot 时重置本地 volatile 状态。
150
+ - `message.v2.pull` / `message.v2.ack` 接入公开调用管线和实例上下文校验;`message.ack` 支持只提交 `volatile_cursor(s)` / `volatile_ids`。
151
+ - V2 `message.send` 支持 `device_id` / `to_device_id` 定向接收设备,同时保留发送方 self-sync 和 audit recipients;应用消息公开规范化的 `sender_device_id`,不再暴露内部 slot 字段。
152
+
153
+ #### 群管理与 agent.md 事件
154
+ - `GroupFacade` 新增 `block`、`unblock`、`getBlocklist`、`reportStatus` 和 `getMemberStatuses`;屏蔽、禁言和成员状态可通过高层 SDK 直接调用。
155
+ - 远端 agent.md 已有版本的 ETag 或 Last-Modified 变化时,通过应用事件管线发布 `agentmd.changed`。
156
+
157
+ ### 修复
158
+
159
+ #### Storage / Group FS 上传 Content-Type
160
+ - `writeBytes`、`uploadFile` 和 Group FS 上传在未显式指定类型时按实际字节识别 MIME,并以路径后缀作为回退。
161
+ - 上传会话、HTTP PUT 和 `completeUpload` 使用同一 Content-Type;保留 session 的其它 header 并替换冲突的 Content-Type,修复 OSS 预签名校验不一致导致的 403。
162
+
163
+ #### 群身份恢复
164
+ - 匿名群创建在 RPC 前持久化群密钥并复用稳定的 `_create_request_id`,响应丢失后的重试不会重复创建群;命名群恢复可复用已保存身份。
165
+ - 新群主收到 `owner_transfer_rekey_pending` 后只自动完成一次转让;重连时即使服务端角色仍为 member,也会按本地 pending 状态续跑 `complete_transfer`。
166
+
167
+ ### 改进
168
+
169
+ - Message、SendResult、PullResult 和 AckResult 类型补充 volatile 元数据、cursor、ACK 结果及 `sender_device_id`;`status` 接受 `accepted`。
170
+ - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.17`。
171
+
172
+ ### 测试
173
+
174
+ - 增加 volatile Push/Pull/ACK、纯 volatile 分页、cursor 恢复、并发去重、定向设备和公开字段边界测试。
175
+ - 增加群屏蔽/禁言/成员状态、匿名创建幂等、群主转让自动完成与恢复测试,并扩展浏览器 E2E 覆盖。
176
+ - 增加 Storage/Group FS MIME 与 Content-Type 一致性测试及 conformance 版本验证。
177
+
178
+ ## 0.5.16 — 2026-09-16
128
179
 
129
180
  ### 修复
130
181
 
@@ -4,9 +4,60 @@
4
4
 
5
5
  格式参考 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/);版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
6
6
 
7
- ---
8
-
9
- ## 0.5.19 — 未发布
7
+ ---
8
+
9
+ ## 0.5.20 — 未发布
10
+
11
+ > 基线:2026-10-12 发布的 npm `0.5.19`,发布包已与仓库快照 `ab05792f` 核对;本节整理 2026-10-15 工作区的 SDK 增量。
12
+
13
+ ### 新功能
14
+
15
+ #### 通用签验与文档多签
16
+ - 新增异步 `AIDStore.sign/verify`,支持 `raw/document`、显式 `text/file` 输入、分离签名、TAG 和追加签名;raw 文件保留二进制,`file://` 文本按字面处理,文件就地签署使用显式可写文件句柄。
17
+ - 文档每一签覆盖此前完整字节前缀,附签必须包含 `signer_aid`;按签名 AID 和精确证书指纹逐签验证,尾签块总量限制为 2048 bytes。`agent.md` 与 Ownership 文件复用通用签验核心。
18
+
19
+ ### 修复
20
+
21
+ #### 消息同步、已读事件与设备
22
+ - Pull Gate 改为同 namespace 单飞、每客户端最多 4 个 namespace 并发;群事件与群消息使用独立 namespace,保留前台优先和同级 FIFO,超时任务结束前不释放同 namespace。
23
+ - 后台补拉保留目标上界和 `has_more/remaining`,超过默认页预算、小页/空页或暂时失败后继续调度;RPC 响应、前台排空和 gate 空闲触发恢复,关闭后台同步或切换身份、连接时废弃旧代任务。
24
+ - Forward 末页发布并持久化水位后独立发送最终累计 ACK,移除为提交 ACK 而发起的额外空 Pull;分页只捎带已提交水位,volatile 页消费后按最新 cursor 续拉。
25
+ - `message.read_changed`、`group.read_changed` 和 `read_state_sync` 在出队及每个处理器执行前复核身份代次;首次合法 raw 已读事件同时交付应用事件和协议镜像,避免身份切换后交付旧事件或漏发首次更新。
26
+ - 显式定向设备发送遇 bootstrap 缓存缺少目标时仅强制刷新一次;无定向、已强制查询及其他加密错误不额外重试。
27
+
28
+ #### agent.md 与本地草稿
29
+ - 自有 AID 默认 resolve 优先返回 IndexedDB 中的草稿/正文,读取不依赖联网或仍有效的私钥、证书;显式 refresh 和远端身份继续下载。
30
+ - 候选稿在网络预检前保存,失败稿由显式 upload 重试;下载和连接自动恢复不覆盖、重传失败稿,只有权威确认精确同一候选后才清除,旧上传完成不删除较新草稿或 pending。
31
+ - 损坏草稿元数据返回 `persistence_unavailable`;草稿失败不阻断独立 Ownership 任务和实体生命周期 checkpoint。
32
+ - 历史名片读取兼容缺失 Schema、旧指纹/CN 和旧群单签,按签署时间核验证书并隔离历史兼容缓存;新上传及现代实体多签保持严格校验。
33
+ - group/org 名片改为实体私钥主签、当前 owner 使用本人 token 上传,可选追加 owner 附签;移除实体额外 V2 上传授权,拒绝 owner 直接替代实体主签。
34
+ - 多签上传和重试保留原始字节;普通正文更新保留既有 owner/ownership 材料并使用原 ETag CAS。下载协商 `multi-v1`,兼容响应头大小写,304 缺少本地正文时重新获取。
35
+
36
+ #### Ownership 2.1 共识与恢复
37
+ - 权威读取核对 NS 原 ETag、owner 当前完整原文、摘要和存在性,使用 head/get/head 并在验签后复读;30 秒观察窗口包含首次网络等待,不再以 Storage `revision/object_id` 作为共识依据。
38
+ - owner.md 改走上传会话、HTTP PUT 和 `complete_upload`,使用 `expected_version` 条件提交;写前复查原件,CAS 冲突保留为 conflict,共识结果移除 `owner_md_revision`。
39
+ - pending 绑定起始完整快照和原始声明,不能因 owner 或数字版本相同复用旧审批;release 保持 base 版本,sub 清理后投影归零,新绑定从 1 开始,未清理的旧 release 不覆盖新关系。
40
+ - released 共识、恢复及清理均复核当前文件和新鲜证书状态;不能仅凭解锁认定完成或补造历史完成证据。损坏任务保留并失败关闭,其他 subject 任务仍可恢复。
41
+ - 补齐 PKI critical extension、BasicConstraints、KeyUsage 和路径长度校验,当前权威证书读取不复用历史兼容缓存或接受重定向。
42
+
43
+ #### 凭证、组织请求与实体恢复
44
+ - `request_binding` 最长 300 秒,admission 不超过成员 binding 截止时间;完整 verify 返回前重查异步等待后可能过期的凭证、状态证明和请求绑定,复用本轮已解析证书及限流结果。
45
+ - 已有合法 `client_signature` 保留并核对实际请求,冲突直接拒绝;服务事件限制白名单,规范化 AID 大小写并去重目标集合。
46
+ - 组织门面分离本地 `aidStore` 参数时保留显式 null;转让缺少替代成员材料先拒绝,checkpoint 已存在但私钥丢失时不生成替代密钥。
47
+
48
+ ### 兼容性与语言边界
49
+
50
+ - 显式登记允许 agent 不指定 owner;human 仍禁止 owner,group/org 仍要求 owner,无 owner 的 agent 不创建 Ownership 待续跑意图。
51
+ - 签验和证书解析继续使用异步 WebCrypto;文件输入使用浏览器对象/句柄,持久草稿和 Ownership 任务使用 IndexedDB,不引入 Node.js 路径接口。
52
+ - 包配置、锁文件、运行时 `VERSION`、V2 envelope 的 `sdk_version` 及加密 conformance 期望统一为 `0.5.20`。
53
+
54
+ ### 测试
55
+
56
+ - 扩展通用签验、多签原文、历史证书、离线草稿、损坏元数据、Ownership 原件 CAS/清理重绑、请求时效及实体恢复测试。
57
+ - 扩展 namespace 并发、后台续拉、末页 ACK、volatile cursor、已读事件逐处理器代次隔离和定向设备 bootstrap 测试,并更新浏览器离线 Ownership 用例。
58
+ - 共享 Ownership 向量和 cross-SDK agent 接入公开 Store 签验;增加四语言签验及 Name Service 多签矩阵入口,测试落点与执行边界见 Python parity 文档。
59
+
60
+ ## 0.5.19 — 2026-10-12
10
61
 
11
62
  > 基线:`0.5.18` 的仓库快照 `1f03bf2d`;本节整理 2026-10-11 工作区的 SDK 增量。
12
63
 
@@ -49,82 +100,82 @@
49
100
  - 扩展已读状态门面、单调缓存、身份切换、重连补偿、组织实体身份及服务事件验签测试;配套单域、浏览器、cross-SDK 和双域测试入口列于 Python parity 文档。
50
101
 
51
102
  ## 0.5.18 — 2026-10-06
52
-
53
- ### 新功能
54
-
55
- #### Owner relation 与 AID 注册编排
56
- - 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
57
- - 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
58
- - 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
103
+
104
+ ### 新功能
105
+
106
+ #### Owner relation 与 AID 注册编排
107
+ - 新增 `register({aid, type, owner?, ...})`,由 SDK 编排 `auth.aid_register_prepare` → `auth.aid_register_submit` → 带 `ownerOperationId` 的 agent.md 上传 → `auth.aid_register_activate`;保留 `register(aid)` 的 legacy 兼容语义。
108
+ - 新增 `bindAid`、`getAidBindingStatus`、`resumeAidBinding` 和 `changeOwner`,分别覆盖已有 `legacy_unbound`/`unbound` AID 的绑定、状态查询、operation 恢复和三方换 owner;绑定不重新签发证书。
109
+ - 注册规则明确 human 不得指定 owner,非 human 必须指定 owner,只有 agent 支持 self-owner;外部 owner 需要 subject 与 owner 双签,换 owner 需要旧 owner、subject、新 owner 签名及 `expected_relation_version` CAS。
59
110
  - 新增 ownership proof canonical bytes、`factHash`/`statementHash`、UUID v4 `proofId` 和签名封套校验;AID 统一规范化为小写,普通 agent.md 更新保留现有 proof,不能通过普通 PUT 改 owner。
60
- - owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
61
-
62
- #### Owner relation Storage 与审计门面
63
- - 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
64
- - `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
65
-
66
- ### 修复
67
-
68
- #### 证书与签名安全
69
- - `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
70
- - RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
71
-
72
- #### V2 消息同步与投递
73
- - P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
74
- - inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
75
- - 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
76
-
77
- #### 会话、设备与连接生命周期
78
- - 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
79
- - 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
80
-
81
- ### 改进
82
-
83
- - 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
84
- - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
85
-
86
- ### 测试
87
-
88
- - 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
89
- - 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
90
- - 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
91
-
92
- ## 0.5.17 — 2026-09-19
93
-
94
- ### 新功能
95
-
96
- #### 非持久消息与设备定向
97
- - 正 `ttl` 的 V2 加密消息会透传到最终发送 RPC;`storage=volatile` 消息使用独立 volatile cursor 拉取和 ACK,不进入持久 `seq`、seq-tracker 或持久水位。
98
- - Push、Pull 和 sender IK 延迟恢复共用按消息去重及并发占用状态;纯 volatile 页可独立续页,cursor epoch 不匹配时清空旧 cursor 并重试一次,切换 AID、设备或 slot 时重置本地 volatile 状态。
99
- - `message.v2.pull` / `message.v2.ack` 接入公开调用管线和实例上下文校验;`message.ack` 支持只提交 `volatile_cursor(s)` / `volatile_ids`。
100
- - V2 `message.send` 支持 `device_id` / `to_device_id` 定向接收设备,同时保留发送方 self-sync 和 audit recipients;应用消息公开规范化的 `sender_device_id`,不再暴露内部 slot 字段。
101
-
102
- #### 群管理与 agent.md 事件
103
- - `GroupFacade` 新增 `block`、`unblock`、`getBlocklist`、`reportStatus` 和 `getMemberStatuses`;屏蔽、禁言和成员状态可通过高层 SDK 直接调用。
104
- - 远端 agent.md 已有版本的 ETag 或 Last-Modified 变化时,通过应用事件管线发布 `agentmd.changed`。
105
-
106
- ### 修复
107
-
108
- #### Storage / Group FS 上传 Content-Type
109
- - `writeBytes`、`uploadFile` 和 Group FS 上传在未显式指定类型时按实际字节识别 MIME,并以路径后缀作为回退。
110
- - 上传会话、HTTP PUT 和 `completeUpload` 使用同一 Content-Type;保留 session 的其它 header 并替换冲突的 Content-Type,修复 OSS 预签名校验不一致导致的 403。
111
-
112
- #### 群身份恢复
113
- - 匿名群创建在 RPC 前持久化群密钥并复用稳定的 `_create_request_id`,响应丢失后的重试不会重复创建群;命名群恢复可复用已保存身份。
114
- - 新群主收到 `owner_transfer_rekey_pending` 后只自动完成一次转让;重连时即使服务端角色仍为 member,也会按本地 pending 状态续跑 `complete_transfer`。
115
-
116
- ### 改进
117
-
118
- - Message、SendResult、PullResult 和 AckResult 类型补充 volatile 元数据、cursor、ACK 结果及 `sender_device_id`;`status` 接受 `accepted`。
119
- - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.17`。
120
-
121
- ### 测试
122
-
123
- - 增加 volatile Push/Pull/ACK、纯 volatile 分页、cursor 恢复、并发去重、定向设备和公开字段边界测试。
124
- - 增加群屏蔽/禁言/成员状态、匿名创建幂等、群主转让自动完成与恢复测试,并扩展浏览器 E2E 覆盖。
125
- - 增加 Storage/Group FS MIME 与 Content-Type 一致性测试及 conformance 版本验证。
126
-
127
- ## 0.5.16 — 2026-09-16
111
+ - owner operation 有效期为 7 天;pending、失败或过期期间证书、登录、连接和基本消息通信保持可用,关系状态可查询并从 operation ID 恢复。
112
+
113
+ #### Owner relation Storage 与审计门面
114
+ - 补齐 `storage.relation_backup_provision`、`relation_backup_revoke`、`relation_backup_status` 的 SDK 契约和集成验证;关系目录固定为 `.aun/subjects/<lowercase_subject_aid>`,撤销只回收 ACL、保留数据并递增 ACL generation。
115
+ - `MessageFacade` 和 `GroupFacade` 新增 `getAuditStatus`,统一映射对应的审计状态 RPC。
116
+
117
+ ### 修复
118
+
119
+ #### 证书与签名安全
120
+ - `AID.sign` 拒绝无效、过期或尚未生效证书;新增 `verifyWithContext`,绑定 expected AID、完整证书指纹、签名时间及当前有效性选项。
121
+ - RPC client signature、事件签名和 agent.md 签名路径增加证书有效期检查,并统一处理 `signature_verification_unavailable`、`type_change_blocked`、`aid_binding_required` 等关系错误。
122
+
123
+ #### V2 消息同步与投递
124
+ - P2P/Group V2 Pull 增加有界生产者消费者流水线、volatile cursor 去重、epoch mismatch 单次重试和后台 gap fill;`background_sync` 关闭时不再隐式启动后台补齐。
125
+ - inline push 在终态解密失败时仍提交连续序号并保留 ACK pending;Push、Pull、sender IK 延迟恢复共用去重和并发占用状态,减少交错投递重复。
126
+ - 当前设备 self-sync 消息只推进本地发布序号而不重复投递,其它设备仍可收到;公开 payload 保留 `sender_device_id` 和 `direction`,继续隐藏内部 slot 字段。
127
+
128
+ #### 会话、设备与连接生命周期
129
+ - 加强 slot ID/full slot ID 隔离,支持 long/short connection、short TTL 和 `background_sync` 组合;重连任务增加所有权、代际保护和旧连接结果隔离。
130
+ - 连接阶段暂存 Push,待应用监听器注册后排空,降低 `delivery.changed` 丢失和竞态;补齐多设备明文 P2P/Group self-sync 边界。
131
+
132
+ ### 改进
133
+
134
+ - 四端公开类型和结果继续对齐 volatile cursor、ACK、设备来源及审计状态;当前 CA/Name Service 仅实现 `signing` 与 `group_identity` 证书用途,`org_identity` 不作为已实现能力暴露。
135
+ - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.18`。
136
+
137
+ ### 测试
138
+
139
+ - 新增 ownership proof 四端 golden vector、大小写 AID、非法 UUID/控制字符和跨 SDK 验签测试。
140
+ - 增加 JavaScript owner relation 集成测试,覆盖新注册、self-owner、外部 owner 双签、legacy bind、operation 恢复、换 owner、unbind、Storage ACL/数据保留和重建访问。
141
+ - 扩展证书有效期、上下文验签、审计 facade、V2 Pull/Push、volatile 分页、设备隔离、连接代际和浏览器 E2E/conformance 测试。
142
+
143
+ ## 0.5.17 — 2026-09-19
144
+
145
+ ### 新功能
146
+
147
+ #### 非持久消息与设备定向
148
+ - 正 `ttl` 的 V2 加密消息会透传到最终发送 RPC;`storage=volatile` 消息使用独立 volatile cursor 拉取和 ACK,不进入持久 `seq`、seq-tracker 或持久水位。
149
+ - Push、Pull 和 sender IK 延迟恢复共用按消息去重及并发占用状态;纯 volatile 页可独立续页,cursor epoch 不匹配时清空旧 cursor 并重试一次,切换 AID、设备或 slot 时重置本地 volatile 状态。
150
+ - `message.v2.pull` / `message.v2.ack` 接入公开调用管线和实例上下文校验;`message.ack` 支持只提交 `volatile_cursor(s)` / `volatile_ids`。
151
+ - V2 `message.send` 支持 `device_id` / `to_device_id` 定向接收设备,同时保留发送方 self-sync 和 audit recipients;应用消息公开规范化的 `sender_device_id`,不再暴露内部 slot 字段。
152
+
153
+ #### 群管理与 agent.md 事件
154
+ - `GroupFacade` 新增 `block`、`unblock`、`getBlocklist`、`reportStatus` 和 `getMemberStatuses`;屏蔽、禁言和成员状态可通过高层 SDK 直接调用。
155
+ - 远端 agent.md 已有版本的 ETag 或 Last-Modified 变化时,通过应用事件管线发布 `agentmd.changed`。
156
+
157
+ ### 修复
158
+
159
+ #### Storage / Group FS 上传 Content-Type
160
+ - `writeBytes`、`uploadFile` 和 Group FS 上传在未显式指定类型时按实际字节识别 MIME,并以路径后缀作为回退。
161
+ - 上传会话、HTTP PUT 和 `completeUpload` 使用同一 Content-Type;保留 session 的其它 header 并替换冲突的 Content-Type,修复 OSS 预签名校验不一致导致的 403。
162
+
163
+ #### 群身份恢复
164
+ - 匿名群创建在 RPC 前持久化群密钥并复用稳定的 `_create_request_id`,响应丢失后的重试不会重复创建群;命名群恢复可复用已保存身份。
165
+ - 新群主收到 `owner_transfer_rekey_pending` 后只自动完成一次转让;重连时即使服务端角色仍为 member,也会按本地 pending 状态续跑 `complete_transfer`。
166
+
167
+ ### 改进
168
+
169
+ - Message、SendResult、PullResult 和 AckResult 类型补充 volatile 元数据、cursor、ACK 结果及 `sender_device_id`;`status` 接受 `accepted`。
170
+ - SDK、锁文件、运行时版本、V2 E2EE envelope `sdk_version` 和 conformance 期望统一更新为 `0.5.17`。
171
+
172
+ ### 测试
173
+
174
+ - 增加 volatile Push/Pull/ACK、纯 volatile 分页、cursor 恢复、并发去重、定向设备和公开字段边界测试。
175
+ - 增加群屏蔽/禁言/成员状态、匿名创建幂等、群主转让自动完成与恢复测试,并扩展浏览器 E2E 覆盖。
176
+ - 增加 Storage/Group FS MIME 与 Content-Type 一致性测试及 conformance 版本验证。
177
+
178
+ ## 0.5.16 — 2026-09-16
128
179
 
129
180
  ### 修复
130
181