Part of #5040(E 系列第 3 单)。**Blocked-by: #5080**(需 `IHttpServer.setFallbackHandler?` 契约成员先落)。维护者已放行提前开发(2026-08-04,见 #5080 认领评论;E7 翻转仍守 v17 分期)。 ## 范围(以 #5040 设计 §1 方案 C、§3 与总表 E3 行为准) 1. `plugin-hono-server`:实现 `setFallbackHandler` —— 仅在全部显式路由未命中后调用;handler 收到的 `req.body` 可读(与 `use()` 中间件「body 不填充」契约区分,`adapter.ts:362` 一带);实测覆盖设计 §7-1 标注的 Hono 兜底行为风险; 2. `dispatcher-plugin`:注册兜底 → `dispatch()` 端点匹配步(调 `matchEndpoint`,17.x 挂载前缀 `/apps/<ns>/…`);未命中维持现状 404 形状(**不改变既有 404 语义,收口另议**); 3. `route-ledger.ts`:新增挂载面登记行,注记与实际一致(取 #5078 教训)。 ## 约束 - 结构性不可达(publish 仍拒),零现网行为变更;含集成测试(fallback 触发顺序 / body 可读 / 未命中穿透); - 执行器车道程序卡(`session_01EYGdmvWP1ieZSLqvAW6uyd` 按序派发),**其它车道请勿认领**。 关联:ADR-0121、#5080(E1)、#4910-Q1(`server:` seam 先例)、#5040 设计 §1/§3/§7-1。
Part of #5040(E 系列第 3 单)。Blocked-by: #5080(需
IHttpServer.setFallbackHandler?契约成员先落)。维护者已放行提前开发(2026-08-04,见 #5080 认领评论;E7 翻转仍守 v17 分期)。范围(以 #5040 设计 §1 方案 C、§3 与总表 E3 行为准)
plugin-hono-server:实现setFallbackHandler—— 仅在全部显式路由未命中后调用;handler 收到的req.body可读(与use()中间件「body 不填充」契约区分,adapter.ts:362一带);实测覆盖设计 §7-1 标注的 Hono 兜底行为风险;dispatcher-plugin:注册兜底 →dispatch()端点匹配步(调matchEndpoint,17.x 挂载前缀/apps/<ns>/…);未命中维持现状 404 形状(不改变既有 404 语义,收口另议);route-ledger.ts:新增挂载面登记行,注记与实际一致(取GET /openapi.json有两个属主:rest-server真serve,http-dispatcher的generateOpenApi分支全仓无实现(ADR-0076 D1 影子重复) #5078 教训)。约束
session_01EYGdmvWP1ieZSLqvAW6uyd按序派发),其它车道请勿认领。关联:ADR-0121、#5080(E1)、#4910-Q1(
server:seam 先例)、#5040 设计 §1/§3/§7-1。