@agentunion/fastaun 0.5.33 → 0.5.35

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 (113) hide show
  1. package/CHANGELOG.md +59 -2
  2. package/README.md +28 -26
  3. package/_packed_docs/CHANGELOG.md +59 -2
  4. package/_packed_docs/INDEX.md +26 -12
  5. package/_packed_docs/KITE_DOCS_GUIDE.md +17 -11
  6. package/_packed_docs/agent.md/SCHEMA.md +1 -1
  7. package/_packed_docs/aun/346/265/213/350/257/225/350/277/220/350/241/214/346/214/207/345/215/227.md +2 -2
  8. package/_packed_docs/protocol/03-Gateway-/350/277/236/346/216/245/346/250/241/345/274/217.md +58 -8
  9. package/_packed_docs/protocol/Ownership/345/215/217/350/256/256/345/256/232/344/271/2112.1.md +17 -17
  10. package/_packed_docs/protocol/echo-probe-gateway.md +99 -0
  11. package/_packed_docs/protocol/echo-probe-sdk.md +91 -0
  12. package/_packed_docs/sdk/0.5.33-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +464 -316
  13. package/_packed_docs/sdk/0.5.33-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +499 -304
  14. package/_packed_docs/sdk/0.5.34-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +133 -0
  15. package/_packed_docs/sdk/0.5.34-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +107 -0
  16. package/_packed_docs/sdk/0.5.35-SDK/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +189 -0
  17. package/_packed_docs/sdk/0.5.35-SDK/345/274/200/345/217/221/344/270/216/347/247/273/346/244/215/346/214/207/345/215/227.md +204 -0
  18. package/_packed_docs/sdk/01-/345/277/253/351/200/237/345/274/200/345/247/213.md +16 -13
  19. package/_packed_docs/sdk/03-/346/240/270/345/277/203/346/246/202/345/277/265.md +13 -1
  20. package/_packed_docs/sdk/04-/350/277/236/346/216/245/344/270/216/350/256/244/350/257/201.md +19 -9
  21. package/_packed_docs/sdk/06-API/346/211/213/345/206/214.md +87 -20
  22. package/_packed_docs/sdk/09-collab-rpc-manual.md +48 -30
  23. package/_packed_docs/sdk/09-custody-api-manual.md +3 -3
  24. package/_packed_docs/sdk/09-group-rpc-manual.md +60 -13
  25. package/_packed_docs/sdk/09-message-rpc-manual.md +22 -0
  26. package/_packed_docs/sdk/09-meta-rpc-manual.md +2 -1
  27. package/_packed_docs/sdk/09-payload-reference.md +9 -8
  28. package/_packed_docs/sdk/09-proxy-rpc-manual.md +20 -14
  29. package/_packed_docs/sdk/09-storage-rpc-manual.md +1698 -1659
  30. package/_packed_docs/sdk/09-stream-rpc-manual.md +33 -20
  31. package/_packed_docs/sdk/AUN_DOCS_GUIDE.md +19 -17
  32. package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/272/224/347/224/250/351/233/206/346/210/220/346/214/207/345/215/227.md +125 -30
  33. package/_packed_docs/sdk/AUN/344/272/213/344/273/266/345/217/221/345/270/203/350/256/242/351/230/205/345/274/200/345/217/221/347/247/273/346/244/215/346/214/207/345/215/227.md +109 -33
  34. package/_packed_docs/sdk/INDEX.md +30 -18
  35. package/_packed_docs/sdk/Ownership-SDK/347/274/226/346/216/222/346/214/207/345/215/2272.1.md +1 -1
  36. 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 +5 -5
  37. 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 +5 -5
  38. package/_packed_docs/sdk/Ownership2.1/350/257/246/347/273/206/350/256/276/350/256/241.md +9 -9
  39. package/_packed_docs/sdk/README.md +11 -6
  40. package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/345/256/236/346/226/275/350/256/241/345/210/222.md +400 -0
  41. package/_packed_docs//346/266/210/346/201/257/345/274/271/346/200/247/350/241/245/346/213/211/351/200/232/351/201/223/346/226/271/346/241/210.md +485 -0
  42. package/dist/auth.js +39 -45
  43. package/dist/auth.js.map +1 -1
  44. package/dist/client/control-messages.js +2 -2
  45. package/dist/client/control-messages.js.map +1 -1
  46. package/dist/client/delivery.d.ts +12 -1
  47. package/dist/client/delivery.js +281 -46
  48. package/dist/client/delivery.js.map +1 -1
  49. package/dist/client/lifecycle.js +13 -1
  50. package/dist/client/lifecycle.js.map +1 -1
  51. package/dist/client/rpc-budget.d.ts +21 -0
  52. package/dist/client/rpc-budget.js +82 -0
  53. package/dist/client/rpc-budget.js.map +1 -0
  54. package/dist/client/rpc-pipeline.d.ts +5 -0
  55. package/dist/client/rpc-pipeline.js +227 -63
  56. package/dist/client/rpc-pipeline.js.map +1 -1
  57. package/dist/client/sync-channels.d.ts +90 -0
  58. package/dist/client/sync-channels.js +508 -0
  59. package/dist/client/sync-channels.js.map +1 -0
  60. package/dist/client/v2-e2ee.d.ts +5 -1
  61. package/dist/client/v2-e2ee.js +420 -303
  62. package/dist/client/v2-e2ee.js.map +1 -1
  63. package/dist/client.d.ts +17 -0
  64. package/dist/client.js +373 -50
  65. package/dist/client.js.map +1 -1
  66. package/dist/events.d.ts +1 -0
  67. package/dist/events.js +5 -0
  68. package/dist/events.js.map +1 -1
  69. package/dist/index.d.ts +3 -1
  70. package/dist/index.js +1 -0
  71. package/dist/index.js.map +1 -1
  72. package/dist/mail-client.d.ts +101 -0
  73. package/dist/mail-client.js +369 -0
  74. package/dist/mail-client.js.map +1 -0
  75. package/dist/pubsub/binding.js +23 -3
  76. package/dist/pubsub/binding.js.map +1 -1
  77. package/dist/pubsub/channel.d.ts +15 -3
  78. package/dist/pubsub/channel.js +114 -7
  79. package/dist/pubsub/channel.js.map +1 -1
  80. package/dist/pubsub/client.d.ts +17 -2
  81. package/dist/pubsub/client.js +205 -40
  82. package/dist/pubsub/client.js.map +1 -1
  83. package/dist/pubsub/credentials.d.ts +3 -0
  84. package/dist/pubsub/credentials.js +57 -20
  85. package/dist/pubsub/credentials.js.map +1 -1
  86. package/dist/pubsub/index.d.ts +5 -2
  87. package/dist/pubsub/index.js +70 -54
  88. package/dist/pubsub/index.js.map +1 -1
  89. package/dist/pubsub/service.d.ts +9 -0
  90. package/dist/pubsub/service.js +266 -20
  91. package/dist/pubsub/service.js.map +1 -1
  92. package/dist/pubsub/types.d.ts +13 -1
  93. package/dist/storage/lowlevel.d.ts +3 -1
  94. package/dist/storage/lowlevel.js +13 -0
  95. package/dist/storage/lowlevel.js.map +1 -1
  96. package/dist/storage/types.d.ts +10 -0
  97. package/dist/storage/types.js.map +1 -1
  98. package/dist/storage/vfs.d.ts +3 -1
  99. package/dist/storage/vfs.js +2 -2
  100. package/dist/storage/vfs.js.map +1 -1
  101. package/dist/tools/cross-sdk-agent.d.ts +55 -5
  102. package/dist/tools/cross-sdk-agent.js +88 -21
  103. package/dist/tools/cross-sdk-agent.js.map +1 -1
  104. package/dist/transport.d.ts +16 -0
  105. package/dist/transport.js +129 -7
  106. package/dist/transport.js.map +1 -1
  107. package/dist/udp-standby.d.ts +89 -0
  108. package/dist/udp-standby.js +487 -0
  109. package/dist/udp-standby.js.map +1 -0
  110. package/dist/version.d.ts +1 -1
  111. package/dist/version.js +1 -1
  112. package/package.json +5 -1
  113. package/scripts/patch-imapflow-external.mjs +69 -0
