--- title: Checkpoint 2026-09-29 22:47:58 UTC [99329660b1] type: checkpoint permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-29-22-47-58-utc-99329660b1 stable_id: ff8132b0-d7c6-429a-998e-dc3ebc8645ab 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: i1-register-ready-20260930-064800 created_at: '2026-09-29T22:47:58.818501+00:00' updated_at: '2026-09-29T22:47:58.818501+00:00' tags: - ready-to-merge - i1 - line-I - feat/i1-register --- # 检查点:I1 注册接口 ready-to-merge ## 完成内容 - 实现 `POST /api/client/register` 为可挂载 `http.Handler`(`identity.NewRegisterHandler` / `NewServer().Handler()`)。 - 覆盖 DEVELOPMENT 6.9:开关、安全码常量时间比较、IP 锁定、CORS/OPTIONS、4KiB 体、字段规则、`source=self`、日志不含安全码/密码。 - httptest + 临时 SQLite 覆盖 F23 验收;`task check` 通过。 - 写 `docs/DEVIATIONS.md`「身份 I」五条。未改 PRD、cmd、listener。 ## 分支 / 路径 / 提交 - 分支:`feat/i1-register`(已推送 origin,未推 main) - 工作树:`E:/code/NixMsg-wt/i`(基于 origin/main `22c56d1`) - 提交:`3f6f942` feat: 实现端自助注册 HTTP 接口与 F23 验收测试 ## 挂载方式 ```go mux.Handle("/api/client/register", identity.NewRegisterHandler(identity.RegisterConfig{ DB: db, Hash: hashPool, Locks: loginLocks, // P3 实现 })) ``` ## 验证 - `task check`:web build、embeddist、golangci-lint 0、go test ./... 含 identity F23 ## 没做完 - 未接线到 cmd/listener(等 N/总控) - 依赖 P3 真实 HashPool/LoginLocks;测试用 StubHashPool + 测试用 register IP 锁定器 - I2–I5 未做;trusted_proxies IP 由接线注入 ClientIP ## 给下个会话 - 可 rebase origin/main 后由总控 ff-merge;勿强推 main;勿改主工作区 e:/code/NixMsg