You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(spec,objectql,metadata-core)!: retire placeholder metadata kinds per ADR-0088
- spec kernel: MetadataTypeSchema + DEFAULT_METADATA_TYPE_REGISTRY drop
trigger/router/function/service (30 → 26 kinds) with tombstone comments
pointing at the delivered forms (hook / record_change flows;
contributes.routes + apis:; defineStack({functions}); the plugin
registry). external_catalog annotated RUNTIME-CREATED (ADR-0062/0088).
- plugin-structure: OPS_FILE_SUFFIX_REGEX drops the four suffixes.
- objectql: remove the dormant 'function'-kind load path (nothing ever
produced such items; defineStack({functions}) is the one way in) and
drop 'function' from the metadata-service sync list.
- metadata-core: lockstep enum follows.
- Tests that leaned on the retired kinds as deny-gate fixtures now use
the remaining allowRuntimeCreate:false kind (agent, ADR-0063) and
allowOrgOverride:false kinds (hook/validation/external_catalog); the
registry-invariant asserts keep the retired names as reintroduction
guards.
- Reference docs regenerated (gen:docs); ADR-0005/0010 prose updated.
- showcase KIND_COVERAGE shrinks in lockstep; external_catalog waiver is
now a permanent, documented exclusion.
- changeset: minor for spec/objectql/metadata-core.
Verified: spec 6690 tests, objectql 773, metadata-core 80,
metadata 260, metadata-protocol 11, full turbo build (70 tasks),
showcase verify, crm 19 — all green.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6pPpRszk9cD3SxcKNFMWs
The registry is the contract authors — human and AI — read to learn what can be authored, and these four kinds had no authoring surface, no loader, no schema, and no (or a dead) consumer. `MetadataTypeSchema` + `DEFAULT_METADATA_TYPE_REGISTRY` shrink 30 → 26; `OPS_FILE_SUFFIX_REGEX` drops the four suffixes; the dormant objectql load path that registered QL functions from `type: 'function'` metadata items is removed (`defineStack({ functions })` / plugin `contributes.functions` remain the delivered forms); the metadata-core lockstep enum follows. `external_catalog` stays and is now annotated RUNTIME-CREATED (ADR-0062): its lack of an authoring surface is correct design. The delivered replacements: `hook` / `record_change` flows (trigger), plugin `contributes.routes` + declarative `apis:` (router), `defineStack({ functions })` (function), the plugin/service registry (service). Persisted `sys_metadata` rows are unaffected — no production read path re-parses stored `type` values through the enum.
Copy file name to clipboardExpand all lines: content/docs/references/ui/component.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -346,7 +346,7 @@ Type: `string`
346
346
| :--- | :--- | :--- | :--- |
347
347
|**objectName**|`string`| ✅ | Related object name (e.g., "task", "opportunity") |
348
348
|**relationshipField**|`string`| ✅ | Field on related object that points to this record (e.g., "account_id") |
349
-
|**columns**|`string[]`|✅| Fields to display in the related list |
349
+
|**columns**|`string[]`|optional| Fields to display in the related list. Optional: when omitted, columns derive from the related object's highlightFields / default list columns (a related list is just another surface that lists that object). Override chain: child highlightFields → field-level relatedListColumns → this inline list.|
350
350
|**sort**|`string \| Object[]`| optional | Sort order for related records |
351
351
|**limit**|`integer`| ✅ | Number of records to display initially |
352
352
|**filter**|`Object[]`| optional | Additional filter criteria for related records |
Copy file name to clipboardExpand all lines: content/docs/references/ui/view.mdx
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -236,7 +236,8 @@ List chart view configuration
236
236
|**view**|`string`| optional | Name of the form view to use for details (e.g. "summary_view", "edit_form") |
237
237
|**preventNavigation**|`boolean`| ✅ | Disable standard navigation entirely |
238
238
|**openNewTab**|`boolean`| ✅ | Force open in new tab (applies to page mode) |
239
-
|**width**|`string \| number`| optional | Width of the drawer/modal (e.g. "600px", "50%") |
239
+
|**size**|`Enum<'auto' \| 'sm' \| 'md' \| 'lg' \| 'xl' \| 'full'>`| ✅ |[#2578] Overlay size bucket for drawer/modal detail: 'auto' (default — renderer derives from field count + viewport; AI writes nothing) or a coarse override sm/md/lg/xl/full. Prefer this over the pixel `width`; page mode ignores it. |
240
+
|**width**|`string \| number`| optional |[DEPRECATED → size] Pixel/percent width of the drawer/modal (e.g. "600px"). A pixel width cannot be chosen at authoring time without knowing the client viewport — use the `size` bucket. |
Copy file name to clipboardExpand all lines: docs/adr/0005-metadata-customization-overlay.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,10 +53,10 @@ derives its set from that flag — there is no parallel allowlist
53
53
| Domain | Type | Per-org override? | Why |
54
54
|:---|:---|:---:|:---|
55
55
| data |`object`, `field`| ❌ | A per-org overlay would diverge the table schema; shared DB cannot honour that. |
56
-
| data |`trigger`, `validation`, `hook`| ❌ | DB-side contracts. Per-org variants must ship as a separate package, not an overlay. |
56
+
| data |`validation`, `hook`| ❌ | DB-side contracts. Per-org variants must ship as a separate package, not an overlay. (`trigger` retired as a kind — ADR-0088.)|
57
57
| automation |`flow`, `workflow`, `approval`| ❌ | Carry execution side-effects (events, jobs, audit). Per-org variants are a deployment, not an overlay. |
| system |`datasource`, `router`, `function`, `service`| ❌ | Wiring level; changes require code paths, not metadata. |
59
+
| system |`datasource`| ❌ | Wiring level; changes require code paths, not metadata. (`router`/`function`/`service` retired as kinds — ADR-0088; they are code contributions.)|
60
60
| ai |`agent`, `tool`, `skill`| ❌ | Behavioural contracts with model providers; treat like flows. |
'FieldSchema is authored inline on objects (the stack DSL has no standalone `fields` collection); field-zoo exhausts every field type — see the variant-level test.',
63
63
},
64
-
trigger: {
65
-
status: 'waived',
66
-
reason:
67
-
'No declarative authoring surface: no stack collection or defineTrigger helper. Record-change triggering is demonstrated behaviorally by the record-change flows (requires: ["triggers"]).',
'Runtime-created via Setup → Datasources → Sync (ADR-0062); no declarative artifact an app package can ship. The showcase demos the federation flow that produces one.',
99
+
'PERMANENT by design (ADR-0088): a runtime-created snapshot produced by Setup → Datasources → Sync (ADR-0062). A package shipping one would be stale on arrival; the showcase demos the federation flow that produces it.',
0 commit comments