Files
sub2api-cn-relay-manager/docs/2026-05-18-PRODUCTION_REMEDIATION_TASK_BOARD.md
2026-05-21 09:16:45 +08:00

81 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` ≠ 已完成最终放行