Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions .changeset/external-lookup-message-queue-families-retired.md
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
---
"@objectstack/spec": major
---

refactor(spec)!: retire the external-lookup and message-queue config families — two dead declarations whose only distinctive feature was an inline-credential sink (#8075)

`ExternalDataSource(Schema)`, `ExternalFieldMapping(Schema|Parsed)`,
`ExternalLookup(Schema|Parsed)` (the whole of `data/external-lookup.zod.ts`) and
`MessageQueueConfig(Schema|Parsed)`, `MessageQueueProvider(Schema)`,
`TopicConfig(Schema|Parsed)`, `ConsumerConfig(Schema|Parsed)`,
`DeadLetterQueue(Schema|Parsed)` (the whole of `system/message-queue.zod.ts`) are
REMOVED under ADR-0049 enforce-or-remove — 8 defs, 22 exported names, reference docs
with them.

Both families are the #8075 census verdict (fork (b), accepted 2026-08-12):
security-shaped declared surface with inline-credential sinks and **zero consumers**.
`ExternalDataSourceSchema.authentication.config` was a record whose own docblock
example wrote `"clientSecret": "..."` inline; `MessageQueueConfigSchema.sasl` required
an inline `password` whenever present. Neither schema was reachable from any
metadata-type binding, stack collection or `/meta` door, and neither had a single
import outside `packages/spec` repo-wide (corpus-reach control passing in the same
run). The consumed near-namesake `kernel/EventMessageQueueConfig` deliberately carries
NO credential field — so the consumed MQ shape had no credential key and the
credential-bearing MQ shape had no consumer. A dead schema minus one field is still a
dead schema, so the whole declarations go, not just the credential faces (#3950).

The #7990 Option-B reopen trigger ("a third measured artefact-type surface") is NOT
met — nothing ever persisted these; this is the ADR-0049 leg of the triage-agreed
fork.

FROM → TO:

| removed | use instead |
|---|---|
| `ExternalLookup` / `ExternalDataSource` (+ `authentication.config` inline secrets) | `object.external` (`ObjectExternalBindingSchema`, ADR-0015/0062) names a datasource by reference; connection credentials live in datasource config (`data/datasource.zod.ts`, `data/driver/`), never inline in object metadata. `data/external-catalog.zod.ts` is that path's catalog surface and is untouched |
| `ExternalFieldMapping` | **nothing** — it existed only to serve `ExternalLookup.fieldMappings`. The base `shared/FieldMapping` and `integration/ConnectorFieldMapping` are untouched |
| `MessageQueueConfig` (+ `sasl.username`/`sasl.password`) / `MessageQueueProvider` / `TopicConfig` / `ConsumerConfig` / `DeadLetterQueue` | the live MQ surface is `kernel/EventMessageQueueConfig` (`EventBusConfig.messageQueue`) — topic, pattern, format, batching; **no credential field by design**. Broker connection + SASL credentials are runtime deployment configuration, not authorable metadata. `kernel/DeadLetterQueueEntry` (the event bus's per-event DLQ record) is untouched |

**The fix:** delete the import. Nothing was ever deployed under either family — that
is the finding, not a consolation — so there is no data migration; `tsc` reports
TS2305 at every import of a retired name. Either capability returns via the ENFORCE
route of ADR-0049 through a new ADR: the executor / broker admin service first, the
vocabulary second.

**Subsumed:** the #5552 `data/ExternalFieldMapping:transform` `retiredKey()` tombstone
and its `RETIRED_KEYS_BY_MAJOR[17]` entry — both land in the unreleased protocol 17,
so composed, the key retirement is absorbed by the def retirement (the
`WidgetManifest.performance` way): there is no longer a mapping shape to author the
key INTO. The `shared/FieldMapping` tombstone and the
`integration/ConnectorFieldMapping` spelling still reject `transform` with the #5552
prescription; the `field-mapping-transform-removed` D2 conversion still rewrites
`connectors[].fieldMappings[].transform`.

The retirement kit — route 3: no tombstone, no D2 conversion.
`RETIRED_DEFS_BY_MAJOR[17]` (8 defs) plus the D3 `SemanticMigration`
`external-lookup-message-queue-families-retired` are the declaration.

<!-- adr-0087: registered external-lookup-message-queue-families-retired -->
6 changes: 2 additions & 4 deletions content/docs/getting-started/quick-reference.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -23,7 +23,7 @@ Categories that have no section here at all are named under
[Categories Without a Section](#categories-without-a-section) — that curation is stated,
not left implicit.

## Data Protocol (17 of 30 schemas)
## Data Protocol (16 of 29 schemas)

Core business logic and data modeling schemas.

Expand All@@ -43,7 +43,6 @@ Core business logic and data modeling schemas.
| **[SQL Driver](/docs/references/data/driver-sql)** | `driver-sql.zod.ts` | SQLDriverConfig, SQLDialect | SQL-specific driver |
| **[NoSQL Driver](/docs/references/data/driver-nosql)** | `driver-nosql.zod.ts` | NoSQLDriverConfig | NoSQL-specific driver |
| **[Document](/docs/references/data/document)** | `document.zod.ts` | Document | Document-oriented data |
| **[External Lookup](/docs/references/data/external-lookup)** | `external-lookup.zod.ts` | ExternalLookup | External data lookups |
| **[Postgres Driver](/docs/references/data/driver-postgres)** | `driver/postgres.zod.ts` | PostgresConfig | PostgreSQL configuration |
| **[Mongo Driver](/docs/references/data/driver-mongo)** | `driver/mongo.zod.ts` | MongoConfig | MongoDB configuration |

Expand DownExpand Up@@ -89,7 +88,7 @@ Plugin architecture, manifests, and kernel runtime.
| **[Metadata Loader](/docs/references/kernel/metadata-loader)** | `metadata-loader.zod.ts` | MetadataLoaderContract | Metadata loading |
| **[Package Registry](/docs/references/kernel/package-registry)** | `package-registry.zod.ts` | InstalledPackage, InstallPackageRequest | Package resolution |

## System Protocol (18 of 37 schemas)
## System Protocol (17 of 36 schemas)

Runtime environment, logging, jobs, caching, and observability.

Expand All@@ -103,7 +102,6 @@ Runtime environment, logging, jobs, caching, and observability.
| **[HTTP Server](/docs/references/system/http-server)** | `http-server.zod.ts` | RouteHandlerMetadata, MiddlewareConfig | Route + middleware metadata |
| **[Job](/docs/references/system/job)** | `job.zod.ts` | Job, JobSchedule | Background job queue |
| **[Logging](/docs/references/system/logging)** | `logging.zod.ts` | LoggingConfig | Structured logging |
| **[Message Queue](/docs/references/system/message-queue)** | `message-queue.zod.ts` | MessageQueueConfig, TopicConfig | Message queuing |
| **[Metadata Persistence](/docs/references/system/metadata-persistence)** | `metadata-persistence.zod.ts` | MetadataHistoryRecord, MetadataDiffResult | Metadata storage |
| **[Metrics](/docs/references/system/metrics)** | `metrics.zod.ts` | Metrics | Application metrics |
| **[Migration](/docs/references/system/migration)** | `migration.zod.ts` | Migration | Schema migration |
Expand Down
97 changes: 0 additions & 97 deletions content/docs/references/data/external-lookup.mdx

This file was deleted.

1 change: 0 additions & 1 deletion content/docs/references/data/index.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -23,7 +23,6 @@ This section contains all protocol schemas for the data layer of ObjectStack.
<Card href="/docs/references/data/driver-sqlite" title="Driver Sqlite" description="Source: packages/spec/src/data/driver/sqlite.zod.ts" />
<Card href="/docs/references/data/driver-turso" title="Driver Turso" description="Source: packages/spec/src/data/driver/turso.zod.ts" />
<Card href="/docs/references/data/external-catalog" title="External Catalog" description="Source: packages/spec/src/data/external-catalog.zod.ts" />
<Card href="/docs/references/data/external-lookup" title="External Lookup" description="Source: packages/spec/src/data/external-lookup.zod.ts" />
<Card href="/docs/references/data/feed" title="Feed" description="Source: packages/spec/src/data/feed.zod.ts" />
<Card href="/docs/references/data/field" title="Field" description="Source: packages/spec/src/data/field.zod.ts" />
<Card href="/docs/references/data/field-value" title="Field Value" description="Source: packages/spec/src/data/field-value.zod.ts" />
Expand Down
1 change: 0 additions & 1 deletion content/docs/references/data/meta.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,7 +20,6 @@
"driver-nosql",
"driver-sql",
"external-catalog",
"external-lookup",
"---Documents & Seed---",
"document",
"feed",
Expand Down
14 changes: 6 additions & 8 deletions content/docs/references/index.mdx
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
---
title: Protocol Reference
description: Every schema published by @objectstack/spec — 1578 schemas across 14 protocol modules
description: Every schema published by @objectstack/spec — 1570 schemas across 14 protocol modules
---

{/* ⚠️ AUTO-GENERATED — DO NOT EDIT. Run build-docs.ts to regenerate. Hand-written docs live in the module folders under content/docs/. */}
Expand All@@ -23,17 +23,17 @@ counts are sums of the rows they head. Regenerate with
| [API Protocol](/docs/references/api) | 28 | 412 | REST/GraphQL contracts, endpoints, routing, realtime, batch, discovery. |
| [Automation Protocol](/docs/references/automation) | 13 | 68 | Flows and their nodes, approvals, ETL pipelines, webhooks, state machines, execution records. |
| [Cloud Protocol](/docs/references/cloud) | 11 | 94 | Environments, packages and versions, marketplace, developer portal, tenancy. |
| [Data Protocol](/docs/references/data) | 30 | 166 | Objects, fields, queries, filters, datasources and drivers — the ObjectQL layer. |
| [Data Protocol](/docs/references/data) | 29 | 163 | Objects, fields, queries, filters, datasources and drivers — the ObjectQL layer. |
| [Identity Protocol](/docs/references/identity) | 5 | 28 | Users and accounts, organizations, positions, API keys, SCIM provisioning. |
| [Integration Protocol](/docs/references/integration) | 1 | 27 | The single connector protocol (ADR-0097) — catalog descriptors and provider-bound instances. |
| [Kernel Protocol](/docs/references/kernel) | 31 | 176 | Plugin lifecycle and manifests, capabilities and security, metadata loading, service registry. |
| [QA Protocol](/docs/references/qa) | 1 | 8 | Declarative test suites — scenarios, steps, actions and assertions. |
| [Security Protocol](/docs/references/security) | 5 | 27 | Permission sets, row-level security, sharing rules, tenancy posture. |
| [Shared Protocol](/docs/references/shared) | 8 | 31 | Primitives used across every protocol — identifiers, HTTP, expressions, error maps, enums. |
| [Studio Protocol](/docs/references/studio) | 3 | 35 | Studio designer metadata — the authoring surfaces for the protocols above. |
| [System Protocol](/docs/references/system) | 37 | 292 | The runtime environment — logging, jobs, cache, metrics, notifications, i18n and compliance. |
| [System Protocol](/docs/references/system) | 36 | 287 | The runtime environment — logging, jobs, cache, metrics, notifications, i18n and compliance. |
| [UI Protocol](/docs/references/ui) | 16 | 148 | Apps, pages, views, dashboards, reports, actions and themes — the ObjectUI layer. |
| **Total** | **200** | **1578** | 14 protocol modules |
| **Total** | **198** | **1570** | 14 protocol modules |

---

Expand DownExpand Up@@ -146,7 +146,7 @@ Environments, packages and versions, marketplace, developer portal, tenancy.

## Data Protocol

**Source:** `packages/spec/src/data/` · **Import:** `@objectstack/spec/data` · **30 pages, 166 schemas**
**Source:** `packages/spec/src/data/` · **Import:** `@objectstack/spec/data` · **29 pages, 163 schemas**

Objects, fields, queries, filters, datasources and drivers — the ObjectQL layer.

Expand All@@ -169,7 +169,6 @@ Objects, fields, queries, filters, datasources and drivers — the ObjectQL laye
| [`driver/sqlite.zod.ts`](/docs/references/data/driver-sqlite) | `SqliteConfig`, `SqliteWasmConfig`, `SqliteWasmPersistMode` |
| [`driver/turso.zod.ts`](/docs/references/data/driver-turso) | `TursoConfig`, `TursoTransportMode` |
| [`external-catalog.zod.ts`](/docs/references/data/external-catalog) | `ExternalCatalog`, `ExternalColumn`, `ExternalTable` |
| [`external-lookup.zod.ts`](/docs/references/data/external-lookup) | `ExternalDataSource`, `ExternalFieldMapping`, `ExternalLookup` |
| [`feed.zod.ts`](/docs/references/data/feed) | `FeedFilterMode`, `FeedItemType` |
| [`field.zod.ts`](/docs/references/data/field) | `CurrencyConfig`, `CurrencyValue`, `Field`, `FieldType`, `LocationCoordinates`, `SelectOption`, `UniqueScope` |
| [`field-value.zod.ts`](/docs/references/data/field-value) | `Address`, `AddressValue`, `CalendarDateValue`, `ClockTimeValue`, `FileLikeValue`, `FileReferenceIdValue`, `FileValue`, `InstantValue`, `LocationValue`, `ReferenceIdValue` |
Expand DownExpand Up@@ -318,7 +317,7 @@ Studio designer metadata — the authoring surfaces for the protocols above.

## System Protocol

**Source:** `packages/spec/src/system/` · **Import:** `@objectstack/spec/system` · **37 pages, 292 schemas**
**Source:** `packages/spec/src/system/` · **Import:** `@objectstack/spec/system` · **36 pages, 287 schemas**

The runtime environment — logging, jobs, cache, metrics, notifications, i18n and compliance.

Expand All@@ -343,7 +342,6 @@ The runtime environment — logging, jobs, cache, metrics, notifications, i18n a
| [`job.zod.ts`](/docs/references/system/job) | `CronSchedule`, `IntervalSchedule`, `Job`, `JobExecution`, `JobExecutionStatus`, `OnceSchedule`, `RetryPolicy`, `Schedule` |
| [`license.zod.ts`](/docs/references/system/license) | `Feature`, `License`, `LicenseMetricType`, `Plan` |
| [`logging.zod.ts`](/docs/references/system/logging) | `ConsoleDestinationConfig`, `ExtendedLogLevel`, `ExternalServiceDestinationConfig`, `FileDestinationConfig`, `HttpDestinationConfig`, `LogDestination`, `LogDestinationType`, `LogEnrichmentConfig`, `LogEntry`, `LogFormat`, `LogLevel`, `LoggerConfig`, `LoggingConfig`, `StructuredLogEntry` |
| [`message-queue.zod.ts`](/docs/references/system/message-queue) | `ConsumerConfig`, `DeadLetterQueue`, `MessageQueueConfig`, `MessageQueueProvider`, `TopicConfig` |
| [`metadata-persistence.zod.ts`](/docs/references/system/metadata-persistence) | `MetadataCollectionInfo`, `MetadataDiffResult`, `MetadataFallbackStrategy`, `MetadataFormat`, `MetadataHistoryQueryOptions`, `MetadataHistoryQueryResult`, `MetadataHistoryRecord`, `MetadataHistoryRetentionPolicy`, `MetadataLoadOptions`, `MetadataLoadResult`, `MetadataLoaderContract`, `MetadataManagerConfig`, `MetadataRecord`, `MetadataSaveOptions`, `MetadataSaveResult`, `MetadataScope`, `MetadataSource`, `MetadataState`, `MetadataStats`, `MetadataWatchEvent`, `PackagePublishResult` |
| [`metrics.zod.ts`](/docs/references/system/metrics) | `HistogramBucketConfig`, `MetricAggregationConfig`, `MetricAggregationType`, `MetricDataPoint`, `MetricDefinition`, `MetricExportConfig`, `MetricLabels`, `MetricType`, `MetricUnit`, `MetricsConfig`, `ServiceLevelIndicator`, `ServiceLevelObjective`, `TimeSeries`, `TimeSeriesDataPoint` |
| [`migration.zod.ts`](/docs/references/system/migration) | `AddFieldOperation`, `ChangeSet`, `CreateObjectOperation`, `DataMigrationFlag`, `DeleteObjectOperation`, `ExecuteSqlOperation`, `MigrationDependency`, `MigrationJournalEvent`, `MigrationOperation`, `ModifyFieldOperation`, `RemoveFieldOperation`, `RenameObjectOperation` |
Expand Down
6 changes: 4 additions & 2 deletions content/docs/references/shared/mapping.mdx
Original file line numberDiff line numberDiff line change
Expand Up@@ -7,14 +7,16 @@ description: Mapping protocol schemas

Base Field Mapping Protocol

Shared by: Connector, External Lookup
Shared by: Connector

This module provides the canonical field mapping schema used across
ObjectStack for data synchronization.

**Use Cases:**
- Integration connectors ([integration/connector.zod.ts](/docs/references/integration/connector))
- External lookups ([data/external-lookup.zod.ts](/docs/references/data/external-lookup))
- (`data/external-lookup.zod.ts`'s `ExternalFieldMappingSchema` extended
this base too, until the whole external-lookup family was retired in
#8075 — ADR-0049, zero consumers.)

@example Basic field mapping
```typescript
Expand Down
Loading
Loading