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
14 changes: 14 additions & 0 deletions .changeset/spec-conversions-connector-provenance-anchors.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
'@objectstack/spec': patch
---

Provenance comments in `conversions/registry.ts` and `integration/connector.zod.ts` were re-anchored

Clause-β‘‘: no

Thirteen comment and docblock sites in `src/conversions/registry.ts` and
`src/integration/connector.zod.ts` cited tracker numbers that no longer resolve on
GitHub. They now cite the record that decided the matter: ADR-0087's 2026-09-13
addendum for the data-at-rest seams `retiredFromLoadPath` does not hold back, and
otherwise the commit in this repository's history. Comments only: no type, schema,
export, `describe()` text, conversion `summary` or runtime behaviour changes.
26 changes: 13 additions & 13 deletions packages/spec/src/conversions/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ function renameVisibilityAlias(
* `visibleWhen` across all layers. Applies to form sections and (recursively
* nested) form fields in every FORM payload {@link mapViewPayloads} reaches β€”
* `views[].form` / `views[].formViews.*`, a ViewItem record's `config`, and a
* flattened form overlay's top level (#13031). **Live window**: the protocol-15 loader accepts the deprecated
* flattened form overlay's top level (commit b799ac553). **Live window**: the protocol-15 loader accepts the deprecated
* key (the zod schemas also normalize it at parse β€” this entry makes the
* acceptance *declared, loud, and expiring* per ADR-0087 D2, and will
* graduate into the step-16 chain when the alias is removed).
Expand Down Expand Up @@ -2095,8 +2095,8 @@ const toolInertAuthoringKeysRemoved: MetadataConversion = {
*
* ⚠️ Fact 2 is about the MECHANISM, not about this entry, and it outlived the
* entry: `retiredFromLoadPath` still holds nothing back at three runtime seams
* (#16864). Before setting that flag on a DEFAULT FLIP β€” as opposed to a
* lossless delete or a rename β€” read that card, because the flag does not mean
* (ADR-0087's 2026-09-13 addendum names all three). Before setting that flag on a DEFAULT FLIP β€” as opposed to a
* lossless delete or a rename β€” read that addendum, because the flag does not mean
* what its name and every docblock around it say it means.
*/

Expand Down Expand Up @@ -3368,7 +3368,7 @@ const DATASOURCE_CONFIG_KEY_ALIASES: Readonly<
'sqlite-wasm': [['file', 'filename'], ['database', 'filename']],
postgres: [['connectionString', 'url'], ['user', 'username']],
mysql: [['connectionString', 'url'], ['user', 'username']],
// `mongodb` since #6345 β€” the canonical id was renamed from `mongo` so the
// `mongodb` since commit e2798fab7 β€” the canonical id was renamed from `mongo` so the
// contract canon matches what both boot hosts, the driver package and every
// URL scheme already said. Keyed by the CANONICAL id `resolveDriverId`
// returns, so a stored `driver: 'mongo'` still lands here through the alias.
Expand Down Expand Up @@ -3473,14 +3473,14 @@ const datasourceConfigDriverKeyAliases: MetadataConversion = {
};

/**
* `datasource.driver: 'mongo'` β†’ `'mongodb'` (protocol 17, #6345).
* `datasource.driver: 'mongo'` β†’ `'mongodb'` (protocol 17, commit e2798fab7).
*
* ## Why a stored value has to move at all
*
* `mongo` and `mongodb` have both been accepted spellings since #4410, and both
* still are β€” this conversion does NOT rescue a broken boot, and a deployment
* that never runs it keeps connecting exactly as before. What moved is the
* CANONICAL id: #6345's ruling renamed it to `mongodb`, the spelling both boot
* CANONICAL id: commit e2798fab7 landed the ruling that renamed it to `mongodb`, the spelling both boot
* hosts, the driver package (`@objectstack/driver-mongodb`) and every URL scheme
* already used, so that the id which selects a driver and the id which selects
* its config contract are one string with no mapping layer between them.
Expand Down Expand Up @@ -7341,12 +7341,12 @@ const translationPerAppSettingsRemoved: MetadataConversion = {

/**
* `translation.pages.<name>.components.<id>.submitLabel` β€” the component-copy
* key retired with its only declarer (protocol 18, #10926, ADR-0049).
* key retired with its only declarer (protocol 18, commit d173125fb, ADR-0049).
*
* The face is measured, not mirrored: each copy key exists because some
* component in `ComponentPropsMap` declares it, and `submitLabel`'s only
* declarer was `element:form` β€” retired whole by #9249 (`element-form-removed`
* above). The maintainer ruled retire over re-anchor (#10926): the live form
* above). The maintainer ruled retire over re-anchor (2026-08-22, landed as commit d173125fb): the live form
* surface's submit copy is `object-form`'s `submitText` (`I18nLabelSchema`),
* localizable at its own authoring site, so re-anchoring would have widened
* the face for one word. The key, its `submit` alias and its
Expand Down Expand Up @@ -8243,7 +8243,7 @@ const recordHighlightsFieldIconRemoved: MetadataConversion = {
};

/**
* `mapping.fieldMapping[].params` lookup keys removed (#10329, ADR-0049
* `mapping.fieldMapping[].params` lookup keys removed (commit 15d58dbf1, ADR-0049
* enforce-or-remove β€” the sub-walk half of the 17.0.0 #4509 mapping cleanup).
*
* `object` / `fromField` / `toField` / `autoCreate` declared a per-entry
Expand All @@ -8253,7 +8253,7 @@ const recordHighlightsFieldIconRemoved: MetadataConversion = {
* `import-coerce.ts` off the TARGET FIELD's own metadata β€” never off these
* keys. Implementing them (a second reference-resolution dialect on the import
* path) is what the code comment in `packages/rest/src/import-mapping.ts`
* declines to build, and the #10329 triage ruling confirms that posture.
* declines to build, and the triage ruling commit 15d58dbf1 landed confirms that posture.
*
* `autoCreate` was the one with teeth: it read as "create the referenced
* record when nothing matches", and nothing was ever created β€” with or without
Expand Down Expand Up @@ -8933,7 +8933,7 @@ const permissionAllowRestorePurgeRemoved: MetadataConversion = {
};

/**
* [#12868] The per-option `default` key leaves the FORM-VIEW options
* [commit c459da6bc] The per-option `default` key leaves the FORM-VIEW options
* vocabulary (protocol 18; maintainer-ruled narrowing 2026-08-28 on the
* objectui#6263 analysis, disposition η”²).
*
Expand All @@ -8951,7 +8951,7 @@ const permissionAllowRestorePurgeRemoved: MetadataConversion = {
*
* Walks the same payloads as `view-visibleOn-to-visibleWhen` β€” every FORM
* payload {@link mapViewPayloads} reaches, in all three persisted spellings
* (#13031) β€” through `sections[]`/`groups[]` and top-level
* (commit b799ac553) β€” through `sections[]`/`groups[]` and top-level
* `fields[]`, recursing into nested `fields` (composite/repeater/record rows
* carry their own option lists). Only the exact key `default` is stripped β€”
* the alias spellings `isDefault`/`selected` were never accepted on this
Expand Down Expand Up @@ -9242,7 +9242,7 @@ const fieldReferenceToAlias: MetadataConversion = {
};

/**
* `connector.errorMapping` removed (protocol 18, #14676 β€” ADR-0049
* `connector.errorMapping` removed (protocol 18, commit 13c48c2a5 β€” ADR-0049
* enforce-or-remove; triage ruling 2026-09-02, route: removal via the
* `spec-property-retirement` playbook; the split condition β€” a downstream
* consumer in objectui or a customer stack β€” measured empty at objectui
Expand Down
2 changes: 1 addition & 1 deletion packages/spec/src/integration/connector.zod.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1141,7 +1141,7 @@ const ConnectorBaseSchema = lazySchema(() => z.object({

// ADR-0010 β€” runtime protection envelope (internal β€” set by loader).
//
// [#6362, split out of #6245] Declared for the reason `webhook.zod.ts` and
// [commit b5404f496, the connector half #6245 left] Declared for the reason `webhook.zod.ts` and
// `sharing.zod.ts` state for their own spreads: BOTH metadata load paths call
// `applyProtection` on EVERY type, so a package-loaded connector already
// carries these keys by the time anything re-parses it β€” and `/meta/connector`
Expand Down
Loading