Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .changeset/adr-0078-status-calibration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
---

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.

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.

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.

Documentation only; releases nothing.
Loading
Loading