create: Checkpoint 2026-09-29 20:29:18 UTC [b354dd06b7]

MemRelay-Operation: checkpoint-save:nixmsg-20260930-0505-checkpoint-v02
MemRelay-Resource: 3724d016-1752-40b0-80a4-ce4405595505
This commit is contained in:
2026-09-30 04:29:20 +08:00
parent 06a5c1c208
commit e0cee30e63
@@ -0,0 +1,26 @@
---
title: Checkpoint 2026-09-29 20:29:18 UTC [b354dd06b7]
type: checkpoint
permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-29-20-29-18-utc-b354dd06b7
stable_id: 3724d016-1752-40b0-80a4-ce4405595505
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: nixmsg-20260930-0505-checkpoint-v02
created_at: '2026-09-29T20:29:18.431733+00:00'
updated_at: '2026-09-29T20:29:18.431733+00:00'
tags:
- nixmsg
- prd
- handoff
---
完成:docs/PRD.md 与 docs/DEVELOPMENT.md 升到 0.2(整份重写,0.1 已确认的规则全部保留)。用户要求的两项:端口改为「端只用一个固定端口,后台可用 admin_listen 单独监听」,不用 Redis(F21);新增 F23 端自助注册(管理员开关 + 注册安全码,换码不影响已注册,SDK 注册与改密,HTTP 接口 POST /api/client/register)。
同时全面审查并直接修正的问题:登录锁定改按编号+IP(防恶意锁死);服务器内部故障不能回「密码错误」(否则 SDK 全部停止重连,改在 mochi OnConnect 里返回 error);SDK 去重命中已确认消息要再回 ack;重交不重算 send_at_ms;防重指纹改为整条请求且记录还在时不删;下行大小按整帧自查(mochi 超客户端包上限会静默丢弃);写入合并事务(synchronous=FULL 下才撝得住 200 条/秒);启动恢复(清推送标记、重启当作断线再给宽限);解散群/删除端时作废定时消息并清数据(编号可复用不串数据);coder/websocket 要关 Origin 校验、自查子协议;TLS 不设 NextProtos;argon2id 改 OWASP 19MiB/t=2 并加并发池;配置库改 go.yaml.in/yaml/v3;首次启动需 admin init(原 F22 验收与此冲突);send 示例同时带 send_at_ms 和 delay_ms 的矛盾;单位统一 KiB;补 settings 表(原文档没地方存管理员密码哈希)。需要用户裁定的产品选择写成 PRD 第 9 节 D14–D23。
验证:对照 mochi-mqtt/server v2、coder/websocket、autopaho、modernc sqlite 主分支源码核对库行为(结论见 experience 记忆 27e87e23);联网确认 yaml 库状态和 OWASP 参数。交叉核对两份文档的章节引用、默认项编号、单位、错误码。本阶段不写代码,没有可运行的验证。
问题与解决:重写时一度把「旧连接断开」整体跳过,会让推给旧连接的消息卡死,已改为任何连接断开都按代号清自己的推送标记,只有当前连接才标离线(DEVELOPMENT 7.5)。
下一步:等用户复核 PRD 第 9 节(D1–D13 仍未逐条确认,D14–D23 是新增);确认后交给开发组;开发完成后回来审核,差异应在 docs/DEVIATIONS.md。
给下个会话:项目 ID 25464650-ed5d-440e-b362-190f2852d451;工作区 e:/code/NixMsg 只有 docs/PRD.md、docs/DEVELOPMENT.md,不是 Git 仓库(没有版本记录,改动在 PRD 第 11 节修订记录);边界记忆 de0503ed revision 7;规则记忆 63748f00(只写文档,不写代码)。没写进文档、只向用户提过的建议:端自注销(接入方 iOS App 若提供注册,苹果要求 App 内可删账号,目前列在「本期不做」)、SDK 包名和发布渠道归属待定。要避开的坑见 DEVELOPMENT 第 15 节。