From 0e788fd85508eae47a91fe3773be492ad71f7f17 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 31 Jul 2026 04:41:19 +0000 Subject: [PATCH] docs(adr): ADR-0104's meta advertisement clause records how it actually landed (#3438) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 2026-07-30 addendum's rollout bullet says `os migrate meta --from 16` ends by naming the two data migrations "with their gate status". The implementation (#4253) deliberately names them without it, and the reasoning lived only in that PR's commit message — so the decision record kept prescribing the wrong half to the next implementer, and already misled one (#4284's first draft built exactly what the sentence says). The status half was a category error this ADR had already corrected two addenda earlier: per the 2026-07-27 addendum the evidence gate is per DEPLOYMENT, and `meta` acts on SOURCE, which deploys to zero-or-N deployments — so "its" gate status has no referent at meta time. Best-effort status (show it when a datastore happens to be reachable) would be worse than none: silence goes ambiguous, output turns environment-dependent, and the command gains a hang path on an unreachable database. Status is reported where a datastore is actually open — each migration command reports before it writes, and the boot line carries the live verdict, which after #4284 speaks only where it is true. Amended in place with the ADR's own convention (the L428-style dated inline parenthetical), original text preserved. Empty changeset per the adr-0104-attestation-adr-note precedent. Releases nothing. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_016zgA8CQMJeJbFEjnbib1Uv --- .../adr-0104-meta-advertisement-as-implemented.md | 4 ++++ docs/adr/0104-field-runtime-value-shape-contract.md | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .changeset/adr-0104-meta-advertisement-as-implemented.md diff --git a/.changeset/adr-0104-meta-advertisement-as-implemented.md b/.changeset/adr-0104-meta-advertisement-as-implemented.md new file mode 100644 index 0000000000..4e6650efc4 --- /dev/null +++ b/.changeset/adr-0104-meta-advertisement-as-implemented.md @@ -0,0 +1,4 @@ +--- +--- + +docs(adr-0104): amend the upgrade-path advertisement clause to record how it landed (#4253/#4284) — `os migrate meta` names the migrations without gate status, because gate status is per deployment (2026-07-27 addendum) while `meta` acts on source, which deploys to zero-or-N of them; status is reported where a datastore is actually open. Releases nothing. diff --git a/docs/adr/0104-field-runtime-value-shape-contract.md b/docs/adr/0104-field-runtime-value-shape-contract.md index e077489f97..cf4333ef10 100644 --- a/docs/adr/0104-field-runtime-value-shape-contract.md +++ b/docs/adr/0104-field-runtime-value-shape-contract.md @@ -830,7 +830,15 @@ os migrate value-shapes and a deployment booting ≥17 with covered fields and no `adr-0104-value-shapes` row logs one line at startup saying warn-mode is in effect and which command ends it. A gate nobody is told about is served by - nobody. + nobody. *(Amended as implemented, #4253/#4284: `meta` names the migrations + **without** gate status. The status half was a category error this ADR had + already corrected — per the 2026-07-27 addendum the gate is per + **deployment**, and `meta` acts on **source**, which deploys to zero-or-N of + them, so "its" status has no referent at meta time. Status is reported where + a datastore is actually open: each migration command reports before it + writes, and the boot line carries the live verdict — after #4284, only where + that line is true: counting only fields a write would check, silent when an + env switch already settled the posture.)* ### Fresh datastores attest at creation — both flags