Close the login recovery contract leftovers in Dev

Why: The remaining open items (API-key SSE closure, cross-instance
redeem backoff, U7 atomic bootstrap/create, CLI credential delivery)
landed in Backend #192; Dev pins it and closes the contract leftovers.

Evidence: Backend #192 CI success at head bc1e0a3 (GATE); composite CI
on this PR re-runs the suite incl. test-pg (GATE).

Impact: backend pin cfb8308; contract leftover section now records all
items closed; task card H1-H6 requirement table.

Refs: Backend #192; docs/svc-deploy/2026-10-13-login-recovery-contract.md.
This commit is contained in:
2026-10-13 06:07:57 +00:00
parent daa59836bb
commit d518b3eab2
3 changed files with 21 additions and 8 deletions
+9 -1
View File
@@ -28,7 +28,15 @@
| ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 |
|---|---|---|---|---|---|---|
| R1 | 待填写 | 待评估 | 待定 | 待定义 | 待确认 | 待评审 |
| H1 | 撤销 API key 的 SSE 断流 | 需补齐;#189 仅覆盖会话凭证 | P0 | 撤销后复验窗口内 `session-expired` 终止 | — | 纳入本增量 |
| H2 | 兑换入口跨实例限流 | 需补齐;原为进程内退避 | P0 | 双 Store 同库共担;HTTP 达限 429 | 迁移 v29 | 纳入本增量 |
| H3 | 并发建号不覆盖(R5/KTD12) | 需补齐;原先查后插再 UPDATE 有覆盖窗口 | P0 | 16 并发同名 1 胜、胜者凭据完好 | — | 纳入本增量 |
| H4 | 首管引导串行 + 拒绝接管(R11/KTD12) | 需补齐;原为检查后创建非原子 | P0 | 8 并发引导恰 1 管理员;已有用户 ErrConflict | — | 纳入本增量 |
| H5 | CLI 凭据安全交付(KTD14 首期) | 需补齐;DSN 只走 argv、明文只走 stdout | P1 | AGENT_SYSTEM_DSN 回落;--out 0600 文件、stdout 无明文 | — | 纳入本增量 |
| H6 | 部署 dev + live 可验证项验收 | 授权来源:用户 2026-10-13「把仍开放项做完」 | P1 | 版本/迁移 v28+v29/账户完好/健康;owner 浏览器登录交用户 | H1–H5 合入 | 纳入本增量 |
- 授权与交付终点:用户 2026-10-13「继续推进,把仍开放项做完」——覆盖合同遗留项实施、
组合合入与 dev 实例部署验收;owner 浏览器输密码与 live 故障注入不在授权内。
## 方案与计划
@@ -68,14 +68,19 @@
以上本地结果均为 SELF;GATE 以 PR HEAD 的 CI(含 test-pg)为准。
## 遗留项(不阻塞本合同;2026-10-13 追加收尾)
## 遗留项(2026-10-13 全部收口)
- ~~登录页专用兑换 E2E~~:**已补齐**(Frontend #77,`e2e/login-key.playwright.ts`;
真实浏览器全流程验收 PASS——签发→只输 Key 兑换→免旧密码设密→新密码登录→重复兑换被拒,
隔离 auth-on 实例,收据 sha256 `be7ae9a2…`/`b3a9e691…` 绑定 Dev HEAD 268ef29,SELF)。
- ~~SSE 长连接断流~~:**已实现**(Backend #189,`349a47d`,CI success)——会话凭证的流
在心跳点复验(默认 15s,测试可缩短),失效即以 `session-expired` 终止;
API key 凭证的撤销断流仍后续。
- ~~SSE 长连接断流~~:**已实现**(Backend #189 会话凭证;#192 补齐 API key 凭证)——
心跳点复验,失效即以 `session-expired` 终止(默认 15s,测试可缩短)。
- ~~Documents 主方案回写~~:**已完成**(Documents #94 r3,含三裁定与实施记录)。
- 兑换入口跨实例限流(当前进程内退避,与 `loginGuard` 同档)——仍后续。
- U7 余量(原子开户/引导、CLI 凭据安全交付、PG 锁串行首管)——仍后续,另行任务。
- ~~兑换入口跨实例限流~~:**已实现**(Backend #192,迁移 v29 `redeem_attempts` 共享库
窗口计数;双 Store 连接同库共担限流的测试覆盖)。
- ~~U7 余量:原子开户/引导、CLI 凭据安全交付、PG 锁串行首管~~:**已实现**
(Backend #192)——CreateAccount 单行 INSERT(并发同名 1 胜且胜者凭据不被覆盖);
BootstrapFirstAdmin PG 咨询锁 + SQLite 插入后复查,建号+激活 Key+审计同事务,
已有用户拒绝接管(R11);CLI `AGENT_SYSTEM_DSN` 环境输入与 `--out` 0600 文件交付。
- 部署与 live 账户验收:**本任务执行部署与可验证项**;owner 浏览器输密码一步
按合同由用户完成(密码不交给 Agent)。