docs(adr): ADR-0047 Decision 1 still says filterableFields "stays as the legacy shorthand; loaders auto-upgrade it to userFilters.fields" — retired in 18.0 by ruling C (#24640), and that loader was never built #24727
Description
Filing gate: ① a recorded decision falsified by a later ruling. Prime Directive 13 says a reversed decision is amended in its record. Reader: the governed-surface lane. docs/adr/** is Tier H, so the PR waits for the maintainer's approval. Filed by domain:spec seat 2 (#18549), session session_019oFY6Hi35J7atvgVFnmoaK. The source is the #24640 dev's open question and contract review 6281884602 on PR #24721. ⛔ Not a claim.
Measured
docs/adr/0047-object-ui-run-modes.md:154-155, in Decision 1:
filterableFieldsstays as the legacy shorthand; loaders auto-upgrade it touserFilters.fieldsentries.
- Falsified by spec(ui): ListViewSchema.filterableFields is described as the userFilters.fields shorthand, but its one renderer reads it as the Filter panel whitelist; retire or redefine (objectui#13047) #24640. The maintainer ruled C (
6278975049, verbatim 「C」) and pulled it into 18.0 (6279033298, verbatim 「提前」). PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721 retires the key with a tombstone. Its conversionview-list-filterable-fields-removeddrops the key and never rewrites it touserFilters.fields, because that rewrite would not keep what an author saw (6278907207). - The auto-upgrade loader was never built.
- The ADR's own §4 Non-goals (
:253-254) already calls the alias a one-release courtesy, not a commitment.
Wanted
- One amendment line in ADR-0047's status block, or at Decision 1. It records that
filterableFieldsretired in 18.0 with no replacement key and no rewrite, citing spec(ui): ListViewSchema.filterableFields is described as the userFilters.fields shorthand, but its one renderer reads it as the Filter panel whitelist; retire or redefine (objectui#13047) #24640 and the two ruling records. - Decision 1's sentence is struck or annotated in place, not silently deleted.
- Docs only. ⛔ No other ADR text moves.
Not a blocker for PR #24721, which lands as is: the contract review judged it so.
Dedupe
The card was filed from the #24640 dev's open question and contract review 6281884602 (the ADR-0047 question). No other card names ADR-0047's filterableFields sentence.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 20, 2026
Triage: p3 ·
documentation· lanedomain:skills(self-labelled, confirmed:docs/adr/**is governed) ·area:devpath·pm:blockeduntil PR #24721 merges · triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-20T02:59ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch. Fresh read on
origin/main0904d856e3.Self-labelled check.
Blocked. The amendment records the key "retired in 18.0", which is true on
mainonly once PR #24721 lands. That PR is open at this read.Why p3. It is a record correction (Prime Directive 13) with no runtime effect.
findingcomes off.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Unlock:
pm:blocked→pm:queue·domain:skillsseat 1 ·os-justin·session_01HEdP5tPhqQfzwRmKDxwn85· 2026-10-20T04:30Z⛔ Not a claim.
pm:blockeduntil PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721 merges」. PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721 merged as4bc3becd5at 2026-10-20T03:14Z;origin/maincarries it. The body carries noBlocked-by:line (the condition lived in the triage comment, and the blocker was a PR, not a card), so the unlock scan could not flip it; this seat does, as the lane'spm:blockedunlock scan.origin/mainf7005cbd8,docs/adr/0047-object-ui-run-modes.mdlines 154–155 still read 「filterableFieldsstays as the legacy shorthand; loaders auto-upgrade it touserFilters.fieldsentries.」; PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721's 24 files touch nodocs/adr/**path, so the amendment is still owed and now true onmain. No open PR touches that ADR.pm:blocked→pm:queue, one label write; grade and lane unchanged (p3,domain:skills). The card is Tier H (docs/adr/**): its PR stays draft for the maintainer's approval after the seat's record.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Claim: PM loop round 5 ·
domain:skillsseat 1 · 2026-10-20T04:31ZSession:
session_01HEdP5tPhqQfzwRmKDxwn85Account:
os-justin(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-24727-adr-0047-filterable-fields-amendmentWorktree:
objectstack-issue-24727Domain:
domain:skillsSeat:
domain:skills#1(seat post #7623)File surface:
docs/adr/0047-object-ui-run-modes.mdonly — one dated amendment block in the status area (the file's own 「Revision / Amendment」 blockquote pattern) and Decision 1's sentence at lines 154–155 struck or annotated in place; ⛔ no other ADR text moves, no other fileContainer & model:
S,mode:subagent,model: TIER_DEFAULT(dispatch-gates --tier --repo objectstack-ai/objectstackon the path atf7005cbd8c: no path-derived mandate; a docs-only governed-text card is built at the default tier; the compensating control is an isolatedCONTRACT_REVIEW_TIERreview before the seat's Tier H record)Clause-②: no
Responsibility:
n/a — not a defect card(filing gate ①: a recorded decision falsified by a later ruling, amended in its record per Prime Directive 13)Thread-read: 6282303965
Ruling-ref: #24640 letter C (6278975049, the maintainer verbatim 「C」) and 「提前」 (6279033298, pulled into 18.0); executed by PR #24721
4bc3becd5(2026-10-20T03:14Z)Serial constraints cleared:
docs/adr/0047-object-ui-run-modes.mdis FREE (no open PR touchesdocs/adr/**; PR #24721's files read); the lane's two queued PRs #24742 and #24744 touch.claude/skills/pm-dispatch/references/**only (disjoint); seat 2 (#19287) is vacant since 2026-10-19T16:53Z.origin/mainf7005cbd8c: lines 154–155 carry the sentence the card quotes; the status block already carries a 「Revision (2026-06-19)」 and an 「Amendment (2026-07-07)」 blockquote, the shape the new amendment mirrors; §4 Non-goals (lines 253–254) calls the alias a one-release courtesy.needs-user-decisionon this card, requests review from the authorised approvers and notifies the maintainer; an authorised approval ⇒ the seat lands it.objectstack-fleet commentedon Oct 20, 2026
Dispatch order — posted 2026-10-20T04:32Z by the claiming seat (
session_01HEdP5tPhqQfzwRmKDxwn85, os-justin,domain:skills#1; claim 6283432637). The same text is the dev's prompt, runmode:subagentatTIER_DEFAULT(adocs/adr/**face, Tier H; the governed text is reviewed in seat atCONTRACT_REVIEW_TIERbefore the seat's record).你是 os-dev,本令派你恰好一张卡:#24727(p3,
domain:skills,Tier H 文档卡:docs/adr/**受管面,PR 留 draft 等维护者批)。6283432637。claude/issue-24727-adr-0047-filterable-fields-amendment,worktree../objectstack-issue-24727,基点origin/main(派发时f7005cbd8c)。docs/adr/0047-object-ui-run-modes.md:① 状态区加一段带日期的 Amendment 引用块(沿用本文件已有的「Revision (2026-06-19)」「Amendment (2026-07-07)」样式);② Decision 1 第 154–155 行那句就地划掉或加注,⛔ 不静默删除;⛔ 其余 ADR 文字不动,⛔ 不碰其他文件。一、裁决(不可重裁)
6278975049,原话「C」):ListViewSchema.filterableFields退役,spec 以墓碑拒收并点名修法;再裁「提前」(记录6279033298):拉进 18.0。PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721(4bc3becd5,2026-10-20T03:14Z 合并)执行:转换view-list-filterable-fields-removed直接丢弃该键,⛔ 不改写成userFilters.fields(理由见6278907207:改写不能保留作者所见)。filterableFieldsretired in 18.0 with no replacement key and no rewrite, citing spec(ui): ListViewSchema.filterableFields is described as the userFilters.fields shorthand, but its one renderer reads it as the Filter panel whitelist; retire or redefine (objectui#13047) #24640 and the two ruling records.」「Decision 1's sentence is struck or annotated in place, not silently deleted.」「Docs only. ⛔ No other ADR text moves.」6282303965:p3,documentation,记录更正、无运行时效应;本席解锁评论已记阻塞已解。二、PM 机制假设(须实测,鼓励证伪)
origin/main上第 154–155 行为「filterableFieldsstays as the legacy shorthand; loaders auto-upgrade it / touserFilters.fieldsentries.」;状态区第 3 行**Status**: Accepted (2026-06-12; revised 2026-06-19) — …,其下是两个>引用块(Revision、Amendment)。新 Amendment 块接在既有块后(同一引用串内或紧随其后),日期写合并日 2026-10-20。git grep -n filterableFields -- packages/spec/src应只命中墓碑/转换与其测试,没有任何把它改写为userFilters.fields的读取路径;把 grep 结果写进 PR 正文。docs/adr/**不在行数棘轮内(CEILINGS 只覆盖 pm-dispatch 技能树),但门禁清单里有check-adr-links、check-adr-symbol-anchors、check:adr-anchors、check:pm-prior-rulings:新块里引用的 issue/评论/PR 与符号名要能过它们;先跑一遍自测看它们认什么拼法。~~…~~加一句注(指向新 Amendment 块)最省;若本文件既有做法不同(搜~~),随既有做法。三、PM 建议路线(可选,实测优先)
filterableFields于 18.0 退役;无替代键、无改写(转换丢弃该键);自动升级 loader 从未建成;出处 spec(ui): ListViewSchema.filterableFields is described as the userFilters.fields shorthand, but its one renderer reads it as the Filter panel whitelist; retire or redefine (objectui#13047) #24640、6278975049(C)、6279033298(提前)、PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #247214bc3becd5。Fixes #24727,Clause-②: no,before/after 引文,前提 1–3 读数,## 维护者速读(草稿)。本令门禁清单(PM 于
f7005cbd8c以dispatch-gates --commands对本单文件取得,19 条)node scripts/check-adr-links.mjs·node scripts/check-adr-links.mjs --self-test·node scripts/check-adr-symbol-anchors.mjs·node scripts/check-adr-symbol-anchors.mjs --self-test·node scripts/check-ci-filter-parity.mjsnode scripts/check-closing-keyword-parity.mjs·node scripts/check-closing-keyword-parity.mjs --self-test·node scripts/check-comment-mask-corpus.mjspnpm --filter @objectstack/lint run check:doc-formula-expressions·pnpm check:adr-anchors·pnpm check:cross-package-test-inputs·pnpm check:doc-authoring·pnpm check:driver-memory-censuspnpm check:gitlink-declared·pnpm check:nul-bytes·pnpm check:pm-governed-merges·pnpm check:pm-prior-rulings·pnpm check:refd-timer-probe·pnpm check:watch-hint-literal通用
objectstack-ai/objectstack,共享检出/home/user/objectstack(⛔ 不编辑;它游离钉在origin/main);PM 会话session_01HEdP5tPhqQfzwRmKDxwn85,席位domain:skills#1,卡 assigneeos-justin(⛔ 你不写卡 assignee)。Claim:点名的Branch:就是本令的分支,不符即停手回报。TIER_DEFAULT施工(dispatch-gates --tier在f7005cbd8c读「no path-derived mandate」);席位在记录前另起隔离的CONTRACT_REVIEW_TIER复核。docs/adr/**⇒ Tier H。PR 保持 draft;席位复核后在 PR 置顶终局记录并等维护者批准,⛔ 你不翻 ready、不请审。PR 正文带## 维护者速读(草稿)(中文、业务角度,席位意见留空)。docs/adr/**不进任何包的files[])⇒ 不写 changeset,skip-changeset随pr_create的labels同笔申报;若分类器拒该标签,原样记入deviations,⛔ 不自行改道。Clause-②: no;首行Fixes #N。PR 正文一次写成(os-dev 定义:正文后续改动归席位)。node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack <本单文件>取得(见本令专属段),逐条跑,退出码先落盘再看,--ran对账;对实际改动重取一次补跑。scripts/pm/写工具(云容器经fleet-write中继);写预算三笔:git push、pr_create(draft,assignees: ["os-justin"],labels: ["skip-changeset"])、卡上一条os-dev-report评论;⛔ 无 MCP 写。终报mcp_calls与api_writes两数都报。gates(逐条命令 + 退出码)、line_budget(本文件行数 before/after,改动行逐行列出)、deviations、files_changed。blocked结束。每个方案必须沿四条固定评估轴分析,这是决策分析的核心原则,不是可选项:
还是投机性能力面?判据要求实测(谁在写这个键、谁在读、
示例应用与真实部署的用法),「读起来像有用」不作数。这条轴会改变结论,不是陪衬。
contract-first),临时补丁式选项要明说长期代价。
契约收紧(严格 schema、publish 时响亮拒绝)优于消费端宽容(
??回退、静默容错)——宽容恰是 AI 批量犯错被掩盖的温床;声明即强制,绝不让 AI 声明一个运行时不兑现的能力。
从紧,无拉动的声明面按 implementation-first 处置,已发布零消费能力不因沉没成本豁免。
过渡也从紧 —— 创业阶段不渐进:废弃别名/拼写与能力退役默认立即退休,无分阶段
窗口、无双拼写宽限;staged 仅凭具名外部用户证据方可荐。新增门禁默认否:门禁是只减
不增的零件,例外只有维护者点名;荐新增门禁须引其点名原话,否则荐「不加」。
基本裁决原则:spec 声明 > 实现 > 文档面;声明而未兑现是实现缺口,补实现或退役,
⛔ 不在消费端收窄;未声明键随实现,文档随之。「声明即强制」只及 spec 与元数据契约、
运行时能力,⛔ 不及 AGENTS.md 这类给 agent 读的约定 —— 那些的读者是 agent,不是门禁。
推荐意见必须基于这四条轴给出理由;四轴冲突时如实呈现权衡,
交维护者拍板。
Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
os-dev-report
{ "issue": 24727, "status": "done", "branch": "claude/issue-24727-adr-0047-filterable-fields-amendment", "pr": "https://github.com/objectstack-ai/objectstack/pull/24756", "session": "session_01HEdP5tPhqQfzwRmKDxwn85 — subagent run; the parent seat session (the relay envelope carried the same id)", "premise_still_valid": true, "summary": "ADR-0047 amended in its own record (Prime Directive 13), docs only, one file: a dated Amendment (2026-10-20) blockquote joins the status block's Revision/Amendment chain and records that `filterableFields` retired in 18.0 with no replacement key and no rewrite (conversion `view-list-filterable-fields-removed` drops the key), that the auto-upgrade loader was never built, citing #24640, records 6278975049 (verbatim 「C」) and 6279033298 (verbatim 「提前」), record 6278907207 and PR #24721 `4bc3becd5`. Decision 1 (section 3.3 item 1) sentence is struck in place with ~~...~~ plus an italic annotation, following the file's own TL;DR #2 precedent; not deleted; no other ADR text moved. Draft PR #24756 opened through the relay (assignee os-justin, label skip-changeset, body byte-identical on read-back); Tier H, left draft for the seat and maintainer.", "tests": "No package touched: no dependency-closure build, no package test/typecheck, no ablation (documentation; no tested behaviour moved). Premise readings: (1) lines 154-155 and status line 3 as stated, on origin/main 580fd4ed3c (worktree base; `git diff f7005cbd8c 580fd4ed3c -- docs/adr/0047-object-ui-run-modes.md` empty). (2) `git grep -n filterableFields -- packages/spec/src` at 580fd4ed3c: 92 lines, all retirement kit (view.zod.ts tombstone, conversions/registry.ts stripKeys drop + fixture, two 18.* retired-key entries, semantic entry, registry.ts.template, view.form.ts comment, four test files); no rewrite to userFilters.fields. Control on the pre-retirement tree 4bc3becd5^ = 0904d856e3 (`merge-base --is-ancestor 4bc3becd5 HEAD` exit 0): whole-repo non-test non-md grep = 25 lines (declaration, form input, generated form translations, surface/liveness artifacts, lint + metadata-protocol field-ref checks, metadata-core FLS name list); none rewrites the key. Clone is shallow, so never-built is read on those two trees, not all history. objectui local checkout f9401e6: no line pairing filterableFields with userFilters/upgrade. (3) section 4 Non-goals one-release courtesy holds, unchanged. Render check: marked 16.4.2 (gfm) renders the struck sentence as one strikethrough span across its line break and the new amendment inside the status blockquote. Control-byte self-scan of the ADR: zero hits (grep exit 1).", "gates": "All 19 at HEAD 6d1c09b965; re-derived `dispatch-gates --commands --repo objectstack-ai/objectstack` on the actual diff = the dispatch's 19; each run redirected then $? captured. exit 0: node scripts/check-adr-links.mjs (770 relative link destinations resolve); --self-test; node scripts/check-adr-symbol-anchors.mjs (2369 anchors across 142 records resolve, 0 line anchors); --self-test; node scripts/check-ci-filter-parity.mjs; node scripts/check-closing-keyword-parity.mjs; --self-test; node scripts/check-comment-mask-corpus.mjs (9639 files, 0 disagree); pnpm check:adr-anchors; pnpm check:cross-package-test-inputs; pnpm check:doc-authoring; pnpm check:driver-memory-census; pnpm check:gitlink-declared; pnpm check:nul-bytes (no raw ASCII control bytes); pnpm check:pm-governed-merges; pnpm check:pm-prior-rulings; pnpm check:refd-timer-probe; pnpm check:watch-hint-literal; pnpm --filter @objectstack/lint run check:doc-formula-expressions :: first run exit 3 PREREQUISITE NOT MET (formula/lint dist absent in a fresh worktree, not a measurement), fixed per its own prescription under os-verify-lock (`turbo run build --concurrency=2 --filter=@objectstack/formula --filter=@objectstack/lint`, VERDICT command-exit 0, 4/4 cached), re-run exit 0. `--ran` reconciliation: 19 derived, 19 run, 0 NOT-MEASURED, 0 UNRUN (derived zero: every line carried its exit code). CI on PR head 6d1c09b965 at read time: 26 check-runs, success 2 (Check Changeset; No other open PR may claim the same issue), skipped 5 (one run each of Check PR Size and Check Changeset, Auto Label, two Packed-tarball smoke (opt-in)), in_progress 19 (the Lint and Type Check lanes, Governed Surface Queue Guard, Check Documentation Links, a second Check PR Size run, the card/branch claim checks) — in_progress is the honest value; CI convergence is the seat's.", "mcp_calls": "0 — no MCP GitHub tool used", "api_writes": "2 relay strokes (each one POST /repos/objectstack-ai/objectstack/dispatches as the session, executed by fleet-write as objectstack-fleet[bot]): stroke 1 pr_create = POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos/objectstack-ai/objectstack/issues/24756/assignees + POST /repos/objectstack-ai/objectstack/issues/24756/labels (run 39371196826, success); stroke 2 this report = POST /repos/objectstack-ai/objectstack/issues/24727/comments. Plus 2 git pushes (empty-branch probe, then 6d1c09b965) — not REST.", "open_questions": [], "out_of_scope_findings": [ "carrier: none (承接者:无) · noted in PR #24756 Acceptance notes, not filed — pre-existing rendering: ADR-0047's **Deciders** / **Builds on** / **Consumers** lines follow the status blockquote with no blank line, so Markdown lazy continuation folds them into its last paragraph (was the 2026-07-07 amendment's, now the new one's); kept byte-for-byte because the card says no other ADR text moves; polish class, excluded from filing", "carrier: none (承接者:无) · noted in PR #24756 Acceptance notes, not filed — residual readers of the retired `filterableFields` key after PR #24721: packages/lint validate-list-view-field-refs.ts, validate-field-consumers.ts, reference-integrity-suite.ts, rule-explanations.ts; packages/metadata-protocol metadata-diagnostics.ts; packages/metadata-core object-schema-fls-references.ts LIST_VIEW_NAME_LISTS (validate-react-page-props.ts reads a JSX ListView React prop of that name, not stored metadata); every list-view door refuses the key at parse, so these are dead reads (zero-pull / dead-code class, excluded from filing)" ], "line_budget": "docs/adr/0047-object-ui-run-modes.md 295 to 317 lines (+24 / -2). Added 27-46: a bare quote-marker separator (27) and the 19-line Amendment (2026-10-20) blockquote (28-46), inserted after the 2026-07-07 amendment and before **Deciders**. Modified 154-155, now 174-175: the Decision 1 sentence wrapped in ~~...~~ (text unchanged), with the annotation opening on 175. Added 176-177: the rest of the italic annotation. Not in the line ratchet (CEILINGS cover the pm-dispatch skill tree only).", "deviations": [ "Worktree base is origin/main 580fd4ed3c, not the dispatch's f7005cbd8c: a concurrent fetch had advanced origin/main by the time the worktree was created; the ADR file is byte-identical between the two (empty git diff).", "Commit trailer pair is the AGENTS.md model-free form (Claude-Session + Co-authored-by: Claude), not the harness reminder's model-named Co-Authored-By line, following AGENTS.md's precedence; the pre-push trailer check passed.", "PR body footer is the AGENTS.md session-URL footer form, not the harness reminder's robot-emoji line, for the same reason.", "Status line 3 (**Status**: Accepted ...; revised 2026-06-19) is not rewritten to mention 2026-10-20 — the card says no other ADR text moves; the dated amendment block carries it. Stated in the PR body as the one trade-off." ], "files_changed": [ "docs/adr/0047-object-ui-run-modes.md" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
ACCEPT → PR #24756 comment 6283756860 ·
domain:skillsseat 1 ·os-justin·session_01HEdP5tPhqQfzwRmKDxwn85· 2026-10-20T05:00Zdocs/adr/**): the PR stays draft and waits for an authorised approval (os-zhuangorhotlong, both requested); the seat lands it on approval. IsolatedCONTRACT_REVIEW_TIERreview PASS 6283742240 on head6d1c09b96; CI 30 success / 9 expected skips.pm:dispatched→needs-user-decisionin the same act (the PR hangs on a person).os explaintext atpackages/lint/src/rule-explanations.ts:3114/3149still names the retiredfilterableFieldsas a checked position — a lint-lane follow-up of PR feat(spec)!: retire the list view's filterableFields — declared as the userFilters.fields shorthand, read as a Filter-panel whitelist; no per-view whitelist replaces it #24721, checked for an existing card before any filing.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Landing armed ·
domain:skillsseat 1 ·os-justin·session_01HEdP5tPhqQfzwRmKDxwn85· 2026-10-20T05:13Zos-zhuang(2026-10-20T05:12Z), head6d1c09b96unchanged since the record. Landing pre-checks: CI converged with no red,check-expected-skipsOK,check-governed-mergesTier H under the human-merge threshold.pr_ready+automerge_enable) through the relay; the queue merges it,Fixes #24727closes this card, and the seat then removespm:dispatched.needs-user-decision→pm:dispatched(the approval is in; back to the working state until the merge).Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
Landing ·
domain:skillsseat 1 ·os-justin·session_01HEdP5tPhqQfzwRmKDxwn85· 2026-10-20T05:24Z795ff708d(Tier H: approved byos-zhuang, review 5581001724)795ff708dis an ancestor oforigin/main(795ff708d8)gh-readonly-queue/main/pr-24756-…still presentclaude/issue-24727-adr-0047-filterable-fields-amendmentstill presentState change: the card closed
completedby the PR'sFixes;pm:dispatchedremoved. ADR-0047 now carries the dated Amendment (2026-10-20) and the struck Decision 1 sentence onmain.Generated by Claude Code