## 现状 framework-owned 契约(`ownerCell: _framework`,如 `http.devicestate.v1`)的 HTTP route gate 由 composition-root 手写(`cellmodules/deviceserving/service.go` 的 `auth.RequirePermissionForResource`),**不**走 #2205 的 `endpoints.http.permission` overlay → cellgen → `auth.NewStaticMethodPolicyResolver` / `RequirePermissionForContract` 路径(该路径目前只覆盖 cell-owned 契约)。当 #2358「standard route MUST 声明 permission」mandatory 化后,framework-owned 契约缺 overlay 派生路径会成为盲区。 证据:`contracts/http/devicestate/v1/contract.yaml` 无 `endpoints.http.permission`;`tenancy.md §HTTP 授权 contract-derived 化` 中 overlay 现为 sparse optional;`HTTP-PERMISSION-GATE-WIRING-FUNNEL-01` / 治理 `FMT-42` 只覆盖 cell-level resolver。 三维根因:代码 = framework serving 经 `bootstrap.WithFrameworkHTTPServing` 手写 gate,无 overlay 消费点;架构 = contract-derived authz overlay 未覆盖 framework-owned 归属(系统性,所有 framework http 契约);历史 = #2037 / #2348 framework serving 落地时 overlay 尚 sparse optional。 ## 修复方向 - 最小:framework-owned 契约的 `endpoints.http.permission` overlay 由 cellgen 派生到 framework serving wiring,手写 gate 收口。 - 彻底:framework serving 与 cell serving 共用 contract-derived gate 单一路径(`RequirePermissionForContract`)。 - 重构:随 #2358 overlay mandatory 化时统一处理 framework-owned 归属(codegen completeness 预检覆盖 framework 契约)。 ## Files - `contracts/http/devicestate/v1/contract.yaml` - `cellmodules/deviceserving/service.go` - `tools/codegen/cellgen/`(HTTP overlay 派生) ## Source PR #2400 finding F11(内置 review 架构维度 P3·Cx2)· Discovered via /ship #2351。Related/blocked-by #2358 #2355。
Activity
fix(deviceidentity): #2305 status path-param + owner gate + unknown-s…