docs(adr-0076): 状态行由 Proposed 校准为 Accepted —— 逐条核对 D1–D12 的真实落地状态 - #5356
Merged
Conversation
ADR-0076 的抬头一直是 `Proposed`,但它早已作为生效决定被 AGENTS.md、 `packages/runtime/src/domains/*`(D11 自己的产物)、objectql 的 core 边界 以及 ADR-0121 引用。按 Prime Directive #13,accepted 决定在被 supersede 之前一直有效,所以这里补上抬头。 参照 #4919 对 ADR-0078 的校准做法:不整体翻牌,而是逐条对照 origin/main 的源码给出状态与证据 —— - D1 已落地,但 OQ#2 未执行:`SysMetadataEngine` 从未搬进 metadata-core - D2 已落地(core-boundary.ratchet.test.ts) - D3 完全未建:没有 profile: 'trusted' | 'internal',boot 只 warn 不 fail-closed - D4/D5/D6/D8 为 ratify 类,结论仍成立 - D9 已越过 step-1 抵达 rev.7 终态:联合类型被彻底解散,仓库内无任何 ObjectStackProtocol 类型声明 - D10 只落一半:中心 facade 类仍在,OQ#6 未决 - D11 只落一半:dispatcher 已拆解,rest-server 反而更大了 - D12 framework 侧全落地,console 侧跨仓库无法在本仓核实 - D7 按设计推迟,但已有 CI 触发指标(check-engine-split-ratio.mjs) 同时给 D9 的 back-compat 条目补一条状态注记(组合别名已不存在)。 纯文档改动:不改任何代码、schema 或 content/docs/releases/。changeset 为 空 frontmatter,声明本 PR 不发布任何包。 Fixes #5063 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FTszibd6C8sUCCZnM4VcrL
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
os-zhuang
marked this pull request as ready for review
August 5, 2026 00:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #5063
ADR-0076 的抬头一直写着
Proposed,但它早已作为生效决定被引用:AGENTS.md(D12 的挂载纪律)、packages/runtime/src/domains/*(D11 自己的产物,文件头直接写 "ADR-0076 D11 step ③")、packages/objectql的 core 边界棘轮,以及 ADR-0121。按 Prime Directive #13,accepted 决定在被 supersede 之前一直有效 —— 抬头在这里补上。参照 #4919 对 ADR-0078 的校准做法:不整体翻牌。每条决定都对着
origin/main的源码单独判定,结果并不齐整 —— 有一条完全没建,有两条只落了一半,还有一条跑得比 ADR 记的更远。逐条核对(origin/main @ c89d18c)
packages/metadata-protocol/src/持有protocol.ts/sys-metadata-repository.ts/metadata-diagnostics.ts;packages/objectql/package.json:29单向依赖它。但SysMetadataEngine从未搬进 metadata-core —— 仍声明于packages/metadata-protocol/src/sys-metadata-repository.ts:136,packages/metadata-core/src/对该名字零命中packages/objectql/src/core-boundary.ratchet.test.ts:19FORBIDDEN_PACKAGES = ['@objectstack/metadata-protocol'],FORBIDDEN_LOCAL = ['plugin','kernel-factory'],从core.ts走全量 import 闭包packages/objectql/src、packages/core/src、packages/spec/src/kernel中都没有profile: 'trusted' | 'internal';没有任何东西从对象声明推导所需能力;boot 不是 fail-closed ——packages/core/src/kernel.ts:301只warn("System started with degraded capabilities")。仓库里那 7 处requiredCapabilities/provides属于无关的插件一致性 schemapackages/spec/src/kernel/plugin-capability.zod.ts:217packages/objectql/package.json:27依赖@objectstack/formula,被engine.ts/hook-wrappers.ts/validation/rule-validator.ts/cel-fault.ts使用packages/spec/package.json运行时依赖只有zod;examples/embed-objectql/src/index.ts:16用@objectstack/objectql/core启动,对象是普通ObjectSchema.create(同时也是 Phasing P4 的落点)packages/objectql/src/engine.ts:1439registerMiddleware(fn, options?);plugin-security/src/security-plugin.ts:770,1770,2053,2079、plugin-sharing/src/sharing-plugin.ts:511正是走这里packages/objectql仍在 monorepo 内。rev.9 之后新增:scripts/check-engine-split-ratio.mjs+.github/workflows/engine-split-metric.yml计算并上报触发比率;刻意 report-only,因为阈值本身还是 OQ#5registerMiddleware注入(见 D6);engine.ts中的organization_id/owner_id是 registry 注入的字段名与注释,不是执行逻辑。由 D2 棘轮守住packages/spec/src/api/protocol.zod.ts声明十个按域切分的契约(DataProtocol:1376、MetadataProtocol:1392、AnalyticsProtocol:1411、AutomationProtocol:1417、PackageProtocol:1422、ViewProtocol:1432、PermissionProtocol:1441、RealtimeProtocol:1452、NotificationProtocol:1462、I18nProtocol:1487);全仓不存在任何ObjectStackProtocol类型声明或导出 —— 过渡用的组合别名是被解散了,不是被弃用。消费侧也在收窄:packages/rest/src/rest-server.ts:33export type RestProtocol = DataProtocol & MetadataProtocolpackages/metadata-protocol/src/protocol.ts:6025的退役注记),analytics 现在只有service-analytics一个实现(packages/services/service-analytics/src/plugin.ts:632replaceService);OQ#7 决定保留包名。未落:本决定要废掉的中心 facade 类仍然存在 ——packages/metadata-protocol/src/protocol.ts:1800class ObjectStackProtocolImplementation implements DataProtocol, MetadataProtocol, PackageProtocol,即DataProtocol实现并未搬到传输层,OQ#6 仍未决packages/runtime/src/domains/*(14 个模块),路由走packages/runtime/src/domain-handler-registry.ts:220的DomainHandlerRegistry,http-dispatcher.ts从约 3.8k 降到 1721 行;多适配器由packages/qa/http-conformance验证(OQ#10)。未落:本决定点名的第二个中心路由生成器packages/rest/src/rest-server.ts现在是 7693 行 —— 比 ADR 里记的约 5.1k 更大,不是更小packages/spec/src/api/discovery.zod.ts:21-23的unavailable/degraded/stub枚举 +ServiceSelfInfoSchema:93 +readServiceSelfInfo:132;packages/runtime/src/http-dispatcher.ts:1124的svcAvailable每个槽位都从 marker 推导status/handlerReady(硬编码已清零);packages/runtime/src/service-serveable.ts:46isServiceServeable是域、挂载门与 discovery 共读的唯一判定。消费侧("只信handlerReady: true")在 cloud/objectui零命中结论都做了反向对照:
derivedCapabilities/capability profile为 0 的同时,同一检索面上registerMiddleware(35 文件)、isServiceServeable(16)、__serviceInfo(22) 均命中,说明检索面是活的。顺带修正的一处正文
D9 的 back-compat 条目写着"保留
ObjectStackProtocol组合别名",而该别名已不存在 —— 若不修,新抬头会与正文自相矛盾。按本 ADR 既有的*(Update …)*惯例补了一条状态注记,指出其下方的 rev.7 refinement 已经是现状而非计划。其余正文未动。门与 changeset
pnpm check:adr-anchors→OK (26 anchored file(s), every governing ADR still referenced)Accepted不会让任何门以不同方式对待本 ADR:scripts/check-adr-anchors.mjs对Status/Accepted/Proposed三个词零命中,它只做"被治理文件是否仍提及该 ADR id"的在场检查;且 ADR-0076 在scripts/adr-anchors.json中根本没有条目。全仓也没有其他脚本解析 ADR 状态行。pnpm check:nul-bytes→ OK(5368 文件);另做了越过该门盲区的自查grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f]',两个改动文件均干净pnpm check:doc-authoring/check:docs-audit-scope/check:role-word/check:release-notes全绿Check Changeset要求本 PR 至少新增一个 changeset 文件(空 frontmatter 是官方认可的"本 PR 不发布"声明)。已按.changeset/adr-0044-revise-service-owned-note.md的先例加空 frontmatter changeset;node scripts/check-changeset-no-major.mjsexit=0packages/**源码改动、零content/docs/releases/改动,因此没有可跑的包级test/typecheck—— 与其编造证据,这里如实说明拆出去的第二步
issue 提到的可选第二步(为 D11 落点补
scripts/adr-anchors.json锚点)另开 issue,不并入本 PR:该门自己的文档明确要求"每条锚点必须挣得它的失败模式",而在 14 个 domain 模块 + registry + dispatcher 里挑出该锚哪几个是独立的判断,需要自己的核实过程。Generated by Claude Code