@@ -0,0 +1,400 @@
1
+ # 消息弹性补拉通道实施计划
2
+
3
+ > 日期:2026-11-08。状态:既有实现持续验收;本轮单辅助连接与 namespace 串行规则正在实施,历史通过记录不证明新规则通过;64 个跨 SDK 基础矩阵 case 均已有通过 attempt,原首败仍保留并由独立 retry38 新 trace 验证;控制面四 SDK 在线开关、S13 水位/公平性定向验收通过。资源性能、旧 SDK 在线兼容、完整场景及阶段门仍未全部验收完成。
4
+ > 依据:[消息弹性补拉通道方案](消息弹性补拉通道方案.md)。范围:控制面板、Gateway、Message/Group、Python、Go、TS/Node、JS/Browser。
5
+
6
+ ## 1. 交付目标与边界
7
+
8
+ 长期离线积压通过辅助短连接补拉,主长连接继续承担正常 RPC、实时通知、ACK 和必要管理消息。业务继续使用现有 Facade,由一个 AUNClient 内部协调主辅通道。
9
+
10
+ | 交付项 | 必须达到的结果 |
11
+ | --- | --- |
12
+ | 面板开关 | 在控制面板配置 Gateway 的“启用弹性补拉通道”,经现有配置中心持久保存,页面重载、Gateway 重启后仍保留 |
13
+ | 动态授权 | 本轮 Gateway 向双能力协商成功的 SDK 动态授权 0/1 条;开关关闭必为0,开启时授权上限为1,压力仍可降为0或回收;同一 Gateway 的 `(aid, device_id)` 跨 slot、主会话合计最多1条。SDK 遵从策略支持0..N,现有协议测试到2 |
14
+ | 策略闭环 | 所有 Pull 触发入口先处理最新策略;暂停后 Gateway 主动通知恢复;收缩时通知并回收连接 |
15
+ | 共享状态与资源 | 身份、游标、去重、解密、提交、ACK 及额度属于主 client;增加连接不增加资源份额 |
16
+ | 正确性 | 同 namespace 网络 Pull 串行、不同 namespace 可在策略与预算允许时并行复用辅助连接;各流协调提交并公平推进;历史缺口、稀疏序号、主会话换代及迟到页面均按既有语义处理 |
17
+ | 验收 | 四 SDK 分别验收,再完成四发送端×四接收端矩阵、真实浏览器及 Ubuntu Docker 测试 |
18
+
19
+ 实施边界沿用方案:辅助连接仍需认证;Message/Group 维护分页、可见性、覆盖证明和确认,不管理辅助连接或 EventService 订阅业务。首版主辅连接绑定同一 Gateway 实例或已有亲和路径。
20
+
21
+ ### 1.1 控制面板与持久化规则
22
+
23
+ 配置键为 `sync_channels_enabled`,布尔值,缺省为 `true`,已有显式 `false` 保持关闭;该开关只控制弹性辅助通道,不关闭消息同步。连接数只在承接主连接的 Gateway 内合计,当前不跨 Gateway 全局统计;同设备最多1条,不同设备可分别使用1条。SDK进程池每AID最多2条、总计最多8条;这些连接数与主辅共享的总16、background 8、event 4、pull 4 RPC预算及历史Pull最多3并发分别计量。
24
+
25
+ | 操作或状态 | 运行行为 |
26
+ | --- | --- |
27
+ | 开启 | 双能力协商成功的在线会话收到新策略;Gateway 按实时压力给出 0/1,同一 Gateway 内 `(aid, device_id)` 跨 slot、主会话合计最多 1 条,有积压且满足本地预算时 SDK 申请通道 |
28
+ | 关闭 | Gateway 立即禁止新增辅助连接,下发 `max_aux_channels=0`,通知既有辅助通道排空或取消后关闭 |
29
+ | 关闭后的历史补拉 | 回到主通道小页、低优先级补拉,仍受历史在途和速率限制;历史额度为 0 时继续暂停 |
30
+ | 页面刷新或服务重启 | 从配置中心读取已保存的有效配置;Gateway 在接受辅助注册前完成配置加载 |
31
+ | 保存失败 | 不显示保存成功,不把本次草稿作为有效运行配置 |
32
+ | 已保存但部分实例未应用 | 面板区分配置修订与实例生效状态;实例恢复配置链路后按最新有效版本收敛 |
33
+ | 关闭后再次开启 | 恢复申请资格,不主动为没有积压的 client 建连,不复活已失效主会话 |
34
+
35
+ 复用现有配置 schema、修订、绑定、发布和实例应用链路。作用域沿用现有 Gateway 配置规则,不新设按 AID 的持久开关表。配置修订号与每个主会话的 `sync_policy.version` 分别管理。
36
+
37
+ 仅修改此开关时热应用,不重启 Gateway,不中断主连接。Launcher 比较配置摘要时只排除 `sync_channels_enabled`;其它冷配置或混合改动继续执行原重启流程。热应用期间保留旧实际版本,只有诊断中的实例、目标配置版本和 `enabled` 全部匹配后才报告新实际版本。复用既有 watch 与生命周期检查,不新增定时任务。
38
+
39
+ ```mermaid
40
+ sequenceDiagram
41
+ actor O as 管理员
42
+ participant C as 控制面板
43
+ participant P as 配置中心
44
+ participant G as Gateway
45
+ participant S as SDK主连接
46
+ O->>C: 修改弹性补拉开关并发布
47
+ C->>P: 按既有流程校验、持久保存配置修订
48
+ P-->>C: 保存结果与修订号
49
+ P->>G: 分发有效配置
50
+ G->>G: 更新准入规则和各主会话策略版本
51
+ G-->>S: 策略通知,关闭时附通道回收通知
52
+ S->>S: 先安装策略,再伸缩或回收
53
+ G-->>P: 按既有链路报告应用结果
54
+ C->>P: 查询保存及实例生效状态
55
+ ```
56
+
57
+ ### 1.2 实施期间始终成立的约束
58
+
59
+ - 主辅合计:总 RPC 16、background 8、event 4、pull 4;历史 Pull 最多占 3,保留实时/前台 Pull 位置。
60
+ - Gateway 的零值暂停对主辅历史请求都生效;SDK 不用主连接绕过历史暂停。
61
+ - 先预留消费容量和内存,再请求页面;编码字节预算与解密后本地内存预算分别执行。
62
+ - EventService 的 64 条/64 MiB 保持原适用范围,不作为普通补拉的现有容量。
63
+ - 不新增周期策略查询、需求心跳、独立 token 刷新或完整 client 后台任务;仅使用按需冷却/空闲/排空期限。
64
+
65
+ ## 2. 阶段与依赖
66
+
67
+ ```mermaid
68
+ flowchart LR
69
+ P0["P0 契约与失败用例"] --> P1["P1 四端共享预算与分页边界"]
70
+ P0 --> P2["P2 Gateway策略与面板持久开关"]
71
+ P1 --> P3["P3 单辅助通道与统一提交"]
72
+ P2 --> P3
73
+ P3 --> P4["P4 动态0/1与回收公平性"]
74
+ P4 --> P5["P5 Ubuntu Docker与四端验收"]
75
+ ```
76
+
77
+ P0 固定后,四 SDK 的 P1 可以并行,P2 的 Gateway 与控制面工作可以并行。P3 必须等待预算和服务端准入通过;P4 必须等待单辅助链路正确。每个阶段均按失败用例→最小实现→受影响回归推进,阶段门未通过不进入下一阶段验收。
78
+
79
+ ### P0:协议、配置与共同测试向量
80
+
81
+ | 编号 | 任务 | 交付与通过条件 |
82
+ | --- | --- | --- |
83
+ | P0-1 | 固定 `elastic_connections_v1`、`sync_channels_v1`、主辅认证字段、内部同步用途标识和辅助方法白名单 | 认证主体、device、slot、主会话绑定、建连中计数、两层能力未协商行为一致;具体方法逐项列明 |
84
+ | P0-2 | 固定 `_meta.sync_policy` 与控制通知契约 | 完整快照、版本安全整数、零值/缺省、乱序策略、旧页与旧会话区别明确 |
85
+ | P0-3 | 列出所有直接/间接 Pull 触发入口 | 对照实际方法和事件制作清单,覆盖认证、目录、通知、页面、ACK、发送结果及错误响应;每项都有观察顺序断言 |
86
+ | P0-4 | 固定面板开关 schema 和配置应用流程 | 核实配置存储、有效作用域、发布/应用结果、重启加载位置;明确默认开启、显式关闭保留与动态生效契约 |
87
+ | P0-5 | 固定硬字节边界与存储范围选择 | 明确单条超页的可恢复结果及读取路径;明确持久/volatile 分流参数与旧端兼容,避免空页死循环 |
88
+ | P0-6 | 整理语言无关向量并记录旧行为基线 | 四端使用同一输入/输出期望;先补能复现额度倍增、过期策略派发及回收误重连的失败用例 |
89
+
90
+ **阶段门 G0:** 协议及配置字段没有双重含义,S01—S28 已分配测试层和责任端;新增契约断言在旧实现上按预期失败。普通 RPC、单连接补拉和内存基线记录完整。
91
+
92
+ ### P1:共享调度、消费背压与分页边界
93
+
94
+ | 编号 | 任务 | 依赖 | 交付与通过条件 |
95
+ | --- | --- | --- | --- |
96
+ | P1-1 | 将四端 Transport 内资源额度收口为 client 共享预算 | P0-6 | 主辅两个 Transport 仍共享 16/8/4/4;历史最多 3;原单连接行为通过 |
97
+ | P1-2 | 统一会话公平调度与资源预留 | P1-1 | SDK 遵从策略支持0..N条辅助、现有协议测试到2;同 namespace 网络 Pull 串行,不同 namespace可按授权并行;共享16/8/4/4、历史最多3及字节/速率预算,跨流轮转,续页排队尾;无消费额度不派页 |
98
+ | P1-3 | 四端实现共享字节和对象内存预算 | P1-1、P0-5 | 在途、密文、解析、明文、预取和待提交均计入;取消/超时/拒绝/半页断线释放预留 |
99
+ | P1-4 | Message/Group 执行页条数与硬编码字节上限 | P0-5 | 第一条超大消息也有确定处理结果;覆盖证明完整,不静默跳过或反复空页 |
100
+ | P1-5 | 落实历史与 volatile 的存储范围选择 | P0-5 | 历史辅助查询与主通道必要处理正确分流;原设备/slot/服务租约过滤和 volatile cursor/TTL 保持 |
101
+
102
+ **TDD重点:** 先构造多 Transport 额度累加、慢消费持续发页、首条超限及取消后预算泄漏,再实现共享控制。Gateway 限额前,SDK 本地已有的约束也必须成立。
103
+
104
+ **阶段门 G1:** 不启用辅助连接时回归通过;模拟多通道时额度与内存保持有界;Message/Group 新旧分页请求均通过。不得用每条连接一份预算替代共享控制。
105
+
106
+ ### P2:Gateway 权威策略与控制面开关
107
+
108
+ | 编号 | 任务 | 依赖 | 交付与通过条件 |
109
+ | --- | --- | --- | --- |
110
+ | P2-1 | 主会话策略状态与主辅原子注册 | P0-1、P0-2 | 校验认证 AID/device/slot 及双能力;同一 Gateway 内 `(aid, device_id)` 跨 slot、主会话建立中和已建立合计最多 1 条;注销、拒绝、主失效正确释放 |
111
+ | P2-2 | 按 AID 聚合请求、字节、速率和公平份额 | P2-1、P0-5 | 多设备/多主会话/多辅助不能增加 AID 总份额;服务端即时拒绝或暂停超额历史准入 |
112
+ | P2-3 | 统一对外帧的策略注入和四 SDK 观察入口 | P0-3、P2-1 | Gateway 发出时附最新策略;SDK 在 Future/Promise 完成、事件分发和后续调度之前观察 |
113
+ | P2-4 | 策略变更通知与暂停恢复 | P2-2、P2-3 | 历史在途/速率为 0 时不派发;无业务流量时主动通知可以恢复,无轮询探测 |
114
+ | P2-5 | 配置中心注册开关并接入面板 | P0-4 | 现有配置页可编辑布尔值、保存和重读;复用权限及持久化流程,不只写进程内变量 |
115
+ | P2-6 | Gateway 启动加载及运行时应用配置 | P2-4、P2-5 | 重启保持配置;仅开关变更热应用且主连接不中断;冷/混合改动沿原重启流程;实例/版本/开关确认后报告实际应用 |
116
+ | P2-7 | 剥离非权威同名外层字段 | P2-3 | 仅 Gateway 注入的认证连接元数据影响授权,不改签名正文;业务字段同名不改变策略 |
117
+
118
+ **TDD重点:** 先断言“响应回调即发 Pull”也已看到暂停;两个并发辅助申请与关闭开关只能按当前额度准入;保存失败不能显示成功;保存成功后重启仍为原值。
119
+
120
+ **阶段门 G2:** 面板→持久配置→Gateway 准入→在线策略通知闭环通过;所有 P0-3 入口逐项有证据;不能仅验证 Pull 正常响应这一条路径。
121
+
122
+ ### P3:一条辅助连接的完整正确链路
123
+
124
+ | 编号 | 任务 | 依赖 | 交付与通过条件 |
125
+ | --- | --- | --- | --- |
126
+ | P3-1 | 四 SDK 增加内部辅助 Transport 生命周期 | G1、G2 | 仅授权且有需求时建立;复用主 client token 来源,不重复登录、注册密钥或启动维护任务 |
127
+ | P3-2 | 将适用历史任务派给辅助连接 | P3-1 | 只将普通持久 Forward Pull 按 P0 白名单调度,目录/状态留主连接;普通 RPC、实时通知及 ACK 保留主路径 |
128
+ | P3-3 | 主辅接入统一校验、解密、提交与 ACK | P3-2 | 既有 A/T/H、coverage、去重、密钥依赖不分叉;worker 不直接 ACK 下载最大 seq |
129
+ | P3-4 | 主会话代际、token 更新、断线和超时恢复 | P3-3 | 同主会话旧策略页可正常处理;主替换后的旧页不提交/ACK;辅助失败不使主 client 下线 |
130
+ | P3-5 | 持久/volatile、聊天回填与指令顺序回归 | P3-3、P1-5 | 聊天可合并最新窗口;顺序指令等待同流缺口;过期 volatile 不补,独立管理处理可推进 |
131
+
132
+ **阶段门 G3:** Gateway 仅授权 1 条时,四端各完成单 peer、多 peer、群消息、加密依赖及故障恢复;增加连接没有产生新的游标、解密状态所有者或应用分发器。
133
+
134
+ ### P4:动态伸缩、通知回收与公平性
135
+
136
+ | 编号 | 任务 | 依赖 | 交付与通过条件 |
137
+ | --- | --- | --- | --- |
138
+ | P4-1 | 0/1 伸缩与发送前原子复核 | G3 | 并发触发、建连中降额、配置快速切换均不越权;更严格策略立即执行 |
139
+ | P4-2 | 需求摘要和回收排序 | P4-1 | 通过请求及状态变化通知维护需求;区分无需求空闲、等待消费/密钥、正在传页;未知需求不当作无需求 |
140
+ | P4-3 | Gateway 主通道通知与有界排空 | P4-2 | 先通知再正常回收,优先确认无需求且最久空闲者;到期取消,不等待应用 ACK |
141
+ | P4-4 | 四端目标通道退役与重连抑制 | P4-3 | 重复/乱序通知幂等;关闭辅助自动重连;完整页可提交、半页不 ACK;主 client 持续在线 |
142
+ | P4-5 | 按需扩容、空闲归还及进程内多 AID 预算 | P4-1、P4-4 | 冷却避免抖动;多 Agent 不各自开满;有任务且授权恢复才重新申请;计时器随任务结束释放 |
143
+ | P4-6 | 持续历史负载下的普通 RPC 和跨流公平 | P4-5、P2-2 | 有限负载夹具中所有可运行流持续推进,额外连接不增加主体份额,主路径资源预留可观测 |
144
+
145
+ **阶段门 G4:** S07—S12、S16、S19、S21—S28 通过;无定时探测、需求心跳、无任务重建或辅助回收引发的登录失败。
146
+
147
+ ### P5:Ubuntu Docker 验收与交付
148
+
149
+ | 编号 | 任务 | 依赖 | 交付与通过条件 |
150
+ | --- | --- | --- | --- |
151
+ | P5-1 | 对齐四端类型、协议向量与实现差异 | G4 | wire 字段、版本处理、预算、关闭/恢复行为相同;仅保留语言命名和运行环境差异 |
152
+ | P5-2 | 四 SDK 分别验收 | P5-1 | Python、Go、TS/Node、JS/Browser 分别给出功能、恢复、内存和构建结果 |
153
+ | P5-3 | 跨 SDK 发送/接收矩阵 | P5-2 | 16 个组合分别验证 P2P、群、离线积压与恢复,不用同语言测试代替跨语言 |
154
+ | P5-4 | 受控性能与网络变化测试 | P5-2 | 记录普通 RPC P95、吞吐、RSS/堆、队列、在途字节、连接/认证次数及公平性结果 |
155
+ | P5-5 | 新旧兼容、配置重启与多 Gateway 生效 | P5-2 | 无新能力沿用原路径;有作用域覆盖时显示实际有效配置;主迁移重新取得策略 |
156
+ | P5-6 | 更新协议与 SDK 指南,整理证据 | P5-3—P5-5 | 控制面开关、辅助用途、通知、预算、边界及四端差异可查;完成条目均有对应命令与结果 |
157
+
158
+ **阶段门 G5:** S01—S28 无未解释失败;四端独立验收、跨 SDK、真实浏览器及受控性能结果完整。未执行、跳过、失败不得标记通过。
159
+
160
+ ## 3. 实施落点与测试落点
161
+
162
+ 以下 SDK 路径相对 `aun-sdk-core/`;服务端与面板路径相对仓库根。列表是修改定位,不要求重写整文件;新增内部组件或测试文件仅在实际拆分确有必要时确定。
163
+
164
+ | 责任端 | 现有代码入口 | 对应验证入口 |
165
+ | --- | --- | --- |
166
+ | 控制面板/配置链路 | `extensions/services/aun_console/web/src/views/ControlCenter.vue`、`web/src/lib/configDraft.ts`;Console Go 的 `internal/httpserver` 配置路由,向后追踪现有配置中心 schema、修订及应用链路 | 既有 `configDraft.test.mjs`、Console handler 测试、面板真实浏览器保存/重读;配置中心与 Gateway 重启集成 |
167
+ | Gateway | `extensions/services/gateway/go/internal/httpserver/server.go`、`internal/clientws/state.go`、`internal/events/dispatcher.go` 及现有配置消费入口 | `internal/httpserver/server_test.go`、`internal/clientws` 和 dispatcher 原测试;Go race 与受影响包检查 |
168
+ | Message/Group | `extensions/services/message/go/internal/p2p/pull.go`;Group 实际 Pull handler、分页与 coverage 实现 | 现有 Pull/分页/保留期/设备过滤测试;超大单条及存储范围契约 |
169
+ | Python | `python/src/aun_core/transport.py`、`_client/rpc_pipeline.py`、`_client/lifecycle.py`、`_client/delivery.py`、`events.py`、`seq_tracker.py` | `python/tests/unit/test_push_service_lifecycle_contract.py`、`test_seq_tracker.py` 及现有调度测试;`python/tests/integration_test_transport_isolation.py` |
170
+ | Go SDK | `go/transport.go`、`client_rpc_pipeline.go`、`client_lifecycle.go`、`events.go`、`seq_tracker.go` | `go/transport_test.go`、`inline_lifecycle_generation_test.go`、`push_service_lifecycle_contract_test.go`、`seq_tracker_test.go`;race |
171
+ | TS/Node | `ts/src/transport.ts`、`src/client/rpc-pipeline.ts`、`src/client/lifecycle.ts`、`src/client/delivery.ts`、`src/events.ts` | `ts/tests/unit/transport.test.ts`、`transport-connect-race.test.ts`、`rpc-pipeline.test.ts`、`lifecycle-controller.test.ts`;`tests/integration/transport-isolation.test.ts` |
172
+ | JS/Browser | `js/src/transport.ts`、`src/client/rpc-pipeline.ts`、`src/client/lifecycle.ts`、`src/client/delivery.ts`、`src/events.ts` | `js/tests/unit/transport-background.test.ts`、`rpc-pipeline-semantic.test.ts`、`lifecycle-controller.test.ts`;真实浏览器 `tests/e2e-browser/transport-isolation.spec.ts` |
173
+ | cross-SDK | `tests/cross-sdk/runner/` 与四端既有测试 agent | 扩展现有消息/恢复场景配置,逐组合保留机器可读结果 |
174
+
175
+ 控制面板已有布尔配置编辑能力,应优先扩展 Gateway 配置 schema 与既有应用链路;只有现有页面无法表达保存/生效结果时,才修改对应界面。配置持久化位置及热更新接收点在 P0-4 精确登记,不能把 Console 的任意状态库当成配置真源。
176
+
177
+ ## 4. 场景与验收追踪
178
+
179
+ S01—S24 与方案编号保持一致;S25—S28 补充控制面配置。已完成的定向验证见第 9.4 节;逐场景 E2E 验收仍需记录测试 ID、适用 SDK、命令、构建版本及证据。
180
+
181
+ | 场景 | 主要阶段 | 验证层 | 通过标准 |
182
+ | --- | --- | --- | --- |
183
+ | S01 单 peer 巨大积压 | P3 | 单测、四端 E2E | 同流协调提交,ACK 只前进到可靠覆盖水位 |
184
+ | S02 多 peer/多群 | P1、P4 | 调度单测、E2E | 独立流轮转,续页不长期占用 worker |
185
+ | S03 历史期间持续新消息 | P3 | 四端 E2E | A/T/H、初始目标、聊天回填及顺序指令符合既有语义 |
186
+ | S04 普通 RPC 并发 | P4、P5 | 受控性能 | 同网络/负载下 P95 增幅目标≤无补拉基线 20%;绝对门槛在 P0 基线确定 |
187
+ | S05 慢消费/解密/磁盘 | P1、P3 | 单测、资源 E2E | 停止新页派发,条数和字节预留有界,无持续内存增长 |
188
+ | S06 所有 Pull 触发入口 | P0、P2 | 契约、集成 | 逐入口证明先观察策略,后完成回调/分发/调度 |
189
+ | S07 授权 0→1→0→1 | P4 | 四端 E2E | 不多开;历史暂停时不借主通道绕过 |
190
+ | S08 策略乱序与重复 | P2、P4 | 四端单测、集成 | 旧策略不回退;同主会话合法旧页仍可提交 |
191
+ | S09 主连接替换/迁移 | P3、P5 | 生命周期单测、E2E | 旧主会话页不提交、不 ACK;新会话重新取策略 |
192
+ | S10 建连中降额 | P2、P4 | 竞态单测、集成 | 建立中与已建立合计不超额,释放计数准确 |
193
+ | S11 无业务流量恢复 | P2、P4 | E2E | Gateway 主动通知唤醒积压,无周期探测 |
194
+ | S12 辅助断线/超时 | P3、P4 | 故障注入 E2E | 从安全游标恢复,主 client 在线,资源不泄漏 |
195
+ | S13 稀疏/重复/保留边界 | P1、P3 | 分页单测、E2E | 使用覆盖证明,不猜连续 seq,不跳确认或无限重试 |
196
+ | S14 单条超大消息 | P0、P1 | 契约、四端 E2E | 硬上限成立;有确定恢复路径,无空页循环或静默跳过 |
197
+ | S15 群状态/密钥/volatile | P1、P3 | 四端 E2E | 群依赖和设备可见性正确;volatile 独立游标及 TTL 保持 |
198
+ | S16 多 AID/设备/连接 | P2、P4 | 公平性单测、压力 E2E | 同一 Gateway 内 `(aid, device_id)` 跨 slot、主会话辅助合计最多 1 条,不同设备分别计数;未双能力协商不授权,历史资源仍按 AID 聚合 |
199
+ | S17 新旧组合 | P2、P5 | 兼容集成 | 未协商不创建新通道;既有主路径可用;Gateway 仍实施总体保护 |
200
+ | S18 四端与 cross-SDK | P5 | 独立 E2E、矩阵 | 四端分别签收,再完成 16 个组合及相应场景 |
201
+ | S19 延迟/带宽变化 | P4、P5 | 受控网络性能 | 有真实收益记录;冷却有效,无连接/认证风暴 |
202
+ | S20 非权威同名策略 | P2 | 受控契约单测 | 业务/远端同名元数据不更改授权,不修改签名正文 |
203
+ | S21 空闲回收优先级 | P4 | 排序单测、集成 | 确认无需求最先回收;等待消费或未知需求不冒充空闲无需求 |
204
+ | S22 通知/关闭乱序 | P4 | 四端单测、E2E | 指定通道幂等退役,主在线,不立即自动重建 |
205
+ | S23 完整/半页回收 | P3、P4 | 故障注入 E2E | 完整合法页按约定提交;半页不 ACK,释放预留并保留任务 |
206
+ | S24 需求变化竞态 | P4 | 单测、集成 | 新需求不丢任务;归属及在途核验正确,无周期心跳 |
207
+ | S25 保存/重读/重启 | P2、P5 | 面板与配置 E2E | 页面重开及 Console/Gateway 重启后开关值保持;启动先加载后准入 |
208
+ | S26 在线开关及快速切换 | P2、P4 | 四端 E2E | 关闭立即禁止新辅助并通知排空;旧配置不回退;开启无需求不建连 |
209
+ | S27 保存失败及生效状态 | P2、P5 | handler、面板 E2E | 未授权/保存失败不误报成功;已保存与实例未应用可区分,恢复后收敛 |
210
+ | S28 多 Gateway 配置范围 | P2、P5 | 分布式 Docker | 按既有作用域应用;跨实例生效版本可核对;主迁移后服从目标实例策略 |
211
+
212
+ ## 5. 四 SDK 独立验收与跨 SDK 矩阵
213
+
214
+ ### 5.1 分别签收
215
+
216
+ | SDK | 必须单独完成 | 结果状态 |
217
+ | --- | --- | --- |
218
+ | Python | 协议向量、共享额度/背压、0/1、通知回收、代际、P2P/Group/E2EE、构建及受影响检查 | 本机定向及 Ubuntu S07/S16 单辅助夹具通过,见9.5;完整服务验收待完成 |
219
+ | Go | 同上;增加资源释放和共享状态并发检查、受影响包 race | 本机定向及 Ubuntu S07/S16 单辅助 race 夹具通过,见9.5;完整服务验收待完成 |
220
+ | TS/Node | 同上;Node 实际 WebSocket、类型检查与构建,不用 TS/JS 共用结论替代 | 本机定向及 Ubuntu S07/S16 单辅助夹具通过,见9.5;完整服务验收待完成 |
221
+ | JS/Browser | 同上;真实浏览器 WebSocket、构建与类型检查;验证浏览器挂起恢复,不能依赖 Node 专属 API | 本机定向及 Ubuntu S07/S16 单辅助 Chromium 夹具通过,见9.5;完整服务验收待完成 |
222
+
223
+ ### 5.2 发送端×接收端
224
+
225
+ 每格分别保留消息生成端与补拉接收端的版本及结果。四个同端组合做基准,其余十二个组合做跨 SDK 验收。64 项 P2P/Group×明文/E2EE 基础矩阵已逐 case 对账通过:原37项、独立 retry38 新 trace、remaining39 中26项合计64个唯一 case ID;原第38项首次超时仍保留为历史失败,不被重试结果覆盖。各次构建来源和 checkpoint 分开记录;这些历史结果不证明本轮单辅助连接与 namespace 串行规则通过。
226
+
227
+ | 发送端\补拉接收端 | Python | Go | TS/Node | JS/Browser |
228
+ | --- | --- | --- | --- | --- |
229
+ | Python | 见checkpoint | 见checkpoint | 见checkpoint | 见checkpoint |
230
+ | Go | 见checkpoint | 见checkpoint | 见checkpoint | 见checkpoint |
231
+ | TS/Node | 见checkpoint | 见checkpoint | 见checkpoint | 见checkpoint |
232
+ | JS/Browser | 见checkpoint | 见checkpoint | 见checkpoint | 见checkpoint |
233
+
234
+ 每格覆盖 P2P 与群、明文与既有 E2EE、离线积压与持续新消息、辅助断线及安全恢复。动态策略、主会话换代、配置关闭回收另按接收端四种实现逐一验收;不能只跑 16 次普通收发就宣称 S01—S28 覆盖完成。
235
+
236
+ ## 6. Ubuntu Docker 执行顺序与证据
237
+
238
+ 1. **核实环境。** 按[默认测试指南](aun测试运行指南.md)及[分布式指南](aun分布式测试运行指南.md)选定 Ubuntu Docker 环境,记录 Compose、域名、project、镜像和数据挂载;本机源码是唯一源头。
239
+ 2. **记录基线。** 同一批数据、网络及负载分别测原单通道、开关关闭和开启;普通 RPC 基线为相同前台负载且无后台补拉,另保留单通道补拉对照。历史数据规模、流数、平均/最大消息大小和消费速率固定并记录。
240
+ 3. **先完成定向单测。** 服务端/Console、四 SDK 分别先通过契约、调度、竞态及类型/lint/构建检查,再部署集成环境。Python 命令带 `-X utf8`,Go 对受影响并发路径跑 race。
241
+ 4. **同步并重建。** 本机修改同步至 Ubuntu;Gateway、Message/Group、配置中心或 Console 有变更时重建对应镜像并重启,不把旧镜像结果记为新实现证据。
242
+ 5. **功能验收。** 先契约集成,再四 SDK 分别 E2E、真实浏览器,随后 cross-SDK 矩阵;使用 `{svc}.{issuer}` 服务地址。
243
+ 6. **配置与故障验收。** 实际执行面板保存、重读、Gateway 重启、在线关闭、暂停后无业务恢复、半页断线及主替换;分布式环境验证配置作用域和主迁移。
244
+ 7. **受控性能。** 逐级增加积压流、消息大小、消费延迟和测试网络延迟/带宽约束;同时发送正常 RPC、实时消息及租约请求。测试只作用于隔离环境。
245
+ 8. **断点续跑。** 首个失败立即停在该项,修复后从该项继续;已通过且不受改动影响的项目不重跑,受影响的契约或调度路径必须回归。
246
+
247
+ | 指标 | 采集与判定 |
248
+ | --- | --- |
249
+ | 普通 RPC | 同样本量、稳态窗口与网络条件记录 P50/P95/P99、错误和超时;P95 增幅目标≤20%,不通过降低样本量掩盖尾延迟 |
250
+ | 追赶效果 | 积压完成时间、历史吞吐、实时到达延迟;分别列 0/1 实际授权结果,不能将更多连接直接等同更高吞吐 |
251
+ | 内存与队列 | 峰值及稳态 RSS/堆、预留/实占字节、队列条数、在途页;达到背压后不随积压总量继续线性增长 |
252
+ | 公平性 | 各 AID/设备/流的调度次数、最长等待与进度;固定有限竞争集中的可运行流不得持续零进度 |
253
+ | 连接成本 | 建连、TLS/认证次数、回收原因与重试次数;无需求不建连,关闭后不抢重连 |
254
+ | 定时任务 | 比较开关前后任务/计时器;只存在尚有需求的冷却、空闲或排空期限,结束后释放 |
255
+ | 配置证据 | 配置修订、有效作用域、各实例应用版本、主会话策略版本、重启前后读值及回收记录 |
256
+
257
+ 每条证据至少包含:任务/场景编号、SDK、代码差异标识、镜像构建标识、环境、准确命令、预期/实际、状态及日志路径。性能阈值和样本设计在 P0 登记后保持一致;失败不能只记“偶现”。
258
+
259
+ ## 7. 启用、兼容与回退
260
+
261
+ 部署支持新契约且缺省开启的服务端,保留已有显式关闭配置;先验证未协商 SDK 及显式关闭、旧 Gateway 条件下的既有路径,再验证协商成功时的动态 0/1,以及同一 Gateway 内 `(aid, device_id)` 跨 slot、主会话合计最多 1 条。
262
+
263
+ | 组合或操作 | 验收要求 |
264
+ | --- | --- |
265
+ | 新 SDK+旧 Gateway | 无 `sync_channels_v1` 时不申请辅助连接,沿用原主通道 |
266
+ | 旧 SDK+新 Gateway | 原方法及响应可用,新增外层元数据不破坏解析;服务端总体保护仍生效 |
267
+ | 新 SDK+新 Gateway,开关关闭 | 不申请辅助连接,普通补拉及 RPC 可用 |
268
+ | 面板关闭回退 | 配置持久保存并下发在线会话;既有辅助通知排空,任务从安全游标回到允许的主通道路径 |
269
+ | Gateway 重启或主会话迁移 | 已保存配置恢复;附属旧代际作废,新主会话重新协商并取得目标实例策略 |
270
+
271
+ 协议字段上线后保持兼容;回退不删除消息、游标或配置历史,不改变原消息确认契约。
272
+
273
+ ## 8. 实施完成清单
274
+
275
+ - [ ] G0:契约、面板开关、所有触发入口和共同失败向量冻结。
276
+ - [ ] G1:四端共享预算与背压、Message/Group 分页边界及存储范围通过。
277
+ - [ ] G2:Gateway 权威策略、配置持久化、启动加载及动态应用通过。
278
+ - [ ] G3:四端单辅助链路、统一提交、代际与故障恢复通过。
279
+ - [ ] G4:动态 0/1、通知回收、公平性及按需计时器通过。
280
+ - [ ] G5:Ubuntu Docker 四端独立、16 组合、真实浏览器、兼容和性能验收通过。
281
+ - [ ] S01—S28 逐项具有结果及证据,所有失败已修复或明确为未交付。
282
+ - [ ] RPC/连接协议、SDK 集成与移植指南、配置说明及索引同步,实施状态如实更新。
283
+
284
+ 方案、协议、SDK 和服务端实现已有部分定向验证;以上完整阶段门尚未全部验收,通过范围与未完成项见第 9.4 节。
285
+
286
+ ## 9. 实施契约冻结与进度
287
+
288
+ 2026-11-08 已按本计划实施 Gateway、Message/Group、四 SDK 及控制面开关。四端辅助断线、S14 超页停流与恢复、最终 bundle 的真实 Chromium、64项跨 SDK 基础矩阵及控制面四 SDK 在线开关均已有对应通过证据;单独修改 `sync_channels_enabled` 热应用后,主连接 ID 和 Gateway 实例 ID 保持不变。资源性能、旧 SDK 在线兼容、持久化重启和多 Gateway 等完整场景仍待验收,阶段门尚未全部通过。
289
+
290
+ ### 9.1 能力与用途
291
+
292
+ 用户明确弹性连接未来可承载其它用途。本轮将通用能力与补拉用途分开:
293
+
294
+ | 字段 | 冻结规则 |
295
+ | --- | --- |
296
+ | `elastic_connections_v1` | 通用弹性辅助连接能力,主辅连接均需声明并协商;提供认证、主会话绑定、动态授权与回收基础 |
297
+ | `sync_channels_v1` | 本轮历史补拉用途的协议能力;与通用能力均协商成功且有效配置允许后,才可申请补拉辅助连接 |
298
+ | `options.purpose=history_sync` | 当前受支持的用途;后续其它用途另行定义方法白名单与额度,复用主辅生命周期 |
299
+ | `options.parent_connection_id` | 必须绑定相同已认证 AID、device、slot 的有效主会话 |
300
+ | 请求 `_meta.sync` | `{purpose:"history_sync",parent_connection_id,has_pending:true}`;主通道历史回退也携带,额度不因换 socket 改变 |
301
+ | 响应 `_meta.sync_policy` | 当前补拉用途的权威快照,字段见方案;不是未来所有用途共用的业务策略结构 |
302
+ | 通知 | `event/gateway.sync_policy_changed`、`event/gateway.sync_channel_close`;需求使用 `gateway.sync_demand` Notification |
303
+
304
+ 当前只实现 `history_sync` 的业务用途,未知用途不自动获得补拉方法权限。未协商通用能力、未协商补拉能力、面板关闭分别验收;原普通短连接用途保持兼容。
305
+
306
+ ### 9.1.1 辅助断线退回主连接
307
+
308
+ 用户明确:弹性/补拉连接断线后不自动重连,相关操作退回主连接。辅助 Transport 不启动自动重连;协调器也不能以冷却重试的方式为同一批待补任务自动补开连接。
309
+
310
+ 断线时未完整接收的页不提交、不 ACK,保留安全游标;当前主会话仍有效时,使用主连接重试同一受限历史请求,沿用剩余 deadline、共享额度和最新策略。主连接历史额度为 0 时等待 Gateway 恢复通知,不借回退绕过暂停;主会话已经改变则按原代际取消,不向新会话提交旧结果。
311
+
312
+ 当前主会话/策略授权下记录辅助故障状态,后续任务使用主路径;只有新的 Gateway 策略明确重新授予辅助资格或新的主会话协商后才可再次按需申请。未变更的重复快照不解除故障状态。正常主动回收同样不触发 Transport 自动重连;空闲无需求时不补开。
313
+
314
+ 自然断线、RPC 失败和建连失败锁定实际请求或连接使用的版本;主动 `sync_channel_close` 优先锁定通知附带的合法权威策略版本,没有合法匹配策略时退回目标连接的实际使用版本。旧版本请求晚失败、旧关闭通知晚到,均不得锁住已经获得的新策略资格。
315
+
316
+ 四端增加真实断线测试:辅助确实关闭、主连接 ID 保持、该请求及后续任务走主路径、连接计数不增长、暂停额度仍有效、旧页不越过 ACK。此规则优先于原文“冷却后重新申请”的一般描述。
317
+
318
+ ### 9.2 分页与预算共同口径
319
+
320
+ 共同向量位于 `tests/contracts/sync_channels_v1_vectors.json`(相对 SDK 根),四 SDK 使用同一份数据验证适用场景。
321
+
322
+ - `storage_scope` 支持 `all|persistent|volatile`,缺省 `all` 保持旧行为;`persistent` 不读取 volatile mailbox。
323
+ - `volatile` 专用页不携带持久 coverage/head/server ACK,也不接受 `ack_up_to_seq`;仅由共享 SDK 路径解码分发及更新 volatile cursor。
324
+ - `max_page_bytes` 显式值为 1024—786432;协商初始页预算 256 KiB、聚合在途编码预算 1 MiB。旧未指定请求保留旧分页行为。
325
+ - 本地历史共享预留预算初值 8 MiB,以页编码上限的 8 倍预留并贯穿消费;同时采集实际对象/堆使用,预留倍数不等同于 RSS 精确上限。
326
+ - 单条超过页预算返回 `OVERSIZED_MESSAGE`,不推进游标;SDK 明确上报该流错误,停止无进展续页。大对象引用走原有读取方式,不悄悄提高 Gateway 授权预算。
327
+
328
+ `max_page_bytes` 按 RPC `result` 的 JSON 编码字节计量;JSON-RPC 信封及 Gateway 元数据另保留有界开销,不混入四端的结果长度比较。诊断 `history.reserved_bytes` 表示编码结果预留,`history.local_reserved_bytes` 表示本地放大预留,分别与编码额度及 8 MiB 本地额度比较。
329
+
330
+ 后台不可继续的超页错误统一向应用发布 `sync.error`,字段为 `namespace`、`method`、`code="OVERSIZED_MESSAGE"`、`error`;该流停止自动续页,其他流继续。显式前台调用继续返回原 RPC 错误,不能记录日志后无限重试,也不能为绕过错误推进 ACK。
331
+
332
+ ### 9.3 测试桥诊断
333
+
334
+ 四端测试桥提供 `GET /sync/channels/state`,至少包含 `policy`、`main_connected`、`channels`、`history.inflight`、`history.reserved_bytes`、`history.aux_completed_pages`、`counters.aux_connects/aux_closes`、`metrics.rss_bytes`。只计真实辅助连接返回的成功页面,不能用主连接页面冒充专用通道证据。
335
+
336
+ cross-SDK 以 16 个发送/接收组合,分别覆盖 P2P/Group 和明文/E2EE;同语言组合也使用不同发送身份,避免断开补拉接收端时把发送端一起关闭。
337
+
338
+ ### 9.4 已有验证证据与未完成验收
339
+
340
+ 下表只记录已执行范围,历史重叠集合不累计;SDK 本地测试通过不等同于 Ubuntu E2E 通过。
341
+
342
+ | 范围 | 已有结果与边界 |
343
+ | --- | --- |
344
+ | Python | 既有同步/背景额度定向103 passed、Client选择9 passed;辅助通道诊断状态回归70 passed,空连接ID统一为`connecting`。本轮`demand=true`先通知修复最终105 passed/2 skipped、相关回归5项通过;`sync_channels.py`冻结SHA为`d7ff55fa4decf760ad8adc1dc69b35d57a78e25e44bbe3f8d3948930d5d99704`,上述修复已随下述统一runtime部署。Ruff受影响范围、compileall与差异检查通过;重叠集合不累计,Transport整文件既有45项lint无新增 |
345
+ | Go | 既有同步/预算定向50个顶层测试、含子测试86项通过,版本竞态与断线三项连续10轮通过。Ubuntu SyncChannels/observer定向race通过(25.632s)、主辅共享预算race通过(1.084s),两种桥构建的`go vet`通过。逐次解密重复写IK修复在Ubuntu离线Docker中34项及2个子用例race、vet和crosssdk build通过,已部署两Go测试桥并核验进程SHA,证据`go-ik-isolated-20261107T191807Z-de46fd/`;新第38项260条回调首末1950ms,仅记功能时限验证。本轮demand与禁辅助Ping修复定向、race及vet通过,已随下述统一runtime部署;主包全量原结果1778 passed/2旧夹具失败/3 skipped,仅将`client_test.go`两处`scan_after_seq`从0改为7后,两项原失败及5项相关回归、vet通过;保留原红证据,未将定向绿测记为全量重跑通过,重叠集合不累计 |
346
+ | TS/Node | 辅助诊断状态35/35、真实辅助observer定向63项、类型检查和build通过。最终源码与产物随1324文件快照同步核验;本轮S13 floor补丁在Ubuntu离线构建及294项定向回归通过(含5项S13),最小3文件已部署两TS测试桥,证据`ts-floor-isolated-20261107T193245Z-fc8608/`。真实断线与S14结果单列,未以JS结果替代TS验收 |
347
+ | JS/Browser源码 | 辅助诊断状态/背景通道90/90;超页重复`sync.error`以3个既有文件最小修复,TDD先红后绿,受影响712项、类型检查及Browser build通过。最终bundle另完成真实Chromium定向验收。本轮修复逐次解密查询重复写IK,session在本机及Ubuntu离线Docker中38/38通过,tsc及Browser build通过;本机证据`js-ik-hotpath-20261107T191928Z/`,已部署本任务两JS测试桥,385个产物文件SHA一致,后续矩阵待续跑。重叠测试不累计 |
348
+ | Launcher | 控制监督单测文件137 passed;生命周期/受控启动两个文件104 passed;py_compile、Ruff关键错误检查及差异检查通过。仅开关热应用、精确诊断确认和冷/混合重启已有回归;Ubuntu四SDK在线开关E2E通过,Gateway切换前后PID均为66;此前135项为历史计数;缺省开启与显式关闭保留的Linux定向18 passed,复用既有热应用与冷/混合重启边界,证据`default-enabled-linux-frozen-20261108T095337Z/result.json` |
349
+ | Console | Gateway开关持久化与参数校验定向1项通过;配置草稿Node测试4/4通过。S27真实Chromium页面503和匿名401通过,3次配置SHA一致、合法配置写入0;真实SQLite保存失败handler本机及Ubuntu离线验证通过;恢复驱动本机/Ubuntu各71项通过,隔离B未应用→同实例恢复已在Ubuntu通过,见`s27-b-only-20261108T032300Z/`;本轮缺省开启、持久化及作用域优先级的Ubuntu离线3个顶层`-race`测试与vet通过,证据`default-enabled-linux-frozen-20261108T095337Z/result.json`,不计作在线配置场景验收 |
350
+ | Gateway | 分页附加字段预留修复已部署,Ubuntu定向race 20个顶层测试及`go vet`通过。writer完成回调与普通RPC互等`writeMu`已用atomic计数最小修复,TDD先红后绿,Ubuntu 62个顶层race及vet通过并部署;含2→1→0→2真实WebSocket压力回归。本轮S10/S20/S21/S24新增4个顶层回归Ubuntu `-race -count=10`、全部`TestSync -race`及vet通过,111文件SHA核对;证据`s10-s20-s21-s24-race/`,重叠集合不累计;本轮缺省开启、显式关闭保留及仅双能力协商成功可用的Ubuntu离线2个顶层`-race`测试与vet通过,证据`default-enabled-linux-frozen-20261108T095337Z/result.json`;该包162个冻结源码及9个工作区文件SHA一致。同Gateway内AID+设备跨slot共享辅助上限的Linux全部`TestSync -race`,按执行stdout记录为28个顶层、含子测试60 passed及2个外部夹具skipped;无独立artifact,不记为E2E |
351
+ | Message/Group | 可信`_auth.pull_response_row_overhead_bytes`已计入整页、裁剪和首条超限判断,保留游标/coverage与Gateway最终硬上限;Ubuntu Message 28、Group 12个顶层race及vet通过。首次空volatile cursor改为空字符串后,Ubuntu cmd 8、P2P 28个顶层race/vet通过并部署。Group `UseNumber`+`json.Number`页预算修复已加载,RPC 5、Service 12个顶层定向race及vet通过;全包race检出既有handler `_auth` map竞争,未扩修。本轮基于488文件冻结源修复4条SQL的`TO_BASE64` LF,真实MySQL Red→Green、定向race、vet及build通过,派生镜像已部署并完成Chromium冷SPK恢复 |
352
+ | Runner | 既有75 passed及游标摘要52 passed;S14后续修复持久Pull统计混入volatile与Go采样过快触发本地8/s保护,两次TDD后最新35 passed。S13 新增水位/公平性证据回归定向14 passed,相关 Python `py_compile`、TS/JS `npx tsc --noEmit` 和 `git diff --check` 通过;Group 水位摘要保留 retention 与 join 信息,finite runner 按 raw Pull 顺序记录各流进展及最长观测间隔,并拒绝未覆盖目标水位的结果。沿原 checkpoint 续跑,不重发已接受消息,原失败与清理记录保留;分页字段验收新增Forward三标志、volatile-only双标志与Tail契约验证,184项观察/29项batch回归通过;测试桥在回调入口绑定观察窗口,保留实际重复记录。S15 native真实验收继续;重叠集合不累计;最终`resume2/runner-validation.result.json`记录707个唯一节点按484/21/1/1/200分段断点通过,索引完整且无重复;不是全量重跑,缺`cases.inbox-migration.json`及fsync拖慢0.3秒deadline的两次原首败保留,完整来源为`sdk-s05-final-incremental-20261108T045019Z-resume2/` |
353
+ | 构建与同步 | 分页修复803源码SHA一致;Gateway死锁与Message空cursor修复已部署,原运行镜像为`docker-deploy-kite:sync-volatile-cursor-20261107`(`ea0c856c3dbdbda94fbc03c15d8535b2a392e27b5a460ffb6ae364401ba2c8ff`),本轮已切换到下述LF修复镜像。Group页预算补丁运行二进制已核验进程SHA及attach日志,对应`docker-deploy-kite:sync-group-wire-budget-20261107`已构建(`e6bd5bbbd3ed828e0447da6a1711996fab85229b613d42b195e766ea1293515e`)。本轮LF修复派生镜像`docker-deploy-kite:sync-group-canonical-base64-20261108`已构建并部署(`68547bf16a49a621807baf4c83cf6448655e720641cb0d7f7beeb95ea93c3900`);部署前后身份挂载、数据库来源及环境键值不变,Group活进程SHA匹配候选产物。历史1324文件快照核对见`sdk-final-freeze-20261107T131552Z.verify.json`,不替代后续新增测试源码核对。前一版统一runtime `sdk-unified-runtime-s05-s09-20261108T021418Z/sdk`已保留八桥AID/device/slot、身份挂载及JS本地存储状态部署,进程/源码/产物SHA核验见该目录`deployment-result.json`和`deployment-sha-verification.json`;该版archive/manifest/provenance SHA256依次为`6cab1fe924022eae5883724af3ec94983bba7ce010a8a309ee5f54d3b115564b`、`404e694c341a2a9301577c1e0955028c96af089aa1fb0b3dbb8a0e2fd891dfa7`、`a80f5ebd6824e6192f986f1ed958835aa3b3e2d3d8e8b14ebf84ee897bb26211`;构建时`result.json`的not_deployed状态由后续部署证据更新;后续最终增量`sdk-s05-final-incremental-20261108T045019Z-resume2/`逐tar成员核对3313文件路径及内容SHA与manifest一致,仅11项overlay+Go桥二进制共12项差异;`deployment-result.json`为`deployed_identity_preserved`,更新Python/Go四桥,其余TS/JS四桥未变。归档/manifest/provenance SHA256依次为`32cb5f00506c7a3053a7638b88625d8dbe55276f6f6f57be1dc295d91d113f6b`、`4f67fc55ed525af8fc1cd8e1a7ac6125eaf6bc297d7f4c2eb1e47adcb81f65b5`、`e26246fa7d088761290d72b7b2b22f2e5bb9dd426284e17ca59c73608c57cebe`;源码/产物对应见`source-artifact-correspondence.json` |
354
+
355
+ 服务端证据位于 `docker-deploy/test-artifacts/sync-channels-20261107/`:`page-overhead-build/result.json`、`gateway-inline-deadlock-build/result.json`、`inline-writer-deployment.json`、`message-volatile-cursor-build/result.json`、`group-wire-budget-build/result.json`、`s10-s20-s21-s24-race/result.json`及本轮LF修复`group-base64-canonical-20261107T193845Z-c607f9/summary.json`;构建与部署按各自时间记录。Group原失败checkpoint修复后续跑完成260条,28个真实辅助成功页、local/server ACK均260;该RPC重叠采样只证明功能。Go测试JSON另见 `aun-sdk-core/tests/cross-sdk/artifacts/sync-go-build/go-sync-final-tests.json`,以上不替代完整服务回归。
356
+
357
+ Ubuntu控制面用例 `sync-console-persisted-toggle-four-sdk` 已通过:持久化关闭、开启并恢复原配置,四 SDK 主连接 ID 全程不变,策略辅助额度随开关在 0/2 之间更新,Gateway `service_instance_id` 保持不变;因此单独切换该配置不需要重启 Gateway。原始结果为 `attempt-20261107T105932Z-e9bc85d4/results.json`,本地归档 `docker-deploy/test-artifacts/sync-channels-20261107/control-toggle-results.json`。分页修复后,原 260 条 checkpoint 续跑全部交付,7 个真实辅助成功页,local/server ACK 均为 260;结果为 `attempt-20261107T115854Z-7f7d51a5/results.json`,本地归档同目录 `page-budget-python-resume-results.json`。该次只证明功能及 RPC 并行采样,不作为性能验收通过。
358
+
359
+ | 验收项 | 已有结果与剩余边界 |
360
+ | --- | --- |
361
+ | 四端辅助断线与跨SDK | 四端512条真实辅助断线已分段通过:Python在`attempt-20261107T122615Z-33af681d`内checkpoint completed,该父控制用例随后TS失败的整体判定保留;TS/JS/Go本地结果分别为`ts-volatile-cursor-resume-results.json`、`js-volatile-cursor-fault-results.json`、`go-volatile-cursor-fault-results.json`,辅助成功页7/5/3、local/server ACK均512,真实关闭后主ID/策略不变、配置恢复。64个基础矩阵唯一case均有通过attempt:原37项、retry38新trace及remaining39的26项;remaining39本地镜像与远端SHA匹配,26/26通过且配置恢复,原第38项首次失败仍保留。四端完整场景尚未签收 |
362
+ | 原Python512条失败与恢复 | 原失败`attempt-20261107T120003Z-8ce06439/results.json`保留:辅助断线后主连接续拉,inbox350/wire378,随后`meta.ping`写响应10秒超时。死锁修复部署后只读原checkpoint恢复全部512条,未重发,local/persisted/server ACK872;证据`old512-recovery-20261107T122444Z.json`及`.persisted.json`。恢复不改判旧故障用例,新的Python辅助断线证据单列 |
363
+ | 真实Chromium | 首轮`20261107T131417Z-a3940bec`通过;最终bundle复验`chromium-run-20261107T135932Z-a0c6c191/`的JSON报告为1 passed、0 skipped/flaky,browser/control exit0且配置恢复。独立附件与`verified-summary.json`证明辅助成功页1、剩209条时真实close、随后主路径5页;260条唯一ID/正文/seq/发送者正确,expected/server/local/persisted ACK均260,主ID/策略/辅助建连数不变 |
364
+ | S06/S08/S22路由、策略代际与关闭竞态 | Ubuntu私有快照中Python 24、TS 24、JS整文件114 passed/2 skipped、Go 24入口子测试及1项组合`-race`通过;本机Python 96/2、TS 61/2、JS 114/2 skipped,Ruff/tsc/vet通过。证据`s06-s08-s22-20261108/run-011211/result.json`。范围为真实Transport observer接coordinator的协议/单测,不连接AUN;JS为jsdom,最终存储ACK由既有E2E覆盖 |
365
+ | S07/S11动态授权、暂停恢复与主RPC | Ubuntu私有网络通过:真实NewServer Gateway、测试Auth/Message服务及四SDK真实认证/Transport/调度;Python/TS/Go/Chromium均通过,854个源码文件SHA匹配。验证额度0→1→2→0→2、暂停恢复期间不做SDK业务探测、主连接ID稳定、暂停时普通主连接ping可用、预算归零;JS实际运行Chromium。证据`s07-pressure-20261108/acceptance.json`。这是Gateway+SDK夹具验收,不是完整AUN服务E2E |
366
+ | S13水位与公平性证据 | 发现Go/TS/JS允许`floor`大于`scan/after`;局部生产修复后四端定向验证通过。本机Python 17、TS 371、JS 296、Go 8及vet通过;Ubuntu隔离测试Python 13、TS 5、JS 5、Go `-race` 8个顶层测试通过,451个源码与144个测试文件SHA匹配,`network=none`。新增 runner 定向14 passed,补齐 Python Group retention/join 水位摘要、请求窗口、peer 页连续覆盖到目标水位检查,以及基于 raw Pull 顺序的有限负载逐流进度/最长等待证据;不添加计划外数值门槛。首次 Python 快照缺`test_client.py` helper 导致失败,保留失败记录并续跑余下用例;定向测试不等于完整 AUN 服务 E2E。Group 晚加入设备的 visibility E2E 仍未覆盖。汇总`s13-peer-coverage-20261108/ubuntu/result.json`;归档`s13-summary.json` SHA256=`5A4DABB0E0DDA2C971E61769FEFF98DC668359670035D8C23E16483AF8CCF989` |
367
+ | S15密钥与群可见边界 | P2P旧epoch `0,nil`和Group `-32000`/data字段检查已通过;Go cold group SPK Ubuntu `-race`定向测试通过,日志`s13-peer-coverage-20261108/go-group-spk-restore-ubuntu.log`。Python/TS/JS cold定向各1项、TS/JS类型检查及Browser构建通过。原真实Chrome 3DH/device检出Group MySQL `TO_BASE64` LF,首败证据`s15-cold-spk-20261108/acceptance.json`保留。4条SQL修复已部署,运行镜像`68547bf16a49a621807baf4c83cf6448655e720641cb0d7f7beeb95ea93c3900`;真实Chromium冷恢复1 passed、0 skipped,证明IndexedDB原SPK私钥恢复、冷加载解密、History不推进ACK、Forward唯一回调及提交后ACK。证据`s15-cold-spk-final-20261108/{browser.playwright.json,js-browser.stdout.log}`,部署核验在该目录`deployment-20261108T020922Z/`;native验收继续,不签收整个S15 |
368
+ | S16跨主体公平与共享预算 | Ubuntu私有网络中真实NewServer Gateway+测试Auth/Message服务通过,Python、TS、Go race、JS jsdom及真实Chromium均exit 0,1000个源码SHA匹配。证据`s16-budget-20261108/result.json`;这是Gateway+SDK夹具验收,不是完整AUN服务E2E |
369
+ | S26在线开关及快速切换 | runner本机TDD 48 passed,Ruff/AST通过;Ubuntu真实E2E待共享runtime空闲后执行,当前仅实现及测试准备,不记为场景通过 |
370
+ | S23页面中断与回收 | Ubuntu隔离真实SDK+WebSocket协议夹具通过:Python 2项、TS 2项、Go race 1项、真实Chrome 1项;451个源码文件SHA匹配。证据`s23-partial-frame-20261108/`含机器报告与命令,运行`network=none`;范围是隔离集成,实际AUN服务E2E另行验收 |
371
+ | S03持续新消息 | 本机runner定向130 passed;显式来源准备脚本5项夹具、Ruff及Ubuntu来源核验通过,当前ready38/remaining26、matrix_complete=false,保持401×256B、live8/0.5秒、120秒。证据`s03-explicit-sources-20261107T194216Z-499338/`;真实S03 E2E未运行,与基础64项矩阵分别签收 |
372
+ | S17新旧兼容 | 旧 SDK→当前部署 Gateway 原运行 9 项通过,第 10 项旧 Go P2P E2EE 超时记录保留;`results/tmpfs-remaining/s17-old-client-20261107T211216Z-5996d2/result.json` 补跑剩余 7 项通过,16 个唯一 case 均已有通过记录。tmpfs 部分仅证明协议互通,不代替 Go 磁盘持久化验收。当前SDK→旧Gateway的8项P2P(四SDK×明文/E2EE)均已有通过记录,各128条且local/server ACK一致;Group首轮已建群并接受2条,第3条发送返回“操作结果未知”,已首败停止并核查,反向Group与整个S17尚未签收。证据位于`s17-isolated-20261107T192015Z-5cd05c/attempts/`:Python两项见`reverse-python-ts-checkpoint-resume-20261108T024015Z-1f8cc0/checkpoint/result.json`,其余六项见`reverse-final-new-js-device-20261108T031719Z-56e0fa/results/s17-new-client-20261108T031744Z-623752/result.json`;Group首败见`reverse-final-groups-20261108T031945Z-5821f0/results/s17-new-client-20261108T032544Z-485b0a/result.json`及该attempt的`runner.log`,原失败与未知发送记录保留 |
373
+ | S27已保存未应用与恢复 | Ubuntu独立B实例的node作用域配置验收通过:持久保存true后,暂停的B报告unknown;恢复后同PID、同service_instance_id精确应用该配置版本,再恢复false。共享service绑定保持原值,测试B及其新node绑定已清理。证据`s27-b-only-20261108T032300Z/{result.json,checkpoint.json,cleanup-api-proof.json,execution.log}`;此前页面503/401及SQLite保存失败证据保留,S25重启和S28迁移另行验收 |
374
+ | 性能与公平性 | 无补拉 RPC 基线各 40 样本:Python P95 4.782ms、TS 4.310ms、JS 3.298ms;Go 每秒采样,P95 5.343ms。S13 finite runner 已补各流 Pull 顺序、进度和最长观测间隔校验,实际负载未签收。S05先前缺`history.completed_pages`及netem清理字段的问题已修;后续窗口的重复记录已证含reset前阻塞回调,测试工具入口归属与提前连接时序按TDD修复,Go明文peer ACK的`seq`→`up_to_seq`字段修复及四端定向回归已通过,并随最终统一runtime部署。S05最终runtime窗口已运行,load尚未启动即首败停止,验收未签收;证据`s05-slow-consumer-prepared-runtime-v5-20261108T021534Z/executions/codex-s05-v5-fresh-20261108T032000Z-enabled/result.json`,首败记录保留。该次 qdisc 已按容器/接口及队列归属精确清理,四接口恢复 `noqueue` 且无 filter,原失败保留,恢复证据为该次 `netem/manual-recovery-20261108.json`。S19 尚未运行;同负载开关对照、长期 RSS/堆及跨流公平性仍无完整结果 |
375
+ | S14与完整场景 | 四端S14已通过,证据`s14-final-evidence/attempt-20261107T135624Z-759e74bd/{results.json,s14-runtime-evidence.json}`:各3唯一回调、1次`sync.error`、停流不跳ACK、健康流继续,显式恢复后各1次真正persistent后续Pull。Go从原receiving继续,未重发且未重启桥;control恢复true、无恢复错误。64项基础矩阵逐case对账通过:原前37项、独立retry38新trace及remaining39中26项合计64个唯一case ID;原第38项120秒首次超时保留为失败历史。260条晚完成回调及ACK2075已只读归档,首末回调133341ms,原118快照辅助页增12、晚完成另增2,证据`late-completion-sync-ts-go-p2p-e2ee-20261107T191715Z-2d2e25a0/`。修复后新trace保持260×4096B及120秒限制并通过,9个真实辅助页、local/server ACK2335、260回调首末1950ms,本机证据`post-fix-retry38-evidence/post-fix-same-load-evidence/`;remaining39结果镜像已逐ID核对、配置恢复。有限负载/性能、S09、S15 native、S25/S28尚未完成;S15 Chromium冷SPK与S27同实例恢复已有独立通过记录,G0—G5和S01—S28总清单保持未签收 |
376
+
377
+ ### 9.5 本轮积压门槛、短连接与统计验收
378
+
379
+ 本轮补充如下冻结规则;第 9.4 节按原额度产生的历史数值和证据保留,不证明单辅助连接、namespace 串行及下列改动后的四 SDK 和 Ubuntu E2E 验收通过。
380
+
381
+ | 项目 | 验收标准 |
382
+ | --- | --- |
383
+ | Gateway连接上限 | 本轮 Gateway `max_aux_channels` 只取0/1;关闭开关必0,开启允许上限1,压力仍可降0/回收;同 Gateway 本 AID+设备跨 slot、主会话建立中及已建立合计最多1,每设备最多1 |
384
+ | SDK连接能力与RPC并发 | SDK 遵从策略支持0..N条辅助,按已确认的当前协议上限 N≤2,拒绝大于2的策略;Gateway 本轮只下发0/1。进程池每AID最多2条、总计最多8条。同 namespace 网络 Pull 串行,不同 namespace 可按授权并行;主辅共享16/8/4/4、历史Pull最多3及字节/速率预算,不把当前 Gateway 每设备连接上限1解释成并发总1 |
385
+ | 四 SDK 多流门槛 | 当前真实待拉的唯一 peer/群消息/群事件流至少 4 条,当前请求属于其中才可使用辅助;同流重复入口只计一次,清空或失败后及时更新,不累计已拉条数 |
386
+ | 四 SDK 单流门槛 | 同流最新 `pending_count_lower_bound>=100` 且仍需续页;下界下降、缺省、0、迟到旧页及主会话换代均不保留过期资格 |
387
+ | 服务端下界 | 仅普通持久 Forward、带 `max_page_bytes`,复用本次已读取、可见且去重候选的未返回量,cap 100;Message 要求 `persistent`,Group 当前 `all` 也只含持久来源;排除 force/Tail/History/control/sdk_control/volatile 及 Message 持久/临时混合来源 |
388
+ | 无额外读取 | 不增加 RPC、SQL COUNT、查询、扫描或读取 limit;小正文 `limit+1` 只能证明 1、Group V2 可为 0,不补读凑阈值;完成仍用原分页证明 |
389
+ | 短连接 unread hint | 普通 short 与 `history_sync` 都不触发或接收 unread hint,不注册在线消息路由;主 long 正常收取提示,短连接显式 Pull 正常 |
390
+ | Token 与空闲 | 新辅助连接取主 client 最新有效 access token、剩余超过 30 秒,不为辅助另行登录/刷新;已认证连接不因原 token 自然到期立即断线。SDK 25 秒、Gateway 120 秒,四端空闲计时条件差异保留 |
391
+ | 当日补拉连接 | `traffic.daily_history_sync_connections` 按 UTC+8 自然日记录成功建连次数,同 issuer 共享,跨 Gateway 按 scope/date 取最新日最大值;失败不计、重建计次 |
392
+ | 在线补拉连接 | `traffic.connections.history_sync` 为本 Gateway 当前在线数,可相加;旧字段缺失显示 `—`,复用原分钟批量持久化,不加定时任务 |
393
+
394
+ 本轮进度:Gateway/Console 统计已完成定向验证;Console httpserver 全包与 vet、前端统计测试 9/9 及构建通过。已修复 Python 历史 Pull 别名未进入统一调度和同流串行、事件背景误入历史调度,以及 Group 短连接仍调度 unread hint 的问题。当前本机定向结果:Python 139 passed/2 skipped、TS 918 passed/2 skipped、JS 777 passed/2 skipped、Go 同步测试通过;Gateway、Message、Group 相关回归、TS/JS 类型检查、Python Ruff 与 Gateway/Group vet 通过;跨 SDK runner 同步定向 250 passed。以下前三项仅签收本机定向验证,更新后的完整 Ubuntu E2E 仍待验收。
395
+
396
+ - [x] Gateway 与四 SDK 本机定向验证单辅助上限、并发建连不超额、同 namespace 串行、不同 namespace 共享辅助并行、进程池 AID 2/总计8及原总体预算。
397
+ - [x] 四 SDK 本机定向通过 3→4 条流门槛、同流去重、流清空与失败释放、单流 99→100→0/缺省、迟到页和换代测试。
398
+ - [x] 服务端本机回归验证下界与最终字节截页一致,普通短连接和补拉辅助连接无 unread hint,显式 Pull 和 long 提示不受影响。
399
+ - [x] Ubuntu Docker S07/S16 单辅助 Gateway+SDK 夹具:Python、TS/Node、Go race、JS/Chromium 各两项通过;使用真实 `group.pull`、先暂停登记多群积压再恢复,验证0/1策略、暂停恢复、每设备1条、每AID2条及进程8条共享额度和等待任务推进。相关源码及测试10项SHA匹配,汇总为 `docker-deploy/test-artifacts/sync-channels-20261107/s07fix-20261108t180903z/final-validation.json`;夹具使用测试Auth/Group服务,不替代完整AUN服务E2E。
400
+ - [ ] Ubuntu Docker 使用本机最终源码构建,验证真实积压门槛、主连接回退及控制台当日/在线统计;首败停止、修复后断点续跑。