chore(tasks): include T-211 claim handler boundary

This commit is contained in:
QiuSW
2026-08-05 01:18:23 +08:00
parent 63c2c59b41
commit 57a5b2e91c
+10 -2
View File
@@ -15,13 +15,14 @@ write_paths:
- docs/api.md
- admin/internal/tasks/**
- admin/internal/taskclaim/**
- admin/internal/server/task_claims.go
- admin/internal/server/task_claims_test.go
- client/src/cmbuyer_client/core/**
- client/tests/core/**
- client/tests/remote/**
---
<!-- BEGIN VIKUNJA EXPORT id=55 synced=2026-08-04T17:11:09Z sha256=c50ecf831dbc2fefaba320386dfa4ed4f6e2e2a07a1cc1f2a309a776dcc08e56 -->
<!-- BEGIN VIKUNJA EXPORT id=55 synced=2026-08-04T17:18:14Z sha256=a96dc25e291e2ce904f3f78554e2354d450342d164601740c005d240c4d33c30 -->
## 问题 / 背景
claim 成功响应受 32 KiB 总 body 上限保护,但创建、授权快照、candidate 和重放链路尚未统一约束各自由文本字段,客户端也未冻结同一单字段合法域。异常或历史超长值可能让合法业务事实变成不可传输响应。
@@ -40,6 +41,7 @@ claim 成功响应受 32 KiB 总 body 上限保护,但创建、授权快照、
3. 在创建、开始采购授权快照、claim candidate、持久化响应与幂等重放边界逐层 fail closed;不迁移、不截断或改写既有数据。
4. 客户端 wire model 使用相同边界,漂移响应按协议错误拒绝。
5. 增加最坏合法字段的 claim JSON 契约测试,明确编码后小于既有 32 KiB 响应上限。
6. HTTP claim handler 在序列化前重验完整 service 响应并保持 32 KiB 上限;因此将精确文件 admin/internal/server/task_claims.go 纳入写路径,不扩大到其他 server 文件。
## 验收要点
@@ -47,6 +49,7 @@ claim 成功响应受 32 KiB 总 body 上限保护,但创建、授权快照、
- 创建、授权、candidate、首次 claim 与重放均覆盖畸形既有数据并失败闭合。
- 客户端 title/SKU/goods_id/money 与服务端同界。
- 最坏合法 claim JSON 明确小于 32768 字节,保持现有 HTTP body cap。
- handler 拒绝越界或畸形 service 输出,且不泄露响应内容。
- 两端完整测试、vet/build、compileall、根 init、上下文与 diff-check 通过。
## 执行记录
@@ -58,6 +61,10 @@ claim 成功响应受 32 KiB 总 body 上限保护,但创建、授权快照、
### 2026-08-04T17:11:07Z · ila
2026-08-05 主脑预审收紧:Go 必须先 utf8.ValidString,再按既有 TrimSpace 后实际持久化值计算 code point;start/authorization 遇既有畸形 task 原子失败,claim replay 重验持久化响应快照;不增加迁移。
### 2026-08-04T17:18:04Z · ila
2026-08-05 实现范围收紧:HTTP handler 是 service 输出的最后边界,已获总控批准将精确文件 admin/internal/server/task_claims.go 纳入 write_paths;handler 序列化前重验 claim response 与 32 KiB 上限,不扩大到其他 server 文件。
<!-- END VIKUNJA EXPORT -->
## 边界
@@ -73,7 +80,8 @@ claim 成功响应受 32 KiB 总 body 上限保护,但创建、授权快照、
start/authorization 遇到既有畸形 task 必须原子失败,claim replay 还必须重新校验持久化响应快照。
任一层发现超限或畸形既有数据都失败闭合,不迁移、不截断、不覆盖或修复历史行。
- claim 成功响应继续受既有 32 KiB HTTP body 上限约束;最坏合法字段组合的编码结果必须由契约测试
明确证明小于该上限,不得调高响应上限掩盖无界字段。
明确证明小于该上限。HTTP handler 在序列化前重验完整 claim response,并拒绝任何越界 service
输出;不得调高响应上限掩盖无界字段。
- 客户端 claim wire model 与服务端使用完全相同的上限;未知、缺失、超限或格式漂移响应必须拒绝,
不得静默接受后再截断入库。
- 本任务不修改数据库迁移或 schema,不连接设备,不改变授权、身份、租约、幂等、int64、金额或安全