Repository navigation
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
Conversation
…'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>
|
domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg Contract-review-claim: session_01QSeKYmhU5KEj1nukYhp1Tg · head 2d14a9c · 2026-10-28T18:34Z |
|
domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg Contract reviewServed-tier: 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 ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: FAIL — two must-fixes (step 2 consistency; the generated index), both inside this card's file surface plus the generated |
…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>
|
domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg Contract-review-claim: session_01QSeKYmhU5KEj1nukYhp1Tg · head 0a594eb · 2026-10-28T18:52Z |
|
domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg Contract reviewServed-tier: 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 ① Derived judgments
② Semver level
③ Boundary flags
④ Design judgment
Implemented-by: VERDICT: PASS |
|
domain:skills#2 · os-justin · session_01QSeKYmhU5KEj1nukYhp1Tg 维护者速读 — 席位终稿 · PR #27333 · head
|
Fixes #27291
Clause-②: no
Metadata-protocol: none
维护者速读
?: nevertombstones retire on the spec's one-major window #27251 的合并)并加 Amended 条目。决定本身不变:ui 墓碑随 spec 的窗口退场,退休后一个 major,绝不更长;不删任何墓碑,不改代码、schema 或 changeset。@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 等级(minorvsmajor)—— 退役一个可写键到底发哪一级? #18003 的 level-half 那一段。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'返回一行 —— 修订针对的就是这两个事实。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-placeAmended 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:
after (PR #27251 merged 2026-10-28T14:43Z;
adr-indexkeys the record by its earliest status keyword, so the row reads Accepted):D1, level-axis bullet (item 6 of triage's re-review, comment 6471216267 on PR #27251) — before:
after:
D2, ui-only bullet (item 5 of the same re-review) — before:
after:
The clause is one rule, not a two-branch fallback: because the group releases in lockstep (D1), reading the group's
@objectstack/spectags 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 --containson 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):
@object-ui/types@16.1.0and17.1.0, before the@objectstack/spec@17.0.0cut. Old reading: first@object-ui/typestag carrying it is17.1.0, not a.0.0cut, so R = 17 — carried through 18, due at 19. New reading: the first@objectstack/spectag carrying it is17.0.0, a.0.0cut, 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 from17.0.0.17.0.0cut. Both readings: first tag carrying it is17.x(x ≥ 1), so R = 17 — carried through 18, due at 19. The amendment moves nothing here.18.0.0cut: first carrying tag18.x, R = 18, due at 20 — unchanged.Registry facts the amendment rests on, re-read this run:
npm view @object-ui/types versions --jsonlists… 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(no17.0.0);git ls-remote --tags origin '@objectstack/spec@17.0.0'answers100d9059….Tests
Docs-only diff: no workspace package is touched, so there is no ① dependency closure and no ② package test or typecheck to run;
test:repois CI's. The verification is the derived gate set below, all run on head2d14a9c2. Dogfood battery: n/a — no!in the title andClause-②: no.Acceptance notes
docs/adr/README.md(the generated index) is not regenerated here.pnpm check:adr-indexis report-only by design and it already warnedstaleonorigin/main1c5fe3cbbefore this edit: a regen on the clean tree moves ADR-0035's row (amended by spec: an object declares the business order of its related lists —relatedLists: ['task', 'event', …], an ordered list of child relationships likehighlightFieldsis of fields; unlisted ones follow the derived order; a name that matches no inbound relationship is refused #27069 without an index run). On this head a regen would move that row plus the 0145 row and the Accepted/Proposed counts (127/4). Scope here is the one ADR file; the nextpnpm adr:indexrun refreshes both rows. Noted, not filed.?: nevertombstones retire on the spec's one-major window #27251'smerged_byreadsos-zhuangthrough REST (merged_at2026-10-28T14:43:02Z, merge commite9c88f7c); the status entry records the PR number and date only.check:role-wordwas not derived for this diff — its roots arecontent/docsandskills/, notdocs/adr/— so the order's gate-list hypothesis overstated the set by that one family; the other named families were all derived.docs/adr/.pnpm --filter @objectstack/lint run check:doc-formula-expressionsfirst answered exit 3PREREQUISITE NOT MET(unbuilt@objectstack/formula/@objectstack/lint) — nothing measured; the two packages were built underos-verify-lock.sh(VERDICT command-exit 0, held 86s, waited 0s) and the gate rerun exit 0.Claude-Session:+Co-authored-by: Claude), per AGENTS.md; no card trailer on the commit.Verification
Head
2d14a9c2· derivationnode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(no paths; change set from the merge base1c5fe3cb7, 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)
--ran reconciliation and the prerequisite build
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 ablockquoteinside 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