create: Checkpoint 2026-09-30 07:23:04 UTC [b6fb44f08d]

MemRelay-Operation: checkpoint-save:u02-ckpt-20260930-5aa45b4
MemRelay-Resource: f0e962f7-a330-4a62-97b3-a7792744664f
This commit is contained in:
2026-09-30 15:23:08 +08:00
parent b41307bc8d
commit 55eacd66b3
@@ -0,0 +1,53 @@
---
title: Checkpoint 2026-09-30 07:23:04 UTC [b6fb44f08d]
type: checkpoint
permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-30-07-23-04-utc-b6fb44f08d
stable_id: f0e962f7-a330-4a62-97b3-a7792744664f
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: u02-ckpt-20260930-5aa45b4
created_at: '2026-09-30T07:23:04.400612+00:00'
updated_at: '2026-09-30T07:23:04.400612+00:00'
tags:
- ready-to-merge
- U-02
- lane/identity
---
# 检查点:身份线复审 U-02 完成(未 merge main)
## 线 / 任务
- 线:身份 / 群
- 任务:U-02(Gitea #40)
- 未做:U-03(对话密码锁键,等 admin 线)
- 分支:`feat/fix-u02-group-tx`(已普通推送到 origin,未强推、未合 main)
- 工作树:`E:\\code\\NixMsg-wt\\r2-u02`
- 基线:`origin/feat/fix-message-c04-c07` @ `786fe35`(含 C-04 `ac90495`)
- 提交:`5aa45b4` fix: 群写操作在事务内复核并去重建群成员
## 完成内容
1. 加人/踢人/退群/转让/改名/解散在写事务内重读群主、成员关系、成员数;加人再复核目标端 enabled。argon2 仍在事务外。
2. 建群/加人先去重、去掉自己,再按上限截断(超出 `group_full`),然后才密码校验。单请求成员数上限 `2*max_group_members`(至少 256),超出 `bad_request`。
3. `createAdmin` 校验群主格式/存在/启用;成员去重;建成后 `emit` `member_added`(未改 emit 实现)。
4. 迁移 `internal/store/migrations/0003_group_members_fk.sql`:`group_members` 指向 `groups(id) ON DELETE CASCADE`。当时最大号 0002,按 TASKS 4.2 取 0003。
5. `docs/DEVIATIONS.md` 身份 I 节追加 `### 复审修复 U-02`。
## 验证
- `go test ./internal/app/group/ ./internal/app/identity/ -count=1` 通过。
- 覆盖:TalkGate 回调里解散后加人 `not_found` 且无孤儿行;重复成员建群只一条;后台群主不存在/停用失败;并发加人不超过上限;解散后直接 INSERT 成员被外键拒绝。
## 未做 / 注意
- 未改 `emit`(T-01 另一分支仍是 goroutine+20ms)。
- 未修 U-03。
- 未改 message `RejectPendingTx`;void.go 沿用 C-04 调用。
- 未 merge main。
- `internal/store/db_test.go` 仍 `assertMigrationCount(..., 2)`,加 0003 后 `go test ./internal/store/` 会失败(本线不准改 store 测试)。合入前总控或 P 线改为 3。若 C-03 先占用 0003,rebase 时给本迁移改号。
## 给下个会话
- 复用工作树 `E:\\code\\NixMsg-wt\\r2-u02` 与分支 `feat/fix-u02-group-tx`。
- 不要从落后的 main 改 group 作废路径。
- 不要删 `E:\\code\\NixMsg-wt\\fix3`。