Skip to content

feat(runtime): /packages 域 handler 体抽出(最大单域)— ADR-0076 D11 步骤③ PR-5 (#2462) - #3537

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

feat(runtime): /packages 域 handler 体抽出(最大单域)— ADR-0076 D11 步骤③ PR-5 (#2462)#3537
os-zhuang merged 1 commit into
mainfrom
feat/d11-step3-extract-packages

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

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

抽出 /packages——迄今最大单域(~680 行):handlePackages 本体 + 两个独占 helper(assemblePackageManifest 离线导出、applyPublishedSeeds 发布后种子落地)。覆盖 list/install/enable/disable、ADR-0033 草稿 publish/discard、ADR-0067 commit 历史与回滚、ADR-0070 export/认领孤儿/复制、删除。

改动

  • domains/packages.ts(679 行):体逐字搬迁;setPackageDisabled/PLURAL_TO_SINGULAR import 随体走;动态 './seed-loader.js' import 改 '../seed-loader.js'(PR#2415 的教训——动态 import 是搬迁暗雷,这次随调用方一起搬)。
  • resolveActiveOrganizationId留 dispatcher(metadata 域多处共用)经 deps 暴露。
  • DomainHandlerDeps 扩四项:errorFromThrown(spec 校验 issues 透传为字段锚定 422)、resolveActiveOrganizationIdannounceKernelEvent(发布后 metadata:reloaded 广播——changed 判断留域侧、trigger 存在性判断进 deps)、可选 logger
  • 步骤②(feat(runtime): /discovery 单一归属 + /packages 统一管线(ADR-0076 D11 步骤②) #3142)的单管线行为保持;/packages 裸 startsWith 匹配原样复刻。
  • dispatcher 再瘦 ~680 行。

验证

接缝套件 34 测试(新增 4:列表 / 无 registry 503 / 409 重复安装护栏 + ?overwrite=true / 缺 id 400);runtime 全量 639 绿;http-conformance 41 断言绿;下游闭包 --force 含 DTS 全绿。

关联 #2462(D11 步骤③ PR-5)。小体量域至此全部迁完;剩余全是大头:/automation /actions /auth /meta /data /mcp /ai。

🤖 Generated with Claude Code

…1 step ③ PR-5 (#2462)
The largest extraction so far: handlePackages (~470 lines) plus its two
EXCLUSIVE helpers assemblePackageManifest and applyPublishedSeeds
(~190 more) move to domains/packages.ts. resolveActiveOrganizationId
stays on the dispatcher (metadata-domain call sites share it) and is
exposed through deps instead.
DomainHandlerDeps grows: errorFromThrown (spec-validation issues carry
through as field-anchored 422s), resolveActiveOrganizationId,
announceKernelEvent (the metadata:reloaded publish announcement — the
domain keeps the changed-list check, the deps side owns the
trigger-existence check), and optional logger (seed-loader falls back
to console as before). The dynamic './seed-loader.js' import moved to
'../seed-loader.js' (the PR#2415 lesson: dynamic imports are the
extraction landmine — this time the import moved WITH the caller).
Step-② (#3142) single-pipeline behavior preserved; the '/packages'
bare-startsWith match is reproduced as-is.
Verified: seam suite 34 tests (4 new incl. the 409 duplicate-install
guard + ?overwrite=true), runtime 639 green, http-conformance 41 green,
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 3:10am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling size/xl 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.

@os-zhuang
os-zhuang merged commit d729a31 into mainJul 27, 2026
15 of 16 checks passed
@os-zhuang
os-zhuang deleted the feat/d11-step3-extract-packages branch July 27, 2026 03:31
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/xlteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang