Skip to content

Commit 6d1c09b

Browse files
committed
docs(adr): ADR-0047 records the 18.0 retirement of filterableFields
ADR-0047's Decision 1 (section 3.3 item 1) still said `filterableFields` "stays as the legacy shorthand; loaders auto-upgrade it to `userFilters.fields` entries". The maintainer's ruling C on #24640 retired the key in 18.0 with no replacement key, and PR #24721 (4bc3bec) executed it: a retiredKey() tombstone refuses it at parse, and the conversion `view-list-filterable-fields-removed` drops it rather than rewriting it to `userFilters.fields`. The auto-upgrade loader the sentence promised was never built. Per Prime Directive 13 the record is amended in place: a dated Amendment (2026-10-20) blockquote joins the status block's existing Revision and Amendment chain, and Decision 1's sentence is struck with an annotation pointing at it, not deleted. No other ADR text moves. Claude-Session: https://claude.ai/code/session_01HEdP5tPhqQfzwRmKDxwn85 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 580fd4e commit 6d1c09b

1 file changed

Lines changed: 24 additions & 2 deletions

File tree

‎docs/adr/0047-object-ui-run-modes.md‎

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,26 @@
2424
> (need named presets on an object → use `listViews`). Enforced by a new
2525
> `ObjectUserFiltersSchema` (element narrowed to `dropdown`/`toggle`, `tabs`/
2626
> `showAllRecords` omitted), which `ObjectListViewSchema` now `.extend`s back in.
27+
>
28+
> **Amendment (2026-10-20) — `filterableFields` is retired in 18.0, with no
29+
> replacement key and no rewrite (#24640: the maintainer ruled 「C」, record
30+
> 6278975049, and pulled it into 18.0 with 「提前」, record 6279033298;
31+
> executed by PR #24721, `4bc3becd5`).** §3.3 item 1 below said
32+
> `filterableFields` "stays as the legacy shorthand; loaders auto-upgrade it to
33+
> `userFilters.fields` entries". That loader was never built: on the tree the
34+
> retirement replaced, the key was declared, offered as a Studio form input and
35+
> checked for field references, and nothing rewrote it into
36+
> `userFilters.fields`; its one renderer, objectui's `ListView`, read it as the
37+
> Filter panel's field whitelist instead. The ruling retires the key with no
38+
> replacement key: the list-view shapes (`ListViewSchema`,
39+
> `ObjectListViewSchema`) refuse it at parse with a `retiredKey()` tombstone
40+
> that names the fix, and the conversion `view-list-filterable-fields-removed`
41+
> drops it from stored views. No conversion rewrites it to
42+
> `userFilters.fields`: that rewrite keeps nothing an author saw — the
43+
> whitelist would vanish and quick-filter chips would appear (record
44+
> 6278907207). A curated end-user filter bar is authored as `userFilters`.
45+
> §3.3 item 1's sentence is struck in place, not deleted; §4 already called
46+
> the alias a one-release courtesy, not a commitment.
2747
**Deciders**: ObjectStack Protocol Architects
2848
**Builds on**: [ADR-0005](./0005-metadata-customization-overlay.md) (one Zod source per type, org overlay), [ADR-0017](./0017-object-has-many-view.md) (independent view entities, `viewKind`), [ADR-0019](./0019-app-as-consumer-unit.md) (App is the consumer-facing unit — navigation decides what users see), [ADR-0027](./0027-metadata-authoring-lifecycle.md) (draft · publish lifecycle), [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (**AI is the long-term author of metadata — the design center this ADR inherits**)
2949
**Consumers**: `@objectstack/spec` (view + page Zod schemas), `@objectstack/objectql` (registry validation/diagnostics), `../objectui` (console `ObjectView` / `PageView`, `plugin-list`), framework templates (`hotcrm`, `app-showcase`), the `objectstack-ui` authoring skill
@@ -151,8 +171,10 @@ have; we do not rely on lint to forbid what the type can simply not express.
151171

152172
Attached as `ListViewSchema.userFilters` (view-level convenience) and
153173
`InterfacePageConfigSchema.userFilters` (the primary home).
154-
`filterableFields` stays as the legacy shorthand; loaders auto-upgrade it
155-
to `userFilters.fields` entries.
174+
~~`filterableFields` stays as the legacy shorthand; loaders auto-upgrade it
175+
to `userFilters.fields` entries.~~ *(Struck by the 2026-10-20 amendment —
176+
`filterableFields` retired in 18.0 by ruling C on #24640, with no
177+
replacement key and no rewrite; see the status block above.)*
156178

157179
2. **Runtime visualization whitelist.**
158180
`UserActionsConfigSchema.visualizations?: z.union([z.boolean(), z.array(ViewTypeEnum)])`

0 commit comments

Comments
 (0)