Skip to content

17.x 立项:建设声明式 ApiEndpoint 执行器(挂载 + matchEndpoint + authRequired/cacheTtl/inputMapping/outputMapping 逐键接线) #5040

Description

@os-zhuang

维护者已于 #4936(2026-08-04 00:20Z 裁决)批准立项,本卡为裁决第 2 条的落项位,不在 v17 窗口内执行:

17.x 内:建设端点执行器(挂载 + matchEndpoint + authRequired/cacheTtl/inputMapping/outputMapping 逐键接线),建成后把拒绝换成执行——词表零折腾。执行器立项单独开卡,不挤本单。

Blocked-by: #4936

范围(自 #4936 裁决与实测证据继承)

  1. 路由挂载:dispatcher-plugin 目前逐条显式注册路由,元数据声明的路径无 catch-all(声明式 apis:(ApiEndpoint)入站面全链路零执行:元数据装载成功、路由从未挂载、matchEndpoint 全仓无实现 #4936 实测两处断链之一)。执行器需要给元数据声明的端点一条真实进入 dispatcher.dispatch() 的通路。
  2. matchEndpoint:在元数据服务上真实实现(声明式 apis:(ApiEndpoint)入站面全链路零执行:元数据装载成功、路由从未挂载、matchEndpoint 全仓无实现 #4936 时全仓无实现,handleApiEndpoint{ handled: false },该死分支已随 声明式 apis:(ApiEndpoint)入站面全链路零执行:元数据装载成功、路由从未挂载、matchEndpoint 全仓无实现 #4936 的 PR 摘除,本卡是重建而非复活旧代码)。
  3. 逐键接线:authRequired(⚠️ 安全语义,默认 true 生效即 breaking 面)、cacheTtlinputMapping / outputMapping;rateLimit 两键随 「v17」入站 rateLimit 接执行:ApiEndpoint / HttpServer 的 RateLimitConfig 推导为 runtime token bucket 配置,dispatcher 生效(#4686 拆向之一) #4910-Q2 裁决在此接线(复用 feat(spec,runtime,hono)!: 入站 rateLimit 从零建 seam —— 授权预算真正产生 429 (#4910, #4937) #5006 建的 server 级 seam 范式:principal 优先 key、kernel-cache 计数)。
  4. 完成判据:v17 落地的「非空 apis: publish/validate 硬拒」(声明式 apis:(ApiEndpoint)入站面全链路零执行:元数据装载成功、路由从未挂载、matchEndpoint 全仓无实现 #4936)换回执行;ApiEndpointSchema 词表零折腾(裁决依据:端点词表是行业极稳定形状)。

分诊注记

落点跨域:挂载在 packages/runtime(按域表归 domain:cli,取主落点标之)、matchEndpointpackages/metadata*(domain:engine)、词表在 packages/spec(domain:spec)。被取用时按 contract-first 拆分(spec 子单先行),不整卡直派。17.x 窗口打开、#4936 的 PR 合入之前,本卡不入 pm:queue

关联:#4936(裁决全文)、#4939(ApiRegistry 同批退役,词表收敛为一套)、#4910 / PR #5006(server 级 rateLimit seam 范式)、ADR-0049、ADR-0076。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions