Skip to content

Commit fc3733b

Browse files
committed
fix(spec): the editInline D3 guidance names no tracker id; the changeset declares Clause-②: no
Patch round on the contract review (a moved default neither widens nor narrows the accept set; the banner and the ADR-0087 marker carry the breaking signal) and the Test Core red it found: packages/cli/test/migrate-meta-engine-guidance.test.ts refuses a tracker id in printed guidance. The entry's reason now says "the one-vocabulary rule objectui ruled for the fold"; the citation moves to the file's leading comment, as the other entries do; the DEFAULT_CHANGES_BY_MAJOR[17] reason is rewritten the same way; registry.ts regenerated. Claude-Session: https://claude.ai/code/session_01KNKBCRDJCu5tGy3TEbvtrF Co-authored-by: Claude <noreply@anthropic.com>
1 parent 24d9bdc commit fc3733b

4 files changed

Lines changed: 15 additions & 7 deletions

File tree

‎.changeset/22605-spec-list-view-edit-inline-default-on.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
`ListView.userActions.editInline` defaults to `true` on the v18 line: a list view is editable in place by default, under the permission gate that already exists, and `userActions: { editInline: false }` is the opt-out.
66

7-
Clause-②: yes (widening)
7+
Clause-②: no
88

99
<!-- adr-0087: registered list-view-edit-inline-default-on -->
1010

‎packages/spec/scripts/lib/default-changes.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,8 @@ export const DEFAULT_CHANGES_BY_MAJOR: Readonly<Record<number, readonly Declared
562562
'A RULED behaviour change, not a correction: the maintainer ruled on 2026-10-10, for the '
563563
+ 'v18 line, 「乙 v18 把 spec 默认翻成 true,editInline: false 变成关法。」 — a list view is '
564564
+ 'editable in place by default, under the permission gate that already exists, and '
565-
+ '`userActions: { editInline: false }` is the opt-out. The one-vocabulary rule of '
566-
+ 'objectui#5144 (a boolean `inlineEdit` folds into `editInline`, an explicit `editInline` '
565+
+ '`userActions: { editInline: false }` is the opt-out. The one-vocabulary rule objectui '
566+
+ 'ruled for the fold (a boolean `inlineEdit` folds into `editInline`, an explicit `editInline` '
567567
+ 'wins, declared = enforced) stands; only the default\'s value moves. '
568568
+ 'What moves: a list view (or a page `interfaceConfig`) whose `userActions` block omits '
569569
+ '`editInline` now parses to `true` where it parsed to `false`, so the renderer offers the '

‎packages/spec/src/migrations/entries/semantic/18.list-view-edit-inline-default-on.ts‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ import type { SemanticMigration } from '../../types.js';
1313
// is no tombstone and no RETIRED_KEYS_BY_MAJOR row, and no D2 conversion
1414
// exists — a mechanical pass writing `editInline: false` into every silent
1515
// view would preserve the old posture and defeat the ruling, and one writing
16-
// `true` would add nothing the default does not already do.
16+
// `true` would add nothing the default does not already do. The one-vocabulary
17+
// rule the printed `reason` names is objectui#5144 (a boolean view-level
18+
// `inlineEdit` folds into `editInline`; an explicit `editInline` wins); the
19+
// citation lives here, not in the printed guidance, which carries no tracker
20+
// number.
1721
export const entry: SemanticMigration = {
1822
id: 'list-view-edit-inline-default-on',
1923
// No backticks in `surface` — build-upgrade-guide.ts renders it inside a code
@@ -33,7 +37,7 @@ export const entry: SemanticMigration = {
3337
+ 'edits a cell in place with the field\'s type-aware widget; a user without `update` sees no '
3438
+ 'toggle, because the permission gate is untouched. A view with no `userActions` block at all '
3539
+ 'parses with none on either side; the renderer reads an absent key as the spec default. The '
36-
+ 'one-vocabulary rule of objectui#5144 stands: a boolean view-level `inlineEdit` folds into '
40+
+ 'one-vocabulary rule objectui ruled for the fold stands: a boolean view-level `inlineEdit` folds into '
3741
+ '`editInline` (`true` reads on and opens the grid in edit mode), and an explicit `editInline` '
3842
+ 'wins. Not losslessly convertible because the question is intent, not text: only the '
3943
+ 'deployment knows which silent lists were relying on read-only cells. The accept set is '

‎packages/spec/src/migrations/registry.ts‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15640,7 +15640,11 @@ const step18: MigrationStep = {
1564015640
// is no tombstone and no RETIRED_KEYS_BY_MAJOR row, and no D2 conversion
1564115641
// exists — a mechanical pass writing `editInline: false` into every silent
1564215642
// view would preserve the old posture and defeat the ruling, and one writing
15643-
// `true` would add nothing the default does not already do.
15643+
// `true` would add nothing the default does not already do. The one-vocabulary
15644+
// rule the printed `reason` names is objectui#5144 (a boolean view-level
15645+
// `inlineEdit` folds into `editInline`; an explicit `editInline` wins); the
15646+
// citation lives here, not in the printed guidance, which carries no tracker
15647+
// number.
1564415648
{
1564515649
id: 'list-view-edit-inline-default-on',
1564615650
// No backticks in `surface` — build-upgrade-guide.ts renders it inside a code
@@ -15660,7 +15664,7 @@ const step18: MigrationStep = {
1566015664
+ 'edits a cell in place with the field\'s type-aware widget; a user without `update` sees no '
1566115665
+ 'toggle, because the permission gate is untouched. A view with no `userActions` block at all '
1566215666
+ 'parses with none on either side; the renderer reads an absent key as the spec default. The '
15663-
+ 'one-vocabulary rule of objectui#5144 stands: a boolean view-level `inlineEdit` folds into '
15667+
+ 'one-vocabulary rule objectui ruled for the fold stands: a boolean view-level `inlineEdit` folds into '
1566415668
+ '`editInline` (`true` reads on and opens the grid in edit mode), and an explicit `editInline` '
1566515669
+ 'wins. Not losslessly convertible because the question is intent, not text: only the '
1566615670
+ 'deployment knows which silent lists were relying on read-only cells. The accept set is '

0 commit comments

Comments
 (0)