父票: #182. 基线: docs/design/2026-07-22-req089-route-manifest-authority/baseline.md §4 子票2。
负责哪些AC:AC3/AC5 —— 建 composeRoutes,MemoryRouter(生产)与 Web Router(fixture)从 manifest 派生路由表并绑定单一 leaf;上游 app.tsx route 树降为薄适配 + path-形状 ratchet;production-entry-asserted 测试(从真实 route 入口验证,非仅纯函数),覆盖 Home→Draft→Session、Settings/Dialog/Recovery、back/forward/reload 的 route state 不丢不串 scope。
边界:含 deep-link parser 迁移 —— deep-link 生产入口(layout.tsx collectNewSessionDeepLinks/collectOpenProjectDeepLinks → deep-links.ts)改为从 manifest 派生的 deep-link parse;OS 层协议注册(setAsDefaultProtocolClient)是 transport 留在 main,scheme 字面量与 hostname→route 映射由 manifest 声明。
out-of-scope:不删 alias/legacy flags(子票3);session 路由的具体 surface wiring 排在 #181 之后(依 REQ-088/#181 翻转 + owner decision A;其余路由 home/new-session/directory/系统面不依赖 #181 可先行,不因 #181 阻塞本票其余部分)。
退出条件:deep-links.ts 不再持有独立 new URL+hostname 分派与 directory/prompt schema;opencode://new-session/opencode://open-project 的往返由 manifest golden 断言(与 URL 路由共用 path/query 模板)——否则删/改 URL 层会把 deep-link parser 留成幸存的平行真相;composeRoutes 为唯一注入点,production-entry 测试绿。
父票: #182. 基线:
docs/design/2026-07-22-req089-route-manifest-authority/baseline.md§4 子票2。负责哪些AC:AC3/AC5 —— 建
composeRoutes,MemoryRouter(生产)与 Web Router(fixture)从 manifest 派生路由表并绑定单一 leaf;上游app.tsxroute 树降为薄适配 + path-形状 ratchet;production-entry-asserted 测试(从真实 route 入口验证,非仅纯函数),覆盖 Home→Draft→Session、Settings/Dialog/Recovery、back/forward/reload 的 route state 不丢不串 scope。边界:含 deep-link parser 迁移 —— deep-link 生产入口(
layout.tsxcollectNewSessionDeepLinks/collectOpenProjectDeepLinks→deep-links.ts)改为从 manifest 派生的 deep-link parse;OS 层协议注册(setAsDefaultProtocolClient)是 transport 留在 main,scheme 字面量与 hostname→route 映射由 manifest 声明。out-of-scope:不删 alias/legacy flags(子票3);session 路由的具体 surface wiring 排在 #181 之后(依 REQ-088/#181 翻转 + owner decision A;其余路由 home/new-session/directory/系统面不依赖 #181 可先行,不因 #181 阻塞本票其余部分)。
退出条件:
deep-links.ts不再持有独立new URL+hostname 分派与directory/promptschema;opencode://new-session/opencode://open-project的往返由 manifest golden 断言(与 URL 路由共用 path/query 模板)——否则删/改 URL 层会把 deep-link parser 留成幸存的平行真相;composeRoutes为唯一注入点,production-entry 测试绿。