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。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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