Skip to content

feat(runtime): /keys /storage /ui 三域 handler 体抽出 — ADR-0076 D11 步骤③ PR-3 (#2462) - #3522

Merged
os-zhuang merged 1 commit into
mainfrom
feat/d11-step3-extract-keys-storage-ui
Jul 27, 2026
Merged

feat(runtime): /keys /storage /ui 三域 handler 体抽出 — ADR-0076 D11 步骤③ PR-3 (#2462)#3522
os-zhuang merged 1 commit into
mainfrom
feat/d11-step3-extract-keys-storage-ui

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

动机(#2462 D11 步骤③,系列第三刀)

复制 PR-2(#3507)模式的第三批:/keys/storage/ui 三个 handler 体从 dispatcher 抽到 domains/ 独立模块。

改动

  • domains/keys.ts:完整搬迁 sys_api_key 铸造的零容忍安全契约(user_id 钉死调用者、body 白名单、raw key 仅返回一次、hash 不进日志)。旧分支的 '/keys?' query-string 变体用第二条注册项精确复刻(segment 匹配 + /keys? prefix 两条)。
  • domains/storage.ts:删除严格冗余的 || this.kernel.services?.['file-storage'] 第二腿——论证:resolveService 的 fallback 链本就终于 services map;且当 services 为 Map 形态时索引访问恒 undefined(该腿本就是死的),object 形态时与 resolveService 末步重复。
  • domains/ui.ts:直搬。
  • DomainHandlerDeps 扩展 getObjectQL(env-scoped + registry 形状校验)——/keys 现用,/data /meta 迁移时必需。
  • dispatcher 删三个 if 分支 + 三个薄委托保留 + 清除 unused generateApiKey import。

验证

  • 接缝套件 25 测试(新增 6:keys 匿名 401 / 405 / segment 边界 / user_id 钉死+hash 不回显、storage 501/upload、ui 200/503)。
  • runtime 全量 630 绿;http-conformance 41 断言绿;25 包下游 --force 含 DTS 全绿。

关联 #2462(D11 步骤③ PR-3)。剩余域:/share-links /packages(小)、/automation /actions /auth /meta /data /mcp /ai(大头)。

🤖 Generated with Claude Code

…ADR-0076 D11 step ③ PR-3 (#2462)
Batch 3 of the per-domain decomposition, same pattern as PR-2:
- domains/keys.ts carries the zero-tolerance sys_api_key mint contract
(user_id pinned, body whitelisted, raw key returned once); the legacy
branch's '/keys?' query-string form is reproduced with a second
registry entry next to the segment match.
- domains/storage.ts drops the strictly-redundant
`|| this.kernel.services?.['file-storage']` leg: resolveService's
fallback chain already ends at the services map, and under Map-shaped
services the index access returned undefined anyway.
- domains/ui.ts is a straight move.
- DomainHandlerDeps grows getObjectQL (env-scoped, registry-shape
checked) — needed by /keys now and /data /meta when they migrate.
- Unused generateApiKey import removed from the dispatcher.
Verified: seam suite 25 tests, runtime 630 green, http-conformance 41
cross-adapter assertions green, 25-package dependent closure builds with
DTS (--force).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercelBot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

ProjectDeploymentActionsUpdated (UTC)
specBuildingBuildingPreview, CommentJul 27, 2026 2:30am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling size/l labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/runtime.

17 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/api/index.mdx(via @objectstack/runtime)
  • content/docs/api/wire-format.mdx(via @objectstack/runtime)
  • content/docs/automation/hook-bodies.mdx(via @objectstack/runtime)
  • content/docs/concepts/north-star.mdx(via packages/runtime)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/runtime)
  • content/docs/deployment/index.mdx(via @objectstack/runtime)
  • content/docs/deployment/production-readiness.mdx(via @objectstack/runtime)
  • content/docs/deployment/single-project-mode.mdx(via @objectstack/runtime)
  • content/docs/deployment/vercel.mdx(via @objectstack/runtime)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/runtime)
  • content/docs/permissions/authentication.mdx(via @objectstack/runtime)
  • content/docs/permissions/authorization.mdx(via packages/runtime)
  • content/docs/plugins/packages.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/http-protocol.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/runtime)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/runtime)
  • content/docs/releases/implementation-status.mdx(via @objectstack/runtime)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

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

Labels

documentationImprovements or additions to documentationsize/lteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang