docs(contract): freeze Sense control API v1 [T-008]
Harness governance / validate (push) Has been cancelled
Harness governance / validate (pull_request) Has been cancelled

This commit is contained in:
QiuSW
2026-08-07 17:12:15 +08:00
parent 1c63143106
commit b70df147ea
9 changed files with 1144 additions and 21 deletions
+10 -2
View File
@@ -3,7 +3,7 @@ id: T-008
title: 冻结 Sense 设备管理 API 与 Bell 配额只读投影契约
phase: 2
deps: [T-006]
status: DOING
status: DONE
created: 2026-08-07
issue: 27
context_ref: cc47e1463849151bee3c349cc53971181e262043
@@ -50,7 +50,7 @@ T-006 已证明 Sense 能用 SQLite 期望态驱动 1 路真实摄像头与 4
## 验收要点
- 任务相关验证:OpenAPI/SQL/说明互相引用且无悬空路径;运行 `python -m unittest tests.test_sense_control_contract`,正例全通过,关键约束负例均产生预期错误;JSON 可由标准库解析。
- 任务相关验证:OpenAPI/SQL/说明互相引用且无悬空路径;运行 `python -m unittest discover -s tests -p "test_sense_control_contract.py"`,正例全通过,关键约束负例均产生预期错误;JSON 可由标准库解析。
- 完整门禁:运行 `./init.ps1`、`python scripts/validate_agent_context.py`、`python -m unittest discover -s tests -p "test_*.py"`、`python scripts/validate_harness_governance.py` 和 `git diff --check`,全部通过。
- 人工 / 设备验收:不需要摄像头或 UI 人工验收;由架构/后端负责人核对资源所有权、失败语义、幂等/并发、隐私和未来分库退出路线。
- 构建产物:`docs/contracts/sense-control-v1.openapi.json`、`docs/contracts/site-quota-v1.sql`、`docs/contracts/README.md`;本任务不生成部署二进制或数据库 migration。
@@ -70,6 +70,14 @@ T-006 已证明 Sense 能用 SQLite 期望态驱动 1 路真实摄像头与 4
## 执行记录
### 2026-08-07 完成契约冻结
- 冻结 OpenAPI 3.1 `1.0.0`:7 个站点作用域/批量操作 endpoint,tenant 来自认证上下文,列表默认 50/最大 100,批量最大 128,并明确 Bearer、幂等键、ETag、逐项结果和稳定错误码。
- 设备创建使用 `modality + capabilities` 且 ID 由服务端生成;连接和凭据引用只写不读,v1 不暴露删除或 Site/Area/RBAC/配额 CRUD,也不把期望态受理误报为实际态收敛。
- 冻结 `bell.site_quota_v1` 的 5 列签名、`bell_app` 所有权及 `sense_app` 的最小 `USAGE + SELECT` 权限;配额默认 16、范围 1~128,投影失败只阻断相关新增/启用,已有链路保持不变。
- 增加 8 个标准库契约测试,正例覆盖 OpenAPI/SQL/说明一致性,负例证明缺失认证、客户端自报 tenant、101 页上限、129 项批量、敏感字段回显和 Bell 写权限都会被拒绝。
- `./init.ps1` 通过;`python -m unittest discover -s tests -p "test_*.py"` 共 26 项通过;JSON 标准库解析、上下文校验、治理校验和 `git diff --check` 均通过。本任务不需要摄像头或 UI 人工验收。
### 2026-08-07 领取任务
- dispatcher `ila` 将任务分配给 `codex`;`context_ref` 为 `cc47e1463849151bee3c349cc53971181e262043`,claim 为 `claims/T-008`,工作分支为 `agent/codex/T-008`。