Files
MemRelay/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-29 20-29-18 UTC [b354dd06b7].md
T
memrelay e0cee30e63 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
2026-09-30 04:29:20 +08:00

26 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 节。