Skip to content

Commit 6621836

Browse files
docs(adr-0050): Decision 2 notes that the add-record open mode is no longer declared on addRecord (#24975)
Refs #24692 The ADR half of letter B′ (ruling record [`6281834942`](#24692 (comment)), item 5; seat-2 hold [`6282077441`](#24692 (comment)): "the ADR-0050 Decision 2 note is Tier H, as its own one-line PR"). The spec half is PR #24970, which carries the card's closing keyword; this PR closes nothing. **Tier H.** The diff touches `docs/adr/**`, a governed surface, so this PR lands only on an authorized APPROVED review (Prime Directive #14). It stays draft until then. **Land it after PR #24970**: the note says `addRecord.mode` / `addRecord.formView` *were* retired, which is true only once that PR is on `main`. ## What changes `docs/adr/0050-form-layout-vs-presentation.md`, one file, +4 / -1: - **Decision 2** gains a dated note, placed as a blockquote inside list item 2 (the numbering of items 3 and 4 is unchanged; checked by rendering the file): > **Note (2026-10-20, ruling record `6281834942`):** the list add-record open mode is no longer declared on `addRecord` — `addRecord.mode` and `addRecord.formView` were retired (ADR-0049 enforce-or-remove); the create form is chosen by convention (`formViews.create` when declared, else `form` / `formViews.default`), how it opens stays the renderer's, and a per-list open mode, if ever wanted, is the list's existing `navigation.mode`, never a second enum. - **Status line** gains a `· **Amended** (2026-10-20, letter B′ …) — … see the note under Decision 2.` segment, following the ADR-0069 / ADR-0088 / ADR-0043 convention. The status stays `Proposed`. The original decision text is not rewritten. The Context bullet and the Non-goals line that also name `addRecord.mode` are left as written: they record what was true when the ADR was proposed, and the Status line points readers to the note. ## Acceptance notes - No changeset. `docs/adr/**` publishes nothing, so this PR carries `skip-changeset`. - Gates at `fb75b6ae54`: `dispatch-gates.mjs --ran` reports 20 derived, 20 run, 0 not measured, each run with an exit code. `check:doc-authoring`, `check:nul-bytes`, `check-adr-links` (+ `--self-test`), `check-adr-symbol-anchors` (+ `--self-test`), `check:adr-anchors`, `check:pm-governed-merges`, `check:pm-prior-rulings` and the other 11 all exited 0. `check:doc-formula-expressions` first refused with exit 3 (a prerequisite was not built, so nothing was measured). After building `@objectstack/formula` and `@objectstack/lint` it exited 0. ## 维护者速读(草稿) **改了什么**:ADR-0050 决策 2 下加一条带日期的注记,状态行加一段 Amended 指向它。原决策正文不动。 **为什么改**:裁决 B′ 退役了列表「新建记录」配置里的 `mode` / `formView` 两个键(声明了但渲染器从不执行)。ADR-0050 决策 2 原文还把 `addRecord.mode` 列为「表单在哪里打开」的承载者,不加注记的话,ADR 会指向一个已不存在的键。 **风险与代价(含回滚)**:纯文档,不影响运行时。须在 PR #24970 合入后再落地,否则注记先于事实。回滚:revert 本 PR 即可。 **席位意见**: **你要做的**:PR #24970 合入后,对本 PR 给出批准(Approve)。 --- _Generated by [Claude Code](https://claude.ai/code/session_01D6F9axfoPzR7t8G1J7Ytzz)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 55d7aab commit 6621836

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

‎docs/adr/0050-form-layout-vs-presentation.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ADR-0050: Form layout vs presentation — split the overloaded `FormView.type`
22

3-
**Status**: Proposed (2026-06-15)
3+
**Status**: Proposed (2026-06-15) · **Amended** (2026-10-20, letter B′ on [#24692](https://github.com/objectstack-ai/objectstack/issues/24692), ruling record [`6281834942`](https://github.com/objectstack-ai/objectstack/issues/24692#issuecomment-6281834942), maintainer 「同意」) — the list add-record open mode is no longer declared on `addRecord`; see the note under Decision 2.
44
**Deciders**: ObjectStack Protocol Architects
55
**Builds on**: [ADR-0014](./0014-record-form-field-type.md) (record form field type), [ADR-0017](./0017-object-has-many-view.md) (object-bound views), [ADR-0049](./0049-no-unenforced-security-properties.md) (declared ≠ enforced discipline)
66
**Consumers**: `@objectstack/spec` (`ui/view.zod.ts` `FormViewSchema`), `@object-ui/plugin-form` (`ObjectForm` + `TabbedForm`/`WizardForm`/`SplitForm`/`DrawerForm`/`ModalForm`), `@object-ui/app-shell` (`RecordFormPage`, `AppContent`, `useActionModal`), examples + templates form views.
@@ -40,6 +40,9 @@ So `drawer`/`modal`/`split` *as `FormView.type` values* are **redundant with —
4040

4141
1. **`FormView.type` = layout only**: `z.enum(['simple','tabbed','wizard'])` (default `simple`).
4242
2. **Remove `drawer` / `modal` from `FormView.type`.** A form is *placed in* a drawer/modal by the **caller** (list `addRecord.mode`, `NavigationMode`, action `type:'modal'`), and the container renders an `ObjectForm` whose `type` is a *layout*. This makes "modal + tabbed" expressible — the whole point.
43+
44+
> **Note (2026-10-20, ruling record [`6281834942`](https://github.com/objectstack-ai/objectstack/issues/24692#issuecomment-6281834942)):** the list add-record open mode is no longer declared on `addRecord` — `addRecord.mode` and `addRecord.formView` were retired (ADR-0049 enforce-or-remove); the create form is chosen by convention (`formViews.create` when declared, else `form` / `formViews.default`), how it opens stays the renderer's, and a per-list open mode, if ever wanted, is the list's existing `navigation.mode`, never a second enum.
45+
4346
3. **Remove `split` from `FormView.type`.** Master-detail is already `subforms` (single-record parent/child) + the list's `NavigationMode:'split'` (list+detail). A form-level `split` is a third, redundant spelling.
4447
4. **`ObjectForm` drops its `drawer`/`modal`/`split` branches** (`DrawerForm`/`ModalForm` become caller-supplied containers; `SplitForm` retires in favour of `subforms`). It keeps `simple`/`tabbed`/`wizard`.
4548

0 commit comments

Comments
 (0)