Skip to content

docs(adr): ADR-0145 amended — a ui-only tombstone's R is judged against the fixed group's @objectstack/spec@M.0.0 cut, and D1 names the ADR-0087 level-half amendment - #27333

Merged
os-zhuang merged 2 commits into
mainfrom
claude/issue-27291-adr-0145-ui-clock-citation
Oct 29, 2026
Merged

os-zhuang merged 2 commits into
mainfrom
claude/issue-27291-adr-0145-ui-clock-citation

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #27291
Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:ADR-0145 两处条款各加一条修订注(照 ADR-0087 的修订拼法,原文保留在注里),状态行记为 Accepted(docs(adr): ADR-0145 — ui ?: never tombstones retire on the spec's one-major window #27251 的合并)并加 Amended 条目。决定本身不变:ui 墓碑随 spec 的窗口退场,退休后一个 major,绝不更长;不删任何墓碑,不改代码、schema 或 changeset。
  • 为什么改:D2 的 ui-only 时钟原来读 @object-ui/types 自己的首个 release tag,而该包的 17 从 17.1.0 开始、没有 17.0.0,于是在 16.1.0 与 17.1.0 之间诞生的 ui-only 墓碑会被读成 R = 17(spec 时钟读 16),比 spec 多活一个 major —— 恰是 D1 禁止的。D1 引的「ADR-0087 2026-09-13 修订」有两段同日文本,现在点名 [Decision] 两条裁决援引同一个 launch-window convention,却给出相反的 changeset 等级(minor vs major)—— 退役一个可写键到底发哪一级? #18003 的 level-half 那一段。
  • 风险与回滚:只改 ADR 文本,不发布任何包;回滚 = revert 这一个 commit。误差方向:修订前偏长(不会提前删除),修订后与 spec 时钟一致。
  • 先看:docs/adr/0145-ui-deprecation-tombstones-retire-on-the-spec-window.md —— ① D2 的 ui-only 条目(新 L87–96,规则本身);② D1 的 level-axis 条目(新 L60–66,仅引文);③ 状态行(新 L3–6)。
  • 两分钟验证:npm view @object-ui/types versions --json 看到 16.1.0 之后直接是 17.1.0;git ls-remote --tags origin '@objectstack/spec@17.0.0' 返回一行 —— 修订针对的就是这两个事实。
  • 需要你做的:Tier H(docs/adr/**),PR 保持 draft;由 GOVERNED_APPROVERS 中的账号批准,或维护者亲手合并 / 入队。

What changes

One file, docs/adr/0145-ui-deprecation-tombstones-retire-on-the-spec-window.md, +17/−7 (167 → 177 lines). Two clauses are amended, each with an in-place Amended 2026-10-28 (#27291) note that quotes the former wording; the status entry records the acceptance and the amendment in ADR-0087's spelling. D1's window, D3, D4, D5 and the Applying-the-rule steps are untouched. Nothing is implemented: no tombstone is removed, no code, no schema, no changeset (skip-changeset: docs/adr/** publishes nothing).

Status line — before:

**Status**: Proposed (2026-10-28). `docs/adr/**` is Tier H (Prime Directive #14): this record becomes **Accepted** by
the maintainer's merge. **This record declares; it implements nothing** — …

after (PR #27251 merged 2026-10-28T14:43Z; adr-index keys the record by its earliest status keyword, so the row reads Accepted):

**Status**: Accepted (2026-10-28, #27251) · **Amended** (2026-10-28, #27291 — one clause each; see the amendment notes
under D2's ui-only bullet and under D1's level-axis bullet). **This record declares; it implements nothing** — …

D1, level-axis bullet (item 6 of triage's re-review, comment 6471216267 on PR #27251) — before:

(ADR-0087's 2026-09-13 amendment, `scripts/check-changeset-no-major.mjs`) and moves nothing here;

after:

(ADR-0087's #18003 level-half amendment of 2026-09-13 — the note inside its "Ratified: the pre-launch launch-window
exemption" section — and `scripts/check-changeset-no-major.mjs`) and moves nothing here;
> **Amended 2026-10-28 (#27291) — the citation names its text.** Was "ADR-0087's 2026-09-13 amendment": ADR-0087
> carries two texts of that date, the #12772 artifact-ingestion addendum being the other, and D1 means the level half.

D2, ui-only bullet (item 5 of the same re-review) — before:

from the ui's own retirement. R is the major of the first `@object-ui/types` release tag (or the first release of the
package that publishes the `.d.ts`) whose tree carries the tombstone, on the same convention: first carried by a
major's `.0.0` cut counts in the major before it.

after:

from the ui's own retirement, on the fixed group's clock (D1): R is read off the first `@objectstack/spec` release tag
whose tree carries the tombstone's introducing commit (for a commit the ui merge did not import, the first cut after
its date — step 2), on the convention the bullets above use: first carried by a major's `.0.0` cut counts in the major
before it. ⛔ Never off `@object-ui/types`' own tags: a major's first tag there need not be a `.0.0` cut.
> **Amended 2026-10-28 (#27291) — the ui-only clock reads the group's tags.** Was: "R is the major of the first
> `@object-ui/types` release tag (or the first release of the package that publishes the `.d.ts`) whose tree carries
> the tombstone, on the same convention: first carried by a major's `.0.0` cut counts in the major before it."
> `@object-ui/types` opens 17 at `17.1.0` (no `17.0.0`), so that reading gave a tombstone born before the
> `@objectstack/spec@17.0.0` cut R = 17 where the spec's clock reads 16: one major longer, which D1 forbids.

The clause is one rule, not a two-branch fallback: because the group releases in lockstep (D1), reading the group's @objectstack/spec tags gives the same R as the ui package's own tags wherever those coincide, and the spec's R wherever the ui package skipped a .0.0. It points at D1 and at Applying-the-rule step 2 (git tag --contains on the introducing commit, the pre-merge objectui era dated on a full clone) rather than restating them.

Worked examples (the test the order set; they live here, not in the ADR):

  • (a) A ui-only tombstone introduced between @object-ui/types@16.1.0 and 17.1.0, before the @objectstack/spec@17.0.0 cut. Old reading: first @object-ui/types tag carrying it is 17.1.0, not a .0.0 cut, so R = 17 — carried through 18, due at 19. New reading: the first @objectstack/spec tag carrying it is 17.0.0, a .0.0 cut, which counts in the major before, so R = 16 — carried through 17, due at the 18 cut, exactly the spec's own answer for a key refused from 17.0.0.
  • (b) A tombstone first carried by a 17.x release after the 17.0.0 cut. Both readings: first tag carrying it is 17.x (x ≥ 1), so R = 17 — carried through 18, due at 19. The amendment moves nothing here.
  • (c) A tombstone introduced today, after the 18.0.0 cut: first carrying tag 18.x, R = 18, due at 20 — unchanged.

Registry facts the amendment rests on, re-read this run: npm view @object-ui/types versions --json lists … 15.0.0, 16.0.0, 16.1.0, 17.1.0, 17.2.0, 17.3.0, 17.5.0, 17.6.0, 17.7.0, 18.0.0, 18.1.0, 18.2.0 (no 17.0.0); git ls-remote --tags origin '@objectstack/spec@17.0.0' answers 100d9059….

Tests

Docs-only diff: no workspace package is touched, so there is no ① dependency closure and no ② package test or typecheck to run; test:repo is CI's. The verification is the derived gate set below, all run on head 2d14a9c2. Dogfood battery: n/a — no ! in the title and Clause-②: no.

Acceptance notes

Verification

Head 2d14a9c2 · derivation node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths; change set from the merge base 1c5fe3cb7, 1 path, 24 changed lines) → 21 commands, all run in the foreground with exits captured before any pipe.

21 derived gates — every exit 0 (gate 07 after its prerequisite build)
01 exit=0  node scripts/check-adr-links.mjs                       ✅ check-adr-links: 929 relative link destination(s) under docs/adr/ resolve
02 exit=0  node scripts/check-adr-links.mjs --self-test
03 exit=0  node scripts/check-closing-keyword-parity.mjs
04 exit=0  node scripts/check-closing-keyword-parity.mjs --self-test   40 assertions, 5 mutations each driven to red
05 exit=0  node scripts/check-comment-mask-corpus.mjs              18830 files, 0 disagree, 0 unparseable
06 exit=0  node scripts/ci/plan-test-core-shards.mjs --self-test   23 case(s) across 5 batteries
07 exit=0  pnpm --filter @objectstack/lint run check:doc-formula-expressions   24 record-scoped formula example(s) across 541 files judged clean (first run: exit 3 PREREQUISITE NOT MET, nothing measured; rerun after build)
08 exit=0  pnpm check:adr-anchors
09 exit=0  pnpm check:adr-index                                    ::warning adr-index: stale (report-only, exit 0 by design; already stale on origin/main)
10 exit=0  pnpm check:adr-symbol-anchors                           2787 anchors across 146 records resolve
11 exit=0  pnpm check:ci-filter-parity
12 exit=0  pnpm check:closed-ceremony-text                         4911 shipped file(s) read
13 exit=0  pnpm check:cross-package-test-inputs
14 exit=0  pnpm check:doc-authoring                                sibling-package prose ids hold the baseline
15 exit=0  pnpm check:driver-memory-census
16 exit=0  pnpm check:gitlink-declared
17 exit=0  pnpm check:nul-bytes                                    scanned 22118 text file(s); no raw ASCII control bytes
18 exit=0  pnpm check:pm-governed-merges
19 exit=0  pnpm check:pm-prior-rulings                             155 cases pass
20 exit=0  pnpm check:refd-timer-probe
21 exit=0  pnpm check:watch-hint-literal
--ran reconciliation and the prerequisite build
$ node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --ran ran.txt
Run reconciliation — 21 derived, 21 run, 0 NOT-MEASURED, 0 UNRUN.
✓ dispatch-gates --ran: 21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED (a DERIVED zero — all 21 recorded an exit code and none of them is 3).

$ OS_VERIFY_LOCK_SLOT=issue-27291 bash scripts/pm/os-verify-lock.sh -c 'pnpm exec turbo run build --filter=@objectstack/formula --filter=@objectstack/lint --concurrency=2'
 Tasks:    4 successful, 4 total
os-verify-lock: VERDICT command-exit 0 · held the lock 86s (1m26s) · waited 0s

Control-character scan of the edited file: grep -naP '[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]' — no match. Markdown render check (markdown-it 14.3.3): both amendment notes parse as a blockquote inside their list item.

CI families this PR owes beyond the local subset (Lint & Repo Gates, Check Documentation Links, Governed Surface Queue Guard, PR-body guards, Check PR Size) are read from the PR's check-runs, not re-run locally.


Generated by Claude Code

…'s spec tags; D1 names the #18003 level-half amendment

Two clauses of the record, one note each, under ADR-0087's amendment spelling;
the status entry records the acceptance by PR #27251's merge. The decision
(one major after the retirement, never longer) is unchanged; nothing is
implemented.

Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 28, 2026
@github-actions github-actions Bot added size/s documentation Improvements or additions to documentation labels Oct 28, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract-review-claim: session_01QSeKYmhU5KEj1nukYhp1Tg · head 2d14a9c · 2026-10-28T18:34Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 2d14a9c2fcd6683a02c0a859d01dd3677f1e61a4
Local-runs: probe — the seat ran, in a detached read-only worktree of the head (no edit, no build, no network): node scripts/check-adr-links.mjs ✓ 929, check-adr-anchors.mjs ✓, check-adr-symbol-anchors.mjs ✓ 2787, node scripts/adr-index.mjs --check → exit 1 「docs/adr/README.md is stale」 (CI runs --report, report-only; the dev read the same and that the README was already stale on origin/main for ADR-0035's row)
Scope: docs/adr/0145-ui-deprecation-tombstones-retire-on-the-spec-window.md (L3–6 status, L63–66 D1 citation + note, L87–96 D2 ui-only clause + note; 〈Applying the rule〉 step 2 L144–149 read as the text the new clause cites) + docs/adr/0087-metadata-protocol-upgrade-contract.md L3 / L498 / L1240 (cited, read not reviewed) + docs/adr/README.md (generated index; its ADR-0145 row read on the head)

Claim line 6477399132 on this head (2026-10-28T18:37Z); no earlier record or claim on it. Read at 2026-10-28T18:37Z by the domain:skills#2 seat on the fetched head (one commit on b4eecd50): one file, +17/−7 (24 ≤ 3000; check-governed-merges --pr 27333: docs/adr/** ⇒ Tier H). The claim 6476714931 served CONTRACT_REVIEW_TIER by path mandate; this review is served at that tier.

① Derived judgments

② Semver level

  • None owed: docs/adr/** publishes nothing; skip-changeset correct; Clause-②: no, Metadata-protocol: none line-initial, matching the claim.

③ Boundary flags

  • Must-fix 1 — 〈Applying the rule〉 step 2 (L144–149) now contradicts the amended D2. Step 2 still tells the batch to date a pre-merge ui tombstone on a full clone of objectstack-ai/objectui 「whose @object-ui/types@* tags carry that era」 and to take 「the first release tag that contains it (git tag --contains)」 — on that clone the tag found is an @object-ui/types tag, exactly the reading the new D2 clause forbids (⛔ Never off @object-ui/types' own tags). The new clause's parenthesis points at step 2 for 「the first cut after its date」, but step 2 does not say that. One clause in step 2 is owed: the objectui clone gives the introducing commit and its date; R is then read on the group's clock per D2 (the first @objectstack/spec@M.0.0 cut at or after that commit, counted in the major before it), ⛔ not from the ui tag the clone's git tag --contains names. Same file, inside this card's should-fix 5.
  • Must-fix 2 — docs/adr/README.md is generated and now stale for this ADR's own row (its status cell reads 「Proposed — 2026-10-28. docs/adr/ is Tier H …」 on the head). Regenerate with the repo's tooling (pnpm adr:index) and commit the result; the regen also refreshes the ADR-0035 row that spec: an object declares the business order of its related lists — relatedLists: ['task', 'event', …], an ordered list of child relationships like highlightFields is of fields; unlisted ones follow the derived order; a name that matches no inbound relationship is refused #27069 left stale — a generated-file catch-up, named in the PR body, not a widening. (CI's check:adr-index is --report, so the PR is green either way; the index is what a reader opens first, and a status this PR changes must show there.)
  • Accepted: the commit trailer is the repo's model-free pair; the formula/lint prerequisite build for the derived doc-formula gate; check:role-word not derived (its roots exclude docs/adr/) — the order's hypothesis 4 falsified on that one name; two lines at 121–122 chars (no gate reads line length under docs/adr/; the file already carried longer lines).
  • Author objectstack-fleet[bot] through the relay; mcp_calls: 0; api_writes 2 (both relay); the relay requested hotlong and os-zhuang on pr_create (the relay's act); draft, no flip by anyone.

④ Design judgment

Implemented-by: claude/issue-27291-adr-0145-ui-clock-citation
Reviewed-by: session_01QSeKYmhU5KEj1nukYhp1Tg

VERDICT: FAIL — two must-fixes (step 2 consistency; the generated index), both inside this card's file surface plus the generated docs/adr/README.md; the same reviewer delta-reviews the fixed head.

…R on the group's clock; regenerate the ADR index

Applying-the-rule step 2 gains one clause: the objectui clone yields the
introducing commit and its date, and R is read per D2 (the first
@objectstack/spec release cut at or after that date, a .0.0 cut counting in
the major before it), never the @object-ui/types tag the clone's
`git tag --contains` names; D2's parenthesis now spells the same reading.
docs/adr/README.md is regenerated with scripts/adr-index.mjs: the 0145 row
reads Accepted, and the 0035 row catches up with its amendment.

Claude-Session: https://claude.ai/code/session_01QSeKYmhU5KEj1nukYhp1Tg
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract-review-claim: session_01QSeKYmhU5KEj1nukYhp1Tg · head 0a594eb · 2026-10-28T18:52Z

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

Contract review

Served-tier: CONTRACT_REVIEW_TIER
Head-sha: 0a594eb2d8cf6ad50a9a719329862e513e8dac9b
Local-runs: probe — the seat ran, in a detached read-only worktree of the head (no edit, no build, no network): node scripts/adr-index.mjs --check → exit 0 「OK — docs/adr/README.md is current and every record parsed」 (the round-1 stale reading is gone), check-adr-links.mjs ✓ 929, check-adr-anchors.mjs ✓, check-adr-symbol-anchors.mjs ✓ 2787
Scope: docs/adr/0145-ui-deprecation-tombstones-retire-on-the-spec-window.md (delta: D2 ui-only parenthesis L89–92; 〈Applying the rule〉 step 2 L151–158) + docs/adr/README.md (generated: summary counts, the ADR-0035 and ADR-0145 rows) — a delta review by the same reviewer of the one fix commit on 2d14a9c2 (record 6477458239, FAIL with two must-fixes)

Claim line 6477776818 on this head (2026-10-28T18:54Z); the earlier claim 6477399132 lapsed with the head. Read at 2026-10-28T18:54Z by the domain:skills#2 seat on the fetched head: two files, +28/−14 cumulative (42 ≤ 3000), Tier H unchanged.

① Derived judgments

  • Must-fix 1 met: step 2 now carries one clause after 「whose @object-ui/types@* tags carry that era」 — 「that clone gives the introducing commit and its date, and R is then read on the group's clock (D2): the first @objectstack/spec release cut at or after that date, a .0.0 cut counting in the major before it, ⛔ never the @object-ui/types tag the clone's git tag --contains names」; the shallow-clone refusal and the spec-retirement sentence are verbatim as before; D2's parenthesis now reads 「the first @objectstack/spec release cut at or after its date — step 2」 — the two places say the same thing in the same words. The dev's spelling (first spec cut at or after the date, .0.0 counting in the major before) is total where 「first M.0.0 cut at or after」 would be undefined for a commit in the current major, and agrees with it everywhere else. Holds.
  • Must-fix 2 met: docs/adr/README.md regenerated by scripts/adr-index.mjs — the ADR-0145 row reads Accepted · Amended, Accepted 126 → 127 / Proposed 5 → 4, and the ADR-0035 row catches up with its spec: an object declares the business order of its related lists — relatedLists: ['task', 'event', …], an ordered list of child relationships like highlightFields is of fields; unlisted ones follow the derived order; a name that matches no inbound relationship is refused #27069 amendment (the generator's output, not a hand edit). Holds.
  • Round-1 judgments ①–④ on the status line, the D1 citation, the D2 clause and the decision stand; no other line moved (diff read by the seat).

② Semver level

  • Unchanged: none owed; skip-changeset stays correct (a generated docs index publishes nothing).

③ Boundary flags

  • The dev did not PATCH the PR body (os-dev.md forbids it after pr_create) and handed the seat three corrections; the seat applies them in its ACCEPT record rather than editing the body: the body's sentence claiming step 2 was already consistent is withdrawn by this record, and its Acceptance-note bullet 「README not regenerated」 is superseded. The maintainer reads the seat's record, per SKILL.md 〈路径分叉〉.
  • The status entry still says 「one clause each; see the amendment notes under D2's ui-only bullet and under D1's level-axis bullet」 — the step-2 clause is additive and carries no note; accepted as is.
  • dispatch-gates ran on a tree three commits behind origin/main (STALE TREE); the changed family script there is the skills/** token ratchet, outside the derived 21 and reading none of this PR's paths; origin/main touched nothing under docs/adr/ since the base — no main merge owed.
  • Author objectstack-fleet[bot] / Claude (the worktree's config) through the relay; mcp_calls: 0; one relay write this round (the report 6477732928); draft, no flip by anyone.

④ Design judgment

  • The batch runner now reads the same clock in D2 and in step 2; the one place a pre-merge tombstone could still be dated one major long is closed by name. Holds.

Implemented-by: claude/issue-27291-adr-0145-ui-clock-citation
Reviewed-by: session_01QSeKYmhU5KEj1nukYhp1Tg

VERDICT: PASS

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg

维护者速读 — 席位终稿 · PR #27333 · head 0a594eb2 · domain:skills#2 · 2026-10-28T19:15Z

席位核对 — ACCEPT · domain:skills#2 · session_01QSeKYmhU5KEj1nukYhp1Tg · 2026-10-28T19:15Z

  1. 形态:draft → main,首行 Fixes #27291,Clause-②: no、Metadata-protocol: none 行首在;两文件 +28/−14(42 行 ≤ 3000);assignee os-justin;skip-changeset 正确(docs/adr/** 不发布);两 commit(修订 + 返工);作者经中继,mcp_calls: 0;dev 两份报告首行带署名(6477297084、6477732928);中继在 pr_create 上已请 hotlong、os-zhuang。
  2. 前提实测:npm registry 实读 @object-ui/types 16.0.0、16.1.0、17.1.0 … 18.2.0(无 17.0.0);本仓 @objectstack/spec@17.0.0 标签在;ADR-0087 L498([Decision] 两条裁决援引同一个 launch-window convention,却给出相反的 changeset 等级(minor vs major)—— 退役一个可写键到底发哪一级? #18003)与 L1240(Artifacts built by released 17.x tooling are REFUSED by the 17.2 runtime: retired-key tombstones fire at artifact parse, and no artifact-ingestion door runs the ADR-0087 conversion that exists for exactly this #12772)两段同日期文本在;席位在 head 的 detached worktree 跑 adr-index --check OK、check-adr-links 929、check-adr-anchors OK、check-adr-symbol-anchors 2787;check-governed-merges --pr 27333 ⇒ Tier H。
  3. 门禁 check-runs(head 0a594eb2,本笔读数 2026-10-28T19:15Z):41 check-runs,25 success · 16 skipped · 0 in progress · 0 failure;16 个 skip 由 check-expected-skips.mjs --check-runs-json 判定全部在册,exit 0。首次 CI run(40747559613 attempt 1)的 Plan Test Core shards 在 Checkout 步骤卡满 10 分钟 timeout 被取消(未跑到任何测试体;其规划的 Test Core 分片仍全绿),席位按「checkout/install/runner 丢失」例外单次重跑失败作业(rerun_failed_jobs,本班唯一一次),attempt 2 全绿;dev 本地派生 21 族全绿(--ran 21/21)。
  4. 接受的偏差:① 首轮 PR 正文的「第 2 步已一致」假设被席位复核证伪,返工补齐;② 正文未 PATCH(角色文件禁止),三处改法由本记录承接;③ 状态行未另点名第 2 步(该句为增量,原文保留);④ check:role-word 未派生(根不含 docs/adr/),令中假设证伪;⑤ 两行 121–122 字符(该文件原有 125 字符行,无门禁读行长);⑥ 派生门在落后 main 三提交的树上跑,变动的唯一家族脚本是 skills/** 的 token 棘轮,与本 PR 路径无关。
  5. 范围外去向:none filed;Acceptance notes:无(dev 首轮提出的 README 陈旧观察已随返工消解)。Skills-docs: 不欠(kind none)。
  6. 落地条款:Tier H;契约复核记录 6477458239(FAIL,head 2d14a9c2)→ delta PASS 6477821836(head 0a594eb2,认领行 6477776818);等 GOVERNED_APPROVERS 批准或亲手 ready + 入队;批准在案 ⇒ 席位过落地前检、经中继 pr_ready + automerge_enable 落地;MERGED 后关卡摘 pm:dispatched。

@os-zhuang
os-zhuang marked this pull request as ready for review October 29, 2026 00:51
@os-zhuang
os-zhuang added this pull request to the merge queue Oct 29, 2026
Merged via the queue into main with commit 753a14e Oct 29, 2026
66 of 67 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-27291-adr-0145-ui-clock-citation branch October 29, 2026 01:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs/adr: ADR-0145 follow-ups — D2 ui-only clock when a major first @object-ui/types tag is not .0.0, and the ADR-0087 amendment citation

3 participants