diff --git a/.changeset/13309-dropped-fields-reason-pin.md b/.changeset/13309-dropped-fields-reason-pin.md new file mode 100644 index 0000000000..6b799ef6fc --- /dev/null +++ b/.changeset/13309-dropped-fields-reason-pin.md @@ -0,0 +1,4 @@ +--- +--- + +Test-only change: the batch-6 spec-symbol pin in `@object-ui/data-objectstack` states `DroppedFieldsEvent['reason']` with `stored_expression` subtracted, so it compiles against both the pinned spec and objectstack `main` (objectui#13309). No published behaviour changes. diff --git a/packages/data-objectstack/src/spec-symbol-batch6.test.ts b/packages/data-objectstack/src/spec-symbol-batch6.test.ts index 8b34eae160..b54af07349 100644 --- a/packages/data-objectstack/src/spec-symbol-batch6.test.ts +++ b/packages/data-objectstack/src/spec-symbol-batch6.test.ts @@ -249,8 +249,24 @@ describe('DroppedFieldsEvent IS the spec type, not a mirror of it', () => { // this is the exact four-member union again, with no `Exclude`: any new arm // is a remainder `Equal` refuses, and `_ReasonIsNotString` below still // refuses the widening. + // + // IT FIRED A THIRD TIME at objectstack-ai/objectstack#24778, which added + // `stored_expression` (a stored field whose declared `expression` the engine + // computes on every write, so the computed value is kept, not the caller's), + // again in the Spec Shape Gate before any pin moved (objectui#13309). So the + // objectui#11206 shape is back: the member list is stated with + // `stored_expression` subtracted. At the pin the `Exclude` is a no-op; on + // objectstack `main` it subtracts exactly the new arm, so any other new arm + // is a remainder `Equal` refuses, and `_ReasonIsNotString` below still + // refuses a widening to `string`. At the pin bump that carries + // `stored_expression`, drop the `Exclude` and make this the five-member + // union (`writeWarningToast.test.ts`'s objectui#13178 tripwire fails on that + // bump to say so). type _ReasonIsTheEnum = Assert< - Equal + Equal< + Exclude, + 'readonly' | 'readonly_when' | 'primary_key' | 'computed' + > >; type _ReasonIsNotString = Assert, false>>;