Skip to content

Commit 19cb31c

Browse files
docs(adr-0078): 状态行与实现对齐 —— 完整性闸门已落地,逐阶段标注 (#4787) (#4919)
ADR-0078 的状态行仍写着「Proposed……核心机制未建(2026-07-16 审计)」, 而它所说「未建」的机制早已合并四次:共享谓词 packages/spec/src/kernel/functional-completeness.ts、作者期闸门 packages/lint/src/validate-functional-completeness.ts(在 authoring-rules.ts 里注册为 gating 层,error 级发现会让 os build/validate/lint 直接失败),以及 packages/objectql/src/registry.ts 里的注册期孪生诊断。一份说「没建」的 ADR 本身就是误导源:后来者要么重新立项,要么绕开一道已经承重的闸门。 状态词按仓内既有已落地 ADR 的写法改为 「Accepted — framework implemented; the cloud half of §2/§3 pending (cloud)」, 并且**没有**笼统标成全做完 —— 分阶段的 ADR 标「全完成」比标「未开始」更有害, 因为它会让人不再去查。逐阶段:Phase 1 ✅(#4547)、Phase 2 🟡 只落地框架侧 (#4577)、Phase 3 ✅ 在验证支持的范围内(#4565)、Phase 4 ✅ 已裁决(#4599); §2 的 cloud graph-lint 复用共享谓词仍未落地,单独标注为唯一会悄悄腐烂的开口。 正文一并更新:§2/§3/§4 加落地说明;新增决策 §6 —— 「一条规则只有带上让它成立的 那行运行时静默跳过点才能上线」,以及「运行时注释对空值的祝福必须另有证据证明该模式 仍可达」(webhook 跳过点祝福的 manual-only 模式已被 #3196 删除)。Phase 4 的 生成式规则遍历记为**否决而非推迟**。两条推论(multiselect 无 options 的 NON-rule 等)在 scripts/adr-anchors.json 里锚定回实现文件。 仅文档;不发版。 Claude-Session: https://claude.ai/code/session_018iARDqtrhQgz6fVHDeDkbQ Co-authored-by: Claude <noreply@anthropic.com>
1 parent 3edff5c commit 19cb31c

3 files changed

Lines changed: 47 additions & 10 deletions

File tree

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
---
3+
4+
docs(adr-0078): the completeness-gate ADR now says what shipped (#4787). Its status line still read `Proposed … core mechanism unbuilt (2026-07-16 audit)` while the mechanism it called unbuilt had been merged four times over — `packages/spec/src/kernel/functional-completeness.ts` (the shared predicate), `packages/lint/src/validate-functional-completeness.ts` (registered `gating` in `authoring-rules.ts`, so `os build` / `os validate` / `os lint` fail on an error-severity finding), and the registration-time twin in `packages/objectql/src/registry.ts`. An ADR that says "not built" about a built gate is a live misinformation source: the next reader re-opens the project or routes around a gate that is already load-bearing.
5+
6+
Calibrated to `Accepted — framework implemented; the cloud half of §2/§3 pending (cloud)`, the house form other landed ADRs use, and **not** marked done wholesale — a phased ADR flagged "all finished" is worse than one flagged "not started", because it stops anyone checking. Per phase: Phase 1 ✅ (#4547), Phase 2 🟡 framework half only (#4577 — the blueprint `expression` slot and the strict/lenient key-parity pin; the `objectBody`/`editBuildFieldDef` allow-list rewrite is cloud-owned), Phase 3 ✅ as far as verification supports (#4565`webhook/without-triggers`; two Tier-B candidates deliberately unshipped as unverified, three reclassified as runtime/driver gaps that are not authoring-lint items at all, and the nav-target candidate re-homed to ADR-0072 in #4574), Phase 4 ✅ decided (#4599). §2's graph-lint re-homing stays open and is called out as the one item that can silently rot.
7+
8+
Two disciplines the implementation proved it could not proceed without are now written into the ADR as decision §6 rather than living only in changesets: **a rule ships only with the runtime line that makes it true**, and **a runtime comment blessing an empty case must be corroborated as still reachable** (the webhook skip site blessed a "manual-only" mode that #3196 had removed). Their corollary — the deliberate NON-rules, `multiselect` without `options` above all — is pinned in `scripts/adr-anchors.json` too, so the file realizing the decision points back at it. Phase 4's generative rule sweep is recorded as **rejected, not deferred**: generation cannot produce the skip-site citation §6 requires, so waiting for more data never fixes the route.
9+
10+
Documentation only; releases nothing.

0 commit comments

Comments
 (0)