Skip to content

Commit 0b15730

Browse files
docs(adr): ADR-0050 status line reads Accepted (letter A′ on #27032); regenerate the index (#30986)
<!-- claude-projects-attribution: {"github_login":"os-tesla"} --> _Requested by **Tesla** · [project thread](https://claude.ai/code/project/chan_01AXsQkLFKRdQCqQ3RTr6Jao?thread=cmsg_01AXsQkLFKRdQCqQ3RTr6Jao34NZC1kp9tY4B2eRFVJz1w)_ Fixes #26553 Clause-②: no Metadata-protocol: none ## 维护者速读 - 改了什么:ADR-0050(表单布局 vs 呈现)的状态行从 Proposed 改为 Accepted,写明你在 #27032 的 A′ 裁决、裁决记录号 6464210455 和两张切换卡(#27155 spec、#27159 renderer),2026-10-20 的修订文字原样保留在裁决句之后;`docs/adr/README.md` 由 `pnpm adr:index` 重新生成(Proposed 5 → 4,Accepted 130 → 131)。 - 为什么改:你 2026-10-28 已裁 ADR-0050 接受,两张切换卡都已完成关闭,但记录和索引仍写着 Proposed;读索引的人和从这份 ADR 切卡的人读到的都是过期状态。这是 #26553 十九份记录里最后一份未收尾的。 - 风险与回滚:只改一行状态文字加生成的索引,不动任何 schema、代码或 ADR 正文;回滚即 revert 本 PR。 - 先看:`docs/adr/0050-form-layout-vs-presentation.md` 第 3 行(裁决原句在前,原修订文字在后);`docs/adr/README.md` 第 20–21 行的计数与第 123 行 ADR-0050 那一行。 - 两分钟验证:`node scripts/adr-index.mjs --check`,预期打印 `adr-index: OK — docs/adr/README.md is current and every record parsed`,退出码 0。 - 需要你做的:本 PR 触及 `docs/adr/**`(Tier H),席位复审后由你批准合并。 ## What changes **`docs/adr/0050-form-layout-vs-presentation.md`, line 3 only.** The status line read: > `**Status**: Proposed (2026-06-15) · **Amended** (2026-10-20, letter B′ on #24692, ruling record 6281834942, maintainer 「同意」) — the list add-record open mode is no longer declared on `addRecord`; see the note under Decision 2.` It now opens with the ruled sentence, verbatim from the pointer on the card (issue 26553, comment 6464456446), and keeps the amendment text after it: > `**Status**: Accepted (2026-10-28, letter A′ on #27032, ruling record 6464210455) — cutover card #27155 (spec) + #27159 (renderer); the 2026-10-20 amendment stands · **Amended** (2026-10-20, letter B′ on #24692, ruling record 6281834942, maintainer 「同意」) — the list add-record open mode is no longer declared on `addRecord`; see the note under Decision 2.` The amendment's links (#24692 and its ruling record) are kept, not dropped: the ruled sentence says the amendment stands, and the links are the only place the record names where that amendment was decided. Dropping them would leave a standing amendment nobody can trace (Prime Directive 13). No other line of the record asserts a Proposed state: a case-insensitive grep for `proposed` over the file hits line 3 alone before the edit and nothing after it. **`docs/adr/README.md`** is regenerated by `node scripts/adr-index.mjs` (`pnpm adr:index`), never hand-edited: the ADR-0050 row moves from Proposed to Accepted, its date column reads the first ISO date of the new status value (2026-10-28), and the summary counts move to Accepted 131 / Proposed 4. The generator reads `Accepted` as the keyword because it is the earliest vocabulary entry in the value; the bold `Amended` sits well past the 80-character keyword window and would lose on position anyway. **No changeset.** `docs/adr/**` ships in no released package (no `files[]` under `packages/` names `docs/adr`), so the PR publishes nothing and carries `skip-changeset`, declared on the create. ## Tests All readings on head `ac204886` in a fresh worktree off `origin/main` `1aeeafd9`. - `node scripts/adr-index.mjs` wrote `docs/adr/README.md` (237 lines); `node scripts/adr-index.mjs --check` exit 0: `adr-index: OK — docs/adr/README.md is current and every record parsed`. - `pnpm check:adr-index` exit 0 (part of the derived gates below). - `git diff --shortstat origin/main...HEAD`: 2 files changed, 4 insertions, 4 deletions. - The edit was applied by a script asserting exactly one hit of the old line at line 3 and exactly one hit of the new line afterwards (old hits 0, new hits 1). ## Acceptance notes - **Neighbours.** Four open PRs touch `docs/adr/` records on their heads against their merge-base with `origin/main` `1aeeafd9`: #30828 (ADR-0142), #30862 (ADR-0125), #30899 (ADR-0146) and #30940 (ADR-0055). None of them touches `docs/adr/README.md`. Whichever of them and this PR lands later merges `main` and re-runs `pnpm adr:index` if a status line moved. - **Claim surface held.** The record's body (Decision, Migration, Consequences) is untouched: the claim names the status line alone, and the cutover's completion is recorded by the two closed cards the line names, not by rewriting the record. - `scripts/adr-index.mjs --check` is the gate's spelling; CI's lint ADR step calls `--report`, which warns on a stale index and never reds. The local `--check` reading above is the one that would. ## Verification <details><summary>Derived gates: 21 derived, 21 run, 0 NOT MEASURED, 0 UNRUN (head ac20488)</summary> `node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack` derived 21 commands from the committed change set (2 paths vs merge-base `1aeeafd9`; changed lines 8, under the 3000 human-merge threshold). Each ran in the foreground with stdin closed, its exit code landed on disk before any pipe; every one exited 0: - `node scripts/check-adr-links.mjs` and its `--self-test` - `node scripts/check-closing-keyword-parity.mjs` and its `--self-test` - `node scripts/check-comment-mask-corpus.mjs` - `node scripts/ci/plan-test-core-shards.mjs --self-test` - `pnpm --filter @objectstack/lint run check:doc-formula-expressions` (the lint closure was built first under `scripts/pm/os-verify-lock.sh`: VERDICT command-exit 0, 96 s held) - `pnpm check:adr-anchors`, `pnpm check:adr-index`, `pnpm check:adr-symbol-anchors` - `pnpm check:ci-filter-parity`, `pnpm check:closed-ceremony-text`, `pnpm check:cross-package-test-inputs` - `pnpm check:doc-authoring`, `pnpm check:driver-memory-census`, `pnpm 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` Reconciliation: `dispatch-gates.mjs --repo objectstack-ai/objectstack --ran` printed `21 derived famil(ies) accounted for — 21 run, 0 NOT-MEASURED`. Tier: `dispatch-gates --tier` names CONTRACT_REVIEW_TIER as mandatory from `docs/adr/**`; `check-governed-merges.mjs --test` lists both paths as governed. </details> Tier H by path (`docs/adr/**`). It stays a draft: the spec seat runs the contract-tier review, then hands the PR to the approver; no seat readies, queues or arms it. --- _Generated by [Claude Code](https://claude.ai/code/session_01L9qibw3DoQ7bgioFtvcrw7)_ Co-authored-by: Claude <noreply@anthropic.com>
1 parent ddcdc80 commit 0b15730

2 files changed

Lines changed: 4 additions & 4 deletions

File tree

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

Lines changed: 1 addition & 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) · **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.
3+
**Status**: Accepted (2026-10-28, letter A′ on #27032, ruling record 6464210455) — cutover card #27155 (spec) + #27159 (renderer); the 2026-10-20 amendment stands · **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.

‎docs/adr/README.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717

1818
| Status | Records |
1919
|---|---|
20-
| Accepted | 130 |
21-
| Proposed | 5 |
20+
| Accepted | 131 |
21+
| Proposed | 4 |
2222
| Superseded | 4 |
2323
| Draft | 3 |
2424
| Deferred | 2 |
@@ -120,7 +120,7 @@ A bare `ADR-0006` names the decision; its current text is [0006-project-environm
120120
| [ADR-0047](./0047-object-ui-run-modes.md) | Two run modes for object UI — data views vs interface pages, user filters, and runtime visualization choice | Accepted — 2026-06-12; revised 2026-06-19; amended 2026-11-02, interface-p… | 2026-06-12 | — | — |
121121
| [ADR-0048](./0048-cross-package-metadata-collision.md) | Cross-package metadata collision — package-id identity, namespace install gate, package-scoped resolution | Revised — 2026-06-13 — supersedes the original per-item collision detecti… | 2026-06-13 | — | ADR-0146 |
122122
| [ADR-0049](./0049-no-unenforced-security-properties.md) | Spec must not declare security properties the runtime does not enforce (enforce-or-remove gate) | Accepted — 2026-06-15 — implemented: fail-closed `DESTRUCTIVEOPERATIONS` (… | 2026-06-15 | — | — |
123-
| [ADR-0050](./0050-form-layout-vs-presentation.md) | Form layout vs presentation — split the overloaded `FormView.type` | Proposed — 2026-06-15 · Amended (2026-10-20, letter B′ on #24692, ruling r… | 2026-06-15 | — | — |
123+
| [ADR-0050](./0050-form-layout-vs-presentation.md) | Form layout vs presentation — split the overloaded `FormView.type` | Accepted — 2026-10-28, letter A′ on #27032, ruling record 6464210455 — cut… | 2026-10-28 | — | — |
124124
| [ADR-0051](./0051-inline-metadata-views-in-docs.md) | Inline metadata views in docs — the ` ```metadata ` fenced block | Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2… | 2026-10-28 | — | — |
125125
| [ADR-0052](./0052-audit-is-not-the-activity-feed.md) | Audit is not the activity feed — decompose collaboration, activity, and audit into bounded contexts | Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2… | 2026-10-28 | — | — |
126126
| [ADR-0053](./0053-date-and-datetime-semantics.md) | `date` is a timezone-naive calendar day; `datetime` is an instant rendered in a reference timezone | Accepted — 2026-06-16 — Phase 1 + addendum D-A1 implemented (`sql-driver.t… | 2026-06-16 | — | — |

0 commit comments

Comments
 (0)