|
| 1 | +--- |
| 2 | +"@objectstack/spec": minor |
| 3 | +--- |
| 4 | + |
| 5 | +feat(spec)!: remove form-surfaced dead metadata props + correct 3 misclassified-live entries (#2377, ADR-0049) |
| 6 | + |
| 7 | +The next enforce-or-remove slice of #2377. Versioned `minor` per the launch-window |
| 8 | +policy (the fixed group makes a `major` promote the whole monorepo). |
| 9 | + |
| 10 | +## Removed (dead, no runtime reader — verified in both framework and objectui) |
| 11 | + |
| 12 | +- **field**: `columnName`, `index`, `referenceFilters`. This empties the field |
| 13 | + dead-prop set. `columnName` also removed its now-moot **ADR-0062 D7** lint |
| 14 | + (`validate-expressions.ts`), the dead `StorageNameMapping.resolveColumnName` / |
| 15 | + `buildColumnMap` / `buildReverseColumnMap` helpers, and closes ADR-0062 R10 — |
| 16 | + external physical-column mapping is `external.columnMap` only. |
| 17 | +- **object**: `tags`, `active`, `abstract` — now rejecting tombstones in |
| 18 | + `UNKNOWN_KEY_GUIDANCE`. |
| 19 | +- **agent**: `tenantId`. |
| 20 | + |
| 21 | +The removed props are dropped from the authoring forms (`field/object/agent.form.ts`) |
| 22 | +and the regenerated metadata-forms i18n bundles. |
| 23 | + |
| 24 | +## Corrected to `live` (the ledger was wrong — readers existed) |
| 25 | + |
| 26 | +- **object `isSystem`** — `plugin-sharing` `effectiveSharingModel` defaults a |
| 27 | + no-`sharingModel` `isSystem` object to public; also read by the security-posture |
| 28 | + lint. KEPT. |
| 29 | +- **object `enable.searchable`** — `metadata-protocol` global search (`searchAll`) |
| 30 | + uses `enable.searchable === false` as an opt-out. KEPT. |
| 31 | +- **action `type:'form'`** — objectui `ActionRunner.executeForm` routes it to the |
| 32 | + FormView at `/forms/:target`; a build-time lint validates the target. KEPT. |
| 33 | + |
| 34 | +## Deliberately deferred |
| 35 | + |
| 36 | +`object.enable.trash` / `enable.mru` — dead, but inert `default(true)` flags set by |
| 37 | +~35 `sys-*.object.ts` files; removing them is high-churn / low-value. Left `dead` |
| 38 | +(authorWarn-skipped). |
| 39 | + |
| 40 | +## Migration |
| 41 | + |
| 42 | +- field/agent props: authoring them was already a no-op; they now strip silently. |
| 43 | + `columnName` → the physical column is always the field key (rename the field, or |
| 44 | + use `external.columnMap` for external objects); `index` → declare it in object |
| 45 | + `indexes[]`; `referenceFilters` → `lookupFilters`. |
| 46 | +- object `tags`/`active`/`abstract`: `ObjectSchema.create()` now throws a located |
| 47 | + error naming the removal. None gated anything at runtime — remove them. |
0 commit comments