Files
sub2api-cn-relay-manager/docs/2026-05-18-PRODUCTION_REMEDIATION_TASK_BOARD.md

81 lines
4.9 KiB
Markdown
Raw Normal View History

# Sub2API CN Relay Manager 生产整改任务板
日期2026-05-18
当前 Gate历史快照本任务板描述的是 2026-05-18 当时的整改收口状态,不代表当前最新 gate
对应审查:`docs/2026-05-18-PRODUCTION_READINESS_REVIEW.md`
> 状态说明这份任务板保留为“2026-05-18 整改阶段”的执行快照。
>
> 当前最新真相与放行判断请以以下文档为准:
> - `docs/SOURCE_OF_TRUTH.md`
> - `docs/EXECUTION_BOARD.md`
> - `docs/PRODUCTION_CLOSURE_BOARD.md`
> - `docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md`
> - `docs/REAL_HOST_ACCEPTANCE_LEARNINGS.md`
## 当前结论
本轮代码整改已完成审查报告中的 4 个系统性阻塞项修复:
1. 宿主身份已贯穿控制面与运行时链路
2. managed_resources 已具备宿主维度
3. capability probe 已改为无副作用探测
4. rollback-provider 已收敛为按已记录资源集回滚
当前剩余工作不再是代码级阻塞,而是“真实宿主访问闭环与现场治理未收口”。
## 已完成工作分解
| ID | 类别 | 任务 | 交付物 | 验证方式 | 状态 |
|---|---|---|---|---|---|
| R1 | 设计/状态模型 | 宿主身份模型统一:运行时链路显式使用 `host_id`,宿主认证随 host 持久化 | `internal/app/http_api.go`, `internal/store/migrations/0004_host_identity_and_managed_resources.sql`, `internal/store/sqlite/hosts_repo.go` | `go test ./...` | 已完成 |
| R2 | 状态库 | `managed_resources` 增加宿主维度并完成迁移回填 | `internal/store/migrations/0004_host_identity_and_managed_resources.sql`, `managed_resources_repo.go` | `go test ./...` | 已完成 |
| R3 | 应用层 | import / reconcile / rollback / access/status 同步切到 host-scoped 查询,并收紧 batch detail 的 reconcile 视图为 batch-scoped | `internal/provision/*`, `internal/app/http_api.go` | `go test ./...` | 已完成 |
| R4 | 宿主适配 | capability probe 改为只读/无副作用探测 | `internal/host/sub2api/capability_probe.go` | `go test ./...` | 已完成 |
| R5 | 安全回滚 | rollback-provider 只按已记录批次资源回滚;缺记录则拒绝危险删除 | `internal/app/http_api.go`, `internal/provision/rollback_service.go` | `go test ./...` | 已完成 |
| R6 | 文档真相同步 | 下调部署文档乐观口径,同步整改板/执行板/OpenAPI | `docs/DEPLOYMENT.md`, `docs/EXECUTION_BOARD.md`, `docs/openapi.yaml` | 文档复读 + 搜索校验 | 已完成 |
## 最新真实宿主验收结果
| ID | 类别 | 任务 | 验证方式 | 状态 |
|---|---|---|---|---|
| V1 | 质量门禁 | `gofmt -l .` / `go vet ./...` / `go test -race ./...` / `go test -cover ./internal/...` / `go test ./tests/integration/... -count=1` | 终端验证 | 已完成 |
| V2 | `self_service` 真实宿主验收 | 重新生成 `preview-import / import / access-preview / status / reconcile / rollback` artifact | `artifacts/real-host-acceptance/20260518_self_service_reaccept_v6` | 已执行(未通过) |
| V3 | `subscription` 真实闭环 | 重新生成 `preview-import / import / access-preview / status / reconcile / rollback` artifact | `artifacts/real-host-acceptance/20260518_subscription_reaccept_v6` | 已执行(未通过) |
## 失败摘要
### V2 `self_service`
- `05-import.json``batch_status=partially_succeeded``access_status=broken`
- `06-access-preview.json``available=false`
- `09-reconcile.json``status=degraded``extra_count=0``missing_count=0`
- 判断:代码侧“跨宿主串扰 / 漂移误判”已明显收敛,但真实宿主访问闭环仍被 `gateway 403` 阻断
### V3 `subscription`
- `05-import.json``batch_status=partially_succeeded``access_status=broken`
- `06-access-preview.json``available=false`
- `09-reconcile.json``status=drifted``missing_count=3`
- 判断:`subscription` 仍未形成可复核的真实闭环 artifact
## 完成标准
必须同时满足:
- 导入批次不再用 `host_base_url` 充当宿主主键
- 同一 provider 若存在多个宿主实例status/resources/import-batches/access-preview 能通过 `host_id` 准确定位
- `managed_resources` 的唯一性和查询不再跨宿主串扰
- capability probe 不再对真实创建接口发空 `POST`
- rollback-provider 不再走“按名字重新枚举再删”的危险路径
- 剩余质量门禁全部通过
- `self_service` 真实宿主链路至少达到:`available=true``latest_access_status=self_service_ready`
- `subscription` 真实宿主链路至少达到:`available=true``latest_access_status=subscription_ready`
- 上述两条真实宿主 artifact 均通过后,才能重新给出最终放行结论
## 禁止错误结论
- ❌ 代码整改完成 ≠ 真实宿主最终放行
- ❌ 新的 host_id 契约已落地 ≠ 历史 artifact 自动变真
- ❌ rollback-provider 已改安全路径 ≠ 历史脏资源自动消失
- ❌ 文档里去掉 `/metrics` 承诺 ≠ 已补齐观测能力
-`self_service``extra_count=0` ≠ 已完成最终放行