Skip to content

Commit 29488cc

Browse files
huangyiireneclaude
andauthored
refactor(spec)!: retire the external-lookup and message-queue config families (ADR-0049, #8075) (#8230)
* refactor(spec)!: retire external-lookup and message-queue config families (ADR-0049, #8075) Fork (b) of the #8075 census: both modules are dead declarations whose only distinctive feature was an inline-credential sink. Route 3 retirement — no tombstone, no D2 conversion; RETIRED_DEFS_BY_MAJOR[17] (8 defs) + the D3 SemanticMigration external-lookup-message-queue-families-retired are the declaration. The #5552 data/ExternalFieldMapping:transform retired-keys entry is subsumed by the def retirement. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r * test(spec): close the retirement's trailing surfaces — pin count 826→824, PROTOCOL_MAP rows, strictness-ledger rows (#8075) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r * regen: rebuild generated artifacts from the merged tree (os-regen landing lap, #8075) Merge a296d81 took main's side of every os-regen path; this regeneration recomputes them from the merged sources — the 8 retired defs and 39 authorable keys leave again (deliberate deletions re-applied under the manifest gate), main's audit-log semantic entry, page.zod/editability references and the build-docs integration fix (#8219) all survive. check:generated 13/13. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 4f99860 commit 29488cc

53 files changed

Lines changed: 827 additions & 1793 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
---
2+
"@objectstack/spec": major
3+
---
4+
5+
refactor(spec)!: retire the external-lookup and message-queue config families — two dead declarations whose only distinctive feature was an inline-credential sink (#8075)
6+
7+
`ExternalDataSource(Schema)`, `ExternalFieldMapping(Schema|Parsed)`,
8+
`ExternalLookup(Schema|Parsed)` (the whole of `data/external-lookup.zod.ts`) and
9+
`MessageQueueConfig(Schema|Parsed)`, `MessageQueueProvider(Schema)`,
10+
`TopicConfig(Schema|Parsed)`, `ConsumerConfig(Schema|Parsed)`,
11+
`DeadLetterQueue(Schema|Parsed)` (the whole of `system/message-queue.zod.ts`) are
12+
REMOVED under ADR-0049 enforce-or-remove — 8 defs, 22 exported names, reference docs
13+
with them.
14+
15+
Both families are the #8075 census verdict (fork (b), accepted 2026-08-12):
16+
security-shaped declared surface with inline-credential sinks and **zero consumers**.
17+
`ExternalDataSourceSchema.authentication.config` was a record whose own docblock
18+
example wrote `"clientSecret": "..."` inline; `MessageQueueConfigSchema.sasl` required
19+
an inline `password` whenever present. Neither schema was reachable from any
20+
metadata-type binding, stack collection or `/meta` door, and neither had a single
21+
import outside `packages/spec` repo-wide (corpus-reach control passing in the same
22+
run). The consumed near-namesake `kernel/EventMessageQueueConfig` deliberately carries
23+
NO credential field — so the consumed MQ shape had no credential key and the
24+
credential-bearing MQ shape had no consumer. A dead schema minus one field is still a
25+
dead schema, so the whole declarations go, not just the credential faces (#3950).
26+
27+
The #7990 Option-B reopen trigger ("a third measured artefact-type surface") is NOT
28+
met — nothing ever persisted these; this is the ADR-0049 leg of the triage-agreed
29+
fork.
30+
31+
FROM → TO:
32+
33+
| removed | use instead |
34+
|---|---|
35+
| `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 |
36+
| `ExternalFieldMapping` | **nothing** — it existed only to serve `ExternalLookup.fieldMappings`. The base `shared/FieldMapping` and `integration/ConnectorFieldMapping` are untouched |
37+
| `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 |
38+
39+
**The fix:** delete the import. Nothing was ever deployed under either family — that
40+
is the finding, not a consolation — so there is no data migration; `tsc` reports
41+
TS2305 at every import of a retired name. Either capability returns via the ENFORCE
42+
route of ADR-0049 through a new ADR: the executor / broker admin service first, the
43+
vocabulary second.
44+
45+
**Subsumed:** the #5552 `data/ExternalFieldMapping:transform` `retiredKey()` tombstone
46+
and its `RETIRED_KEYS_BY_MAJOR[17]` entry — both land in the unreleased protocol 17,
47+
so composed, the key retirement is absorbed by the def retirement (the
48+
`WidgetManifest.performance` way): there is no longer a mapping shape to author the
49+
key INTO. The `shared/FieldMapping` tombstone and the
50+
`integration/ConnectorFieldMapping` spelling still reject `transform` with the #5552
51+
prescription; the `field-mapping-transform-removed` D2 conversion still rewrites
52+
`connectors[].fieldMappings[].transform`.
53+
54+
The retirement kit — route 3: no tombstone, no D2 conversion.
55+
`RETIRED_DEFS_BY_MAJOR[17]` (8 defs) plus the D3 `SemanticMigration`
56+
`external-lookup-message-queue-families-retired` are the declaration.
57+
58+
<!-- adr-0087: registered external-lookup-message-queue-families-retired -->

content/docs/getting-started/quick-reference.mdx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Categories that have no section here at all are named under
2323
[Categories Without a Section](#categories-without-a-section) — that curation is stated,
2424
not left implicit.
2525

26-
## Data Protocol (17 of 30 schemas)
26+
## Data Protocol (16 of 29 schemas)
2727

2828
Core business logic and data modeling schemas.
2929

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

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

92-
## System Protocol (18 of 37 schemas)
91+
## System Protocol (17 of 36 schemas)
9392

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

@@ -103,7 +102,6 @@ Runtime environment, logging, jobs, caching, and observability.
103102
| **[HTTP Server](/docs/references/system/http-server)** | `http-server.zod.ts` | RouteHandlerMetadata, MiddlewareConfig | Route + middleware metadata |
104103
| **[Job](/docs/references/system/job)** | `job.zod.ts` | Job, JobSchedule | Background job queue |
105104
| **[Logging](/docs/references/system/logging)** | `logging.zod.ts` | LoggingConfig | Structured logging |
106-
| **[Message Queue](/docs/references/system/message-queue)** | `message-queue.zod.ts` | MessageQueueConfig, TopicConfig | Message queuing |
107105
| **[Metadata Persistence](/docs/references/system/metadata-persistence)** | `metadata-persistence.zod.ts` | MetadataHistoryRecord, MetadataDiffResult | Metadata storage |
108106
| **[Metrics](/docs/references/system/metrics)** | `metrics.zod.ts` | Metrics | Application metrics |
109107
| **[Migration](/docs/references/system/migration)** | `migration.zod.ts` | Migration | Schema migration |

content/docs/references/data/external-lookup.mdx

Lines changed: 0 additions & 97 deletions
This file was deleted.

content/docs/references/data/index.mdx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ This section contains all protocol schemas for the data layer of ObjectStack.
2323
<Card href="/docs/references/data/driver-sqlite" title="Driver Sqlite" description="Source: packages/spec/src/data/driver/sqlite.zod.ts" />
2424
<Card href="/docs/references/data/driver-turso" title="Driver Turso" description="Source: packages/spec/src/data/driver/turso.zod.ts" />
2525
<Card href="/docs/references/data/external-catalog" title="External Catalog" description="Source: packages/spec/src/data/external-catalog.zod.ts" />
26-
<Card href="/docs/references/data/external-lookup" title="External Lookup" description="Source: packages/spec/src/data/external-lookup.zod.ts" />
2726
<Card href="/docs/references/data/feed" title="Feed" description="Source: packages/spec/src/data/feed.zod.ts" />
2827
<Card href="/docs/references/data/field" title="Field" description="Source: packages/spec/src/data/field.zod.ts" />
2928
<Card href="/docs/references/data/field-value" title="Field Value" description="Source: packages/spec/src/data/field-value.zod.ts" />

content/docs/references/data/meta.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
"driver-nosql",
2121
"driver-sql",
2222
"external-catalog",
23-
"external-lookup",
2423
"---Documents & Seed---",
2524
"document",
2625
"feed",

content/docs/references/index.mdx

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Protocol Reference
3-
description: Every schema published by @objectstack/spec — 1578 schemas across 14 protocol modules
3+
description: Every schema published by @objectstack/spec — 1570 schemas across 14 protocol modules
44
---
55

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

3838
---
3939

@@ -146,7 +146,7 @@ Environments, packages and versions, marketplace, developer portal, tenancy.
146146

147147
## Data Protocol
148148

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

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

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

319318
## System Protocol
320319

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

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

@@ -343,7 +342,6 @@ The runtime environment — logging, jobs, cache, metrics, notifications, i18n a
343342
| [`job.zod.ts`](/docs/references/system/job) | `CronSchedule`, `IntervalSchedule`, `Job`, `JobExecution`, `JobExecutionStatus`, `OnceSchedule`, `RetryPolicy`, `Schedule` |
344343
| [`license.zod.ts`](/docs/references/system/license) | `Feature`, `License`, `LicenseMetricType`, `Plan` |
345344
| [`logging.zod.ts`](/docs/references/system/logging) | `ConsoleDestinationConfig`, `ExtendedLogLevel`, `ExternalServiceDestinationConfig`, `FileDestinationConfig`, `HttpDestinationConfig`, `LogDestination`, `LogDestinationType`, `LogEnrichmentConfig`, `LogEntry`, `LogFormat`, `LogLevel`, `LoggerConfig`, `LoggingConfig`, `StructuredLogEntry` |
346-
| [`message-queue.zod.ts`](/docs/references/system/message-queue) | `ConsumerConfig`, `DeadLetterQueue`, `MessageQueueConfig`, `MessageQueueProvider`, `TopicConfig` |
347345
| [`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` |
348346
| [`metrics.zod.ts`](/docs/references/system/metrics) | `HistogramBucketConfig`, `MetricAggregationConfig`, `MetricAggregationType`, `MetricDataPoint`, `MetricDefinition`, `MetricExportConfig`, `MetricLabels`, `MetricType`, `MetricUnit`, `MetricsConfig`, `ServiceLevelIndicator`, `ServiceLevelObjective`, `TimeSeries`, `TimeSeriesDataPoint` |
349347
| [`migration.zod.ts`](/docs/references/system/migration) | `AddFieldOperation`, `ChangeSet`, `CreateObjectOperation`, `DataMigrationFlag`, `DeleteObjectOperation`, `ExecuteSqlOperation`, `MigrationDependency`, `MigrationJournalEvent`, `MigrationOperation`, `ModifyFieldOperation`, `RemoveFieldOperation`, `RenameObjectOperation` |

content/docs/references/shared/mapping.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@ description: Mapping protocol schemas
77

88
Base Field Mapping Protocol
99

10-
Shared by: Connector, External Lookup
10+
Shared by: Connector
1111

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

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

1921
@example Basic field mapping
2022
```typescript

0 commit comments

Comments
 (0)