Uh oh!
There was an error while loading. Please reload this page.
refactor(spec)!: retire the external-lookup and message-queue config families (ADR-0049, #8075) - #8230
Conversation
…lies (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
…ire-dead-credential-schemas
…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
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
📓 Docs Drift CheckThis PR changes 1 package(s): 106 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
⛔ 7 release-owned page(s) also reference the affected code. These are read-only:
|
…ire-dead-credential-schemas
…ding 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
huangyiirene
commented
Aug 12, 2026
Landing lap (os-regen) complete —
PR stays draft; PM drives flip + auto-merge. Generated by Claude Code Generated by Claude Code |
Uh oh!
There was an error while loading. Please reload this page.
…tree (#7872 relay lap over #8230/#8232) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r
os-regen merge lap for landing: merge origin/main (committed first, per scripts/pm/os-regen-merge.sh), then wholesale regen of the os-regen'd references/api pages from the merged tree. Sibling assertions on the regenerated tree: #8230 retirement state (def names only in retirement prose + migration entry), #8232 currency fraction-digit guard, #8234's 13 comparand-door exports in api-surface/data.json, #8236's groupBy union row all survive; MONGODB_MULTI_TENANT_UNSUPPORTED stays absent from the ledger and the references ErrorCode union reads main-minus-one (+265 -> +264; the union grew by 2 on main since the previous lap). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0123k4cam2jEAkPmbJeoaY3r
Fixes#8075
Phase 2 of the card: the ADR-0049 retirement route, following the ACCEPTed fork-(b) measurement (issue comment 5270144555, claim addendum 5270164082). Both dead credential-bearing schema families are removed whole —
data/external-lookup.zod.ts(3 defs: ExternalDataSource, ExternalFieldMapping, ExternalLookup — 8 exported names) andsystem/message-queue.zod.ts(5 defs: MessageQueueConfig, MessageQueueProvider, TopicConfig, ConsumerConfig, DeadLetterQueue — 14 exported names).Spot-verification of the measurement (on this branch's base, c10e9c3)
Re-ran the two load-bearing greps before deleting anything: zero files outside
packages/specreference either export-name family (all TS file types, excluding node_modules/dist/.cache), while the corpus-reach control (DatasourceSchemaunder identical exclusions) returns 8+ consumer files in the same run. Each module export was then verified individually: every non-test consumer of every export resolves inside the two modules themselves (ExternalLookupSchema was the only consumer of the other two data-side schemas, and is itself consumed by nothing; MessageQueueConfigSchema was the only consumer of its four siblings). The kernel "hits" for the MQ name are the substring insideEventMessageQueueConfigSchema— a different declaration, untouched. Liveness ledger: no rows exist for either module (absent, consistent with the modules never being metadata types) — nothing to delete, no orphan risk.Route and registration (per the spec-property-retirement playbook)
Route 3 — "nothing parses it": no carrier key, no door, no author document, so there is no tombstone and no D2 conversion (a prescription nobody can receive is noise; the #4834 / #4988 / #5055 / #6486 shape). The declaration is:
RETIRED_DEFS_BY_MAJOR[17]— 8 new entry files underpackages/spec/src/migrations/entries/retired-defs/(one per def, per the Splitmigrations/registry.ts's two append tables into per-entry files (registry half of #6957's ruling) #7297 conflict-free layout), concatenated bygen:migration-registry.SemanticMigrationexternal-lookup-message-queue-families-retired(entries/semantic/), carrying the three-axis reasoning, the replacement pointers (object.external+ datasource config for external data; kernelEventMessageQueueConfigfor MQ — no credential field by design), and acceptance criteria.Subsumed, the WidgetManifest.performance way: the #5552
data/ExternalFieldMapping:transformretired-keys entry (same unreleased major 17) — the def retirement is strictly stronger. Theshared/FieldMappingtombstone, theintegration/ConnectorFieldMappingspelling and thefield-mapping-transform-removedD2 conversion are untouched;shared/mapping.test.tsstill pins them.Ratchet-direction note (for review)
This is a whole-def deletion, so the instruments MUST move, and did: api-surface −22 names (pure removals, zero additions — verified by diff), authorable-surface −39 keys, json-schema.manifest −8 defs, export-origins −22, reference pages
data/external-lookup.mdxandsystem/message-queue.mdxdropped bygen:docs(228 files regenerated). Zero movement here would have meant the removal did not actually happen.Tests
data/external-lookup-retirement.test.ts,system/message-queue-retirement.test.ts): absence by resolved symbol identity over every public entry (zero holders for all 22 names), survivor pins for the live neighbours a too-wide sweep would take (ObjectExternalBindingSchema, ExternalCatalog trio, ImportFieldMappingSchema, EventMessageQueueConfig trio, DeadLetterQueueEntry trio, EventBusConfigSchema), file-deletion probes with anti-vacuity controls, runtime-namespace agreement, and two security-face pins:object.externalREJECTS an inlineauthenticationblock (strictObject,unrecognized_keys), and the liveEventMessageQueueConfigparses real configs while a smuggledsaslblock is stripped — nothing credential-shaped survives into the parsed value.Verification (all local, real output)
check:generated13/13 up to date (includes check:authorable-surface, check:api-surface, check:export-origins, check:docs, check:spec-changes, check:upgrade-guide, check:migration-registry, check:strictness-ledger, check:liveness).check:adr-0087-registrationPASS (changeset carries the registered marker),check:i18nPASS (9 packages in sync; no form inputs existed for either family),check:nul-bytesPASS,check:merge-driverPASS.pnpm --filter @objectstack/spec typecheckPASS; full spec suite on the MERGED tree: 385/385 files, 10150/10150 tests.turbo run build72/72 successful; examplesobjectstack validateon app-crm / app-showcase / app-todo all exit 0 (pre-existing warnings only); dogfood expression-conformance 3/3.packages/qa/dogfoodexpression-conformance ledger: zerocoversentries name either family (verified by count, not by pipe-masked grep); targeted suite run.Docs
gen:docs; index/meta regenerated.quick-reference.mdxloses the two rows (section counts decremented);build-docs.tspage lists drop the two names with deliberate-removal comments; the strictness ledger drops its twoexternal-lookup.zod.tsrows (the checker demands rows name existing files) with a retirement note;PROTOCOL_MAP.mddrops both module rows (its test refuses links to files that do not exist); the ADR-0122 pin file's count moves 826 to 824 with a receipt (Iso335/Iso586left with their retired schemas — ids retired, not freed).origin/mainwas merged twice under this branch (last at fa48973 — 3 spec files moved, all incontracts/, textually disjoint from this diff); the full §10 re-check (spec build, check:generated 13/13, full suite) ran on the merged tree.content/docs/releases/implementation-status.mdxstill calls external-lookup "pending" — releases-owned, filed as [docs] releases/implementation-status.mdx still lists external-lookup as a pending data protocol after the #8075 retirement #8165 (docs-only follow-up). The stalemessage-queuename in build-docs' INTEGRATION category is the DatabaseConnector.readReplicaConfig 是读副本的第二处死声明(ADR-0049 enforce-or-remove,#4468 收尾发现) #4480 connector-template ghost, not this surface — filed as Observation: build-docs.ts integration category lists 9 page names with no emitting module — onlyconnectorproduces a page #8166 (observation).Changeset
@objectstack/specmajor — acceptance surface shrinks on published exports (the #4583/#8078 precedent; the playbook's bump rule for removals). Carries the FROM → TO table, the one-line fix ("delete the import"), and the ADR-0087 markerregistered external-lookup-message-queue-families-retired.Landing note for the PM
os-regen faces ride this PR (authorable-surface, manifest, api-surface, export-origins, spec-changes, upgrade guide, references). The os-regen line was empty at dispatch; re-verify against current main at flip time — if main moved a spec face, this needs the regen-merge lap (
scripts/pm/os-regen-merge.sh), never a textual merge of the generated files.Generated by Claude Code