--- title: Checkpoint 2026-09-30 07:24:38 UTC [fd8b91d2c7] type: checkpoint permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-30-07-24-38-utc-fd8b91d2c7 stable_id: 0e41749e-828a-45e2-a309-5681dd2693e9 scope: project memory_type: checkpoint project_id: 25464650-ed5d-440e-b362-190f2852d451 usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 status: active revision: 1 request_id: chk-broker-b01-b12-20260930-1515 created_at: '2026-09-30T07:24:38.343182+00:00' updated_at: '2026-09-30T07:24:38.343182+00:00' tags: - ready-to-merge - lane/broker - B-01 - B-02 - B-03 - B-04 - B-05 - B-06 - B-07 - B-08 - B-09 - B-10 - B-11 - B-12 --- ## broker 复审 B-01..B-12 已完成并推送(未 merge main) - **工作树**:`E:\\code\\NixMsg-wt\\r2-b` - **分支**:`feat/fix-broker-b01-b12`(已普通推送到 origin,非 force) - **基于**:`origin/main` @ `4059a15` - **未 merge main**,未关 Gitea issues ## 提交 - `da43385` fix: 在 OnConnect 把 mochi 发送配额置 0 规避死锁(B-01 #8) - `b5b63ed` fix: 大帧名额按 PacketID 在 PUBACK 与断线时归还(B-02 #9) - `4216072` fix: 认证失败不泄漏连接表并脱敏 mochi 整包日志(B-05 #12、B-07 #14) - `8b84584` fix: 完成 broker 复审 B-03 至 B-12 ## 关键实现 - B-03:每连接下行队列 256 帧/16MiB + 发送 goroutine;满则 ErrBackpressure。Publish 失败会重试以免静默抽空队列。 - B-06:PublishDown 只发给当前连接;未订 down 返回 ErrNotSubscribed;导出 EffectivePayloadLimit;uplink.publishResp 使用它;旧连接 superseded。 - B-04:PublishThenDisconnect 入队,OnPacketSent 后再 Disconnect。logout/fatalKick 走该原语。serve 里 identity.New ConnControl=nil。 - B-09:broker 与 appUplink 按端加锁;uplink 握手表,仅已 hello 连接按当前连接通知消息线。未改 presence/app.go。 - B-10:密码登录条件 UPDATE;hello TokenMatchesDB。未改 identity/self.go。 - B-11:闲置取 used/online/offline 较新者,在线视为未闲置。 - B-12:Authenticate 30s 超时;每端 Verify 并发 2。未改 auth 池/PHC。 - B-08:Broker.Shutdown 发 MQTT 5 0x8B 后 Close。serve 在 listener Close 前调用。HTTP Shutdown 留给 L-03。 ## 验证 - `go test ./internal/broker/ -count=1` 通过(约 6.2s) - `go test ./cmd/nixmsg/ -count=1` 通过(约 4.9s) ## 跳过(按裁定) - 不改 identity/lifecycle.go、presence/app.go、auth pool/phc、listener L-03 - 不关 issues,不 merge main ## 下一步 总控审阅后 ff-merge;L-03 可接 B-08 Shutdown。不要删 `E:\\code\\NixMsg-wt\\fix3`。 ## 给下个会话 复用工作树 `E:\\code\\NixMsg-wt\\r2-b` 与已推送分支 `feat/fix-broker-b01-b12`。不要在 e:\\code\\NixMsg 主工作区改。