@stapel/listings-react 0.30.1 → 0.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @stapel/listings-react
2
2
 
3
+ ## 0.30.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Changing category no longer carries an answer the new category will not take.
8
+
9
+ Retention asked only whether the new schema DECLARED a slug, so two leaves
10
+ that both declare `color` — with different options behind it — kept a value
11
+ the new one refuses. Measured on a live stand: an analysis answered the colour
12
+ `zolotoy` on a wristwatch leaf, the category was corrected to laptops (gold is
13
+ `zolotistyy` there), and the publish gate then shut on a field the catalogue
14
+ marks optional and the server publishes without.
15
+
16
+ `retainKnownFeatureValues` and `droppedFeatureSlugs` now judge the VALUE with
17
+ `mirrorValidate` — the same function the publish gate reads, so a kept value
18
+ can never be one the gate refuses — and a dropped answer is named rather than
19
+ lost. The judge runs only when the schema actually changes, so a half-typed
20
+ answer inside one category is still the person's to fix.
21
+
3
22
  ## 0.30.1
4
23
 
5
24
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"ListingComposer.d.ts","sourceRoot":"","sources":["../../src/headless/ListingComposer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListingComposer.d.ts","sourceRoot":"","sources":["../../src/headless/ListingComposer.tsx"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { initialFeatureValues, toFeaturesDto, unsupportedTypes, useVocabularyCli
5
5
  import { useListingsRuntime } from "../model/context.js";
6
6
  import { useListing, useListingDraft } from "../model/queries.js";
7
7
  import { useCreateDraft, usePublishListing, useSaveDraft, } from "../model/mutations.js";
8
- import { createDraftBody, draftPatchFromValues, draftValuesFromDetail, draftValuesFromWire, droppedFeatureSlugs, emptyDraftValues, retainKnownFeatureValues, } from "../model/draft.js";
8
+ import { createDraftBody, draftPatchFromValues, draftValuesFromDetail, draftValuesFromWire, droppedFeatureSlugs, emptyDraftValues, } from "../model/draft.js";
9
9
  import { asFeatureDaoList } from "../model/features.js";
10
10
  import { featuresDtoFromDaoList } from "../model/features.js";
11
11
  import { LISTING_FIELD_ORDER, envelopeFieldErrors, mirrorDraft, publishRefusal, } from "../model/validation.js";
@@ -75,12 +75,47 @@ export function useListingComposer(options) {
75
75
  // the person then cleared.
76
76
  const schemaSettled = options.featuresLoading !== true && options.featuresError === undefined;
77
77
  const { features } = options;
78
+ /**
79
+ * WHICH SCHEMA THIS IS, by its content and not by its identity (D455).
80
+ *
81
+ * Hosts hand `features` as a fresh array on most renders — the storefront's
82
+ * comes out of a query mapper — so array identity says "a render happened",
83
+ * never "the questions changed". The value judge below may only run on the
84
+ * second, and this is how the two are told apart.
85
+ */
86
+ const schemaKey = useMemo(() => features
87
+ .map((feature) => `${feature.slug}:${JSON.stringify(feature.config ?? null)}`)
88
+ .join("|"), [features]);
89
+ /** The schema the values were last judged against — `null` until the first
90
+ * one settles. */
91
+ const judgedSchema = useRef(null);
78
92
  useEffect(() => {
79
93
  if (!schemaSettled || features.length === 0)
80
94
  return;
95
+ /* A DIFFERENT SCHEMA, not merely a different render.
96
+ *
97
+ * `false` on the very first settle, which is a REOPEN and not a switch:
98
+ * the answers came back from the server that stored them, and re-judging
99
+ * them against the catalogue as it stands today would silently delete a
100
+ * draft's contents on the way in. */
101
+ const switched = judgedSchema.current !== null && judgedSchema.current !== schemaKey;
102
+ judgedSchema.current = schemaKey;
81
103
  setValues((current) => {
82
- const gone = droppedFeatureSlugs(current.features, features);
83
- const kept = gone.length === 0 ? current.features : retainKnownFeatureValues(current.features, features);
104
+ /* On a SWITCH, `gone` is "what this schema will not carry": since
105
+ 0.30.2 that includes an answer whose slug survives but whose VALUE
106
+ this category refuses — two leaves both declaring `color` differ in
107
+ the options behind it (D455). Otherwise it stays the older, narrower
108
+ question — "which slugs is this schema not asking about?" — because
109
+ within ONE category a value the mirror refuses is a person typing,
110
+ and deleting that is the composer editing them mid-sentence. */
111
+ const gone = switched
112
+ ? droppedFeatureSlugs(current.features, features)
113
+ : Object.keys(current.features)
114
+ .filter((slug) => !features.some((feature) => feature.slug === slug))
115
+ .sort();
116
+ const kept = gone.length === 0
117
+ ? current.features
118
+ : Object.fromEntries(Object.entries(current.features).filter(([slug]) => !gone.includes(slug)));
84
119
  // `FeatureDef.default` (and the type's own default) is what the CATALOGUE
85
120
  // says a blank form opens with — a `select` option flagged `default`, a
86
121
  // preset date. It is applied ONLY where the draft has no answer: a
@@ -102,7 +137,7 @@ export function useListingComposer(options) {
102
137
  }
103
138
  return { ...current, features: { ...kept, ...seeded } };
104
139
  });
105
- }, [schemaSettled, features]);
140
+ }, [schemaSettled, features, schemaKey]);
106
141
  // The gallery is the upload bag's, whenever there is one: two sources of
107
142
  // truth for the same list is how a publish sends photos the person removed.
108
143
  const images = options.images?.refs ?? values.images;
@@ -1 +1 @@
1
- {"version":3,"file":"ListingComposer.js","sourceRoot":"","sources":["../../src/headless/ListingComposer.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ListingComposer.js","sourceRoot":"","sources":["../../src/headless/ListingComposer.tsx"],"names":[],"mappings":"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"}
@@ -170,8 +170,8 @@ export declare function draftPatchFromValues(values: ListingDraftValues, feature
170
170
  */
171
171
  export declare function createDraftBody(categoryId?: string): ListingDraftPatch;
172
172
  /**
173
- * Switching category: keep the answers whose slug the new schema also
174
- * declares, drop the rest.
173
+ * Switching category: keep the answers the new schema also asks for AND would
174
+ * accept, drop the rest.
175
175
  *
176
176
  * Spec §4.1 asks for exactly this, and the reason is the same one the forms
177
177
  * spec gives for `error.409.forms_version_superseded`: a person who picked
@@ -179,12 +179,15 @@ export declare function createDraftBody(categoryId?: string): ListingDraftPatch;
179
179
  * phones" should not retype what both categories ask for. A value whose slug
180
180
  * is gone IS dropped, because 0.6.0 rejects an unknown slug per feature —
181
181
  * carrying it would turn a category change into a publish refusal about a
182
- * field the composer no longer draws.
182
+ * field the composer no longer draws. Since 0.30.2 a value whose slug SURVIVES
183
+ * but which the new schema refuses is dropped for the same reason, which is
184
+ * the harm rather than the mechanism — see {@link judgeRetention}.
183
185
  */
184
186
  export declare function retainKnownFeatureValues(values: Readonly<Record<string, unknown>>, features: readonly FeatureDef[]): Readonly<Record<string, unknown>>;
185
- /** Slugs that were answered and are NOT in the new schema — what
186
- * {@link retainKnownFeatureValues} just dropped. A composer tells the person
187
- * ("2 answers do not apply to this category") instead of losing them
188
- * silently. */
187
+ /** Slugs that were answered and the new schema will not carry — what
188
+ * {@link retainKnownFeatureValues} just dropped, whether because the slug is
189
+ * gone or because the answer is not one this category offers. A composer
190
+ * tells the person ("2 answers do not apply to this category") instead of
191
+ * losing them silently. */
189
192
  export declare function droppedFeatureSlugs(values: Readonly<Record<string, unknown>>, features: readonly FeatureDef[]): readonly string[];
190
193
  //# sourceMappingURL=draft.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../src/model/draft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EACZ,iBAAiB,EAClB,MAAM,iBAAiB,CAAC;AAGzB;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;mEAC+D;IAC/D,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,EAAE,eAM5B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;iFAE6E;IAC7E,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;iDACiD;AACjD,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,kBAAkB,CAepB;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,GAAE,iBAAsB,GAC9B,kBAAkB,CAwBpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,iBAAsB,GAC9B,kBAAkB,CA4BpB;AA4BD,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,iBAAiB,CAAC;AAExD,gDAAgD;AAChD,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,EAC3C,OAAO,GAAE,iBAAsB,GAC9B,iBAAiB,CA0CnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAItE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAC9B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAOnC;AAED;;;eAGe;AACf,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,QAAQ,EAAE,SAAS,UAAU,EAAE,GAC9B,SAAS,MAAM,EAAE,CAKnB"}
1
+ {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../src/model/draft.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { fromFeaturesDto, toFeaturesDto } from "@stapel/attributes-react";
1
+ import { fromFeaturesDto, mirrorValidate, toFeaturesDto, } from "@stapel/attributes-react";
2
2
  import { DEFAULT_LISTING_CURRENCY } from "../api/types.js";
3
3
  export const EMPTY_LOCATION = {
4
4
  locationId: "",
@@ -216,8 +216,79 @@ export function createDraftBody(categoryId) {
216
216
  : {};
217
217
  }
218
218
  /**
219
- * Switching category: keep the answers whose slug the new schema also
220
- * declares, drop the rest.
219
+ * A SHARED SLUG IS NOT A SHARED ANSWER (D455).
220
+ *
221
+ * Retention used to ask one question — "does the new schema declare this
222
+ * slug?" — and a slug is the cheapest half of the answer. Measured on the
223
+ * live stand, 2026-09-12: the analysis read a photo as the wristwatch leaf
224
+ * and answered the colour with `zolotoy`, which that leaf offers; the
225
+ * category was then corrected to the laptop leaf, which declares `color` too
226
+ * and therefore KEPT the value — but its sixteen options spell gold
227
+ * `zolotistyy`, not `zolotoy`. The control drew the raw code, the mirror
228
+ * refused it `not_in_options`, and the publish gate shut on the colour field
229
+ * over a row the catalogue marks OPTIONAL and the server publishes without
230
+ * (`validate-draft` -> `valid: true`). The seller cannot read the demand and
231
+ * the gate cannot be cleared by answering what it names.
232
+ *
233
+ * So the question is asked of the VALUE: a retained answer must be one the
234
+ * new schema would accept. The judge is `mirrorValidate` — the very function
235
+ * the publish gate reads — so a value kept here can never be one the gate
236
+ * refuses, and the two cannot drift. Same invariant `acceptableAiWrites`
237
+ * states for the analysis's writes, now held for the person's own.
238
+ *
239
+ * Only a value that is BOTH present and non-blank can be dropped this way.
240
+ * A blank one has nothing to lose, and its `mandatory_missing` row is a
241
+ * demand for an answer rather than a verdict on one — naming it as "dropped"
242
+ * would tell a person their answer did not apply when they never gave one.
243
+ * A rule set the mirror cannot parse fails the batch on `_root` and drops
244
+ * nothing: the schema is broken, not the draft.
245
+ */
246
+ function judgeRetention(values, features) {
247
+ const known = new Set(features.map((feature) => feature.slug));
248
+ const kept = {};
249
+ const dropped = [];
250
+ for (const [slug, value] of Object.entries(values)) {
251
+ if (known.has(slug))
252
+ kept[slug] = value;
253
+ else
254
+ dropped.push(slug);
255
+ }
256
+ let refused;
257
+ try {
258
+ const batch = mirrorValidate(features, toFeaturesDto(features, kept));
259
+ refused = new Set(batch.results
260
+ .filter((result) => result.status !== "ok")
261
+ .map((result) => result.slug));
262
+ }
263
+ catch {
264
+ // A schema this build cannot judge is not a reason to delete answers.
265
+ return { kept, dropped: dropped.sort() };
266
+ }
267
+ const survived = {};
268
+ for (const [slug, value] of Object.entries(kept)) {
269
+ if (refused.has(slug) && answeredFeatureValue(value))
270
+ dropped.push(slug);
271
+ else
272
+ survived[slug] = value;
273
+ }
274
+ return { kept: survived, dropped: dropped.sort() };
275
+ }
276
+ /**
277
+ * Does this value count as an answer? An empty list is what clearing the last
278
+ * chip leaves behind — an unanswered field, not an answer of `[]`.
279
+ */
280
+ function answeredFeatureValue(value) {
281
+ if (value === undefined || value === null)
282
+ return false;
283
+ if (Array.isArray(value))
284
+ return value.length > 0;
285
+ if (typeof value === "string")
286
+ return value.trim().length > 0;
287
+ return true;
288
+ }
289
+ /**
290
+ * Switching category: keep the answers the new schema also asks for AND would
291
+ * accept, drop the rest.
221
292
  *
222
293
  * Spec §4.1 asks for exactly this, and the reason is the same one the forms
223
294
  * spec gives for `error.409.forms_version_superseded`: a person who picked
@@ -225,25 +296,19 @@ export function createDraftBody(categoryId) {
225
296
  * phones" should not retype what both categories ask for. A value whose slug
226
297
  * is gone IS dropped, because 0.6.0 rejects an unknown slug per feature —
227
298
  * carrying it would turn a category change into a publish refusal about a
228
- * field the composer no longer draws.
299
+ * field the composer no longer draws. Since 0.30.2 a value whose slug SURVIVES
300
+ * but which the new schema refuses is dropped for the same reason, which is
301
+ * the harm rather than the mechanism — see {@link judgeRetention}.
229
302
  */
230
303
  export function retainKnownFeatureValues(values, features) {
231
- const known = new Set(features.map((feature) => feature.slug));
232
- const out = {};
233
- for (const [slug, value] of Object.entries(values)) {
234
- if (known.has(slug))
235
- out[slug] = value;
236
- }
237
- return out;
304
+ return judgeRetention(values, features).kept;
238
305
  }
239
- /** Slugs that were answered and are NOT in the new schema — what
240
- * {@link retainKnownFeatureValues} just dropped. A composer tells the person
241
- * ("2 answers do not apply to this category") instead of losing them
242
- * silently. */
306
+ /** Slugs that were answered and the new schema will not carry — what
307
+ * {@link retainKnownFeatureValues} just dropped, whether because the slug is
308
+ * gone or because the answer is not one this category offers. A composer
309
+ * tells the person ("2 answers do not apply to this category") instead of
310
+ * losing them silently. */
243
311
  export function droppedFeatureSlugs(values, features) {
244
- const known = new Set(features.map((feature) => feature.slug));
245
- return Object.keys(values)
246
- .filter((slug) => !known.has(slug))
247
- .sort();
312
+ return judgeRetention(values, features).dropped;
248
313
  }
249
314
  //# sourceMappingURL=draft.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/model/draft.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/model/draft.ts"],"names":[],"mappings":"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"}
package/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # @stapel/listings-react 0.30.1
1
+ # @stapel/listings-react 0.30.2
2
2
 
3
3
  Headless React flow pair for stapel-listings (contract >=0.22 <0.23) — business + state, zero visual opinion.
4
4
  Built on @stapel/core: typed client + StapelApiError envelope, auth token refresh,
package/manifest.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
3
3
  "package": "@stapel/listings-react",
4
- "version": "0.30.1",
4
+ "version": "0.30.2",
5
5
  "backend": {
6
6
  "module": "stapel-listings",
7
7
  "contract": ">=0.22 <0.23"
package/nav-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "package": "@stapel/listings-react",
3
- "version": "0.30.1",
3
+ "version": "0.30.2",
4
4
  "entries": [
5
5
  {
6
6
  "id": "listings.detail",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stapel/listings-react",
3
- "version": "0.30.1",
3
+ "version": "0.30.2",
4
4
  "description": "Headless React pair for stapel-listings: a typed client over the draft twin, the composer that turns a category schema into a submittable listing, and the owner's dashboard. Two independent axes are rendered as two — lifecycle `status` decides visibility and `moderation_status` decides nothing about it, so an edit to a live listing stays live and says 'under review' instead of vanishing. Feature values are drawn and mirrored by @stapel/attributes-react; photos arrive as an injected upload bag whose `refs` ARE `images_draft` and whose `settled` gates the submit; a publish refusal is routed onto the control that caused it by slug. Zero visual opinion in the main entry; an opt-in /default subpath ships the antd skin.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -103,12 +103,12 @@
103
103
  "typescript": "^5.8.3",
104
104
  "vitest": "^3.2.4",
105
105
  "@stapel/attributes-react": "^0.17.0",
106
- "@stapel/core": "^0.26.1",
107
106
  "@stapel/currencies-react": "^0.4.0",
108
107
  "@stapel/image": "^0.4.2",
109
108
  "@stapel/showcase": "^0.3.0",
110
109
  "@stapel/tokens": "^0.8.0",
111
- "@stapel/tokens-antd": "^0.18.0"
110
+ "@stapel/tokens-antd": "^0.18.0",
111
+ "@stapel/core": "^0.26.1"
112
112
  },
113
113
  "engines": {
114
114
  "node": ">=22"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$generated": "by scripts/gen-events.mjs — do not edit; drift-gated (pnpm gen:events:check)",
3
3
  "package": "@stapel/listings-react",
4
- "version": "0.30.1",
4
+ "version": "0.30.2",
5
5
  "defined": [],
6
6
  "flows": []
7
7
  }
@@ -39,7 +39,6 @@ import {
39
39
  draftValuesFromWire,
40
40
  droppedFeatureSlugs,
41
41
  emptyDraftValues,
42
- retainKnownFeatureValues,
43
42
  } from "../model/draft.js";
44
43
  import type { ListingDraftValues, ListingLocation } from "../model/draft.js";
45
44
  import { asFeatureDaoList } from "../model/features.js";
@@ -383,12 +382,53 @@ export function useListingComposer(
383
382
  const schemaSettled =
384
383
  options.featuresLoading !== true && options.featuresError === undefined;
385
384
  const { features } = options;
385
+ /**
386
+ * WHICH SCHEMA THIS IS, by its content and not by its identity (D455).
387
+ *
388
+ * Hosts hand `features` as a fresh array on most renders — the storefront's
389
+ * comes out of a query mapper — so array identity says "a render happened",
390
+ * never "the questions changed". The value judge below may only run on the
391
+ * second, and this is how the two are told apart.
392
+ */
393
+ const schemaKey = useMemo(
394
+ () =>
395
+ features
396
+ .map((feature) => `${feature.slug}:${JSON.stringify(feature.config ?? null)}`)
397
+ .join("|"),
398
+ [features]
399
+ );
400
+ /** The schema the values were last judged against — `null` until the first
401
+ * one settles. */
402
+ const judgedSchema = useRef<string | null>(null);
386
403
  useEffect(() => {
387
404
  if (!schemaSettled || features.length === 0) return;
405
+ /* A DIFFERENT SCHEMA, not merely a different render.
406
+ *
407
+ * `false` on the very first settle, which is a REOPEN and not a switch:
408
+ * the answers came back from the server that stored them, and re-judging
409
+ * them against the catalogue as it stands today would silently delete a
410
+ * draft's contents on the way in. */
411
+ const switched = judgedSchema.current !== null && judgedSchema.current !== schemaKey;
412
+ judgedSchema.current = schemaKey;
388
413
  setValues((current) => {
389
- const gone = droppedFeatureSlugs(current.features, features);
414
+ /* On a SWITCH, `gone` is "what this schema will not carry": since
415
+ 0.30.2 that includes an answer whose slug survives but whose VALUE
416
+ this category refuses — two leaves both declaring `color` differ in
417
+ the options behind it (D455). Otherwise it stays the older, narrower
418
+ question — "which slugs is this schema not asking about?" — because
419
+ within ONE category a value the mirror refuses is a person typing,
420
+ and deleting that is the composer editing them mid-sentence. */
421
+ const gone = switched
422
+ ? droppedFeatureSlugs(current.features, features)
423
+ : Object.keys(current.features)
424
+ .filter((slug) => !features.some((feature) => feature.slug === slug))
425
+ .sort();
390
426
  const kept =
391
- gone.length === 0 ? current.features : retainKnownFeatureValues(current.features, features);
427
+ gone.length === 0
428
+ ? current.features
429
+ : Object.fromEntries(
430
+ Object.entries(current.features).filter(([slug]) => !gone.includes(slug))
431
+ );
392
432
  // `FeatureDef.default` (and the type's own default) is what the CATALOGUE
393
433
  // says a blank form opens with — a `select` option flagged `default`, a
394
434
  // preset date. It is applied ONLY where the draft has no answer: a
@@ -412,7 +452,7 @@ export function useListingComposer(
412
452
  }
413
453
  return { ...current, features: { ...kept, ...seeded } };
414
454
  });
415
- }, [schemaSettled, features]);
455
+ }, [schemaSettled, features, schemaKey]);
416
456
 
417
457
  // The gallery is the upload bag's, whenever there is one: two sources of
418
458
  // truth for the same list is how a publish sends photos the person removed.
@@ -13,7 +13,11 @@
13
13
  * assert the BODY a save sends rather than the fact that it sent one.
14
14
  */
15
15
  import type { FeatureDef, FeaturesDto } from "@stapel/attributes-react";
16
- import { fromFeaturesDto, toFeaturesDto } from "@stapel/attributes-react";
16
+ import {
17
+ fromFeaturesDto,
18
+ mirrorValidate,
19
+ toFeaturesDto,
20
+ } from "@stapel/attributes-react";
17
21
  import type {
18
22
  ListingDetail,
19
23
  ListingDraft,
@@ -350,8 +354,80 @@ export function createDraftBody(categoryId?: string): ListingDraftPatch {
350
354
  }
351
355
 
352
356
  /**
353
- * Switching category: keep the answers whose slug the new schema also
354
- * declares, drop the rest.
357
+ * A SHARED SLUG IS NOT A SHARED ANSWER (D455).
358
+ *
359
+ * Retention used to ask one question — "does the new schema declare this
360
+ * slug?" — and a slug is the cheapest half of the answer. Measured on the
361
+ * live stand, 2026-09-12: the analysis read a photo as the wristwatch leaf
362
+ * and answered the colour with `zolotoy`, which that leaf offers; the
363
+ * category was then corrected to the laptop leaf, which declares `color` too
364
+ * and therefore KEPT the value — but its sixteen options spell gold
365
+ * `zolotistyy`, not `zolotoy`. The control drew the raw code, the mirror
366
+ * refused it `not_in_options`, and the publish gate shut on the colour field
367
+ * over a row the catalogue marks OPTIONAL and the server publishes without
368
+ * (`validate-draft` -> `valid: true`). The seller cannot read the demand and
369
+ * the gate cannot be cleared by answering what it names.
370
+ *
371
+ * So the question is asked of the VALUE: a retained answer must be one the
372
+ * new schema would accept. The judge is `mirrorValidate` — the very function
373
+ * the publish gate reads — so a value kept here can never be one the gate
374
+ * refuses, and the two cannot drift. Same invariant `acceptableAiWrites`
375
+ * states for the analysis's writes, now held for the person's own.
376
+ *
377
+ * Only a value that is BOTH present and non-blank can be dropped this way.
378
+ * A blank one has nothing to lose, and its `mandatory_missing` row is a
379
+ * demand for an answer rather than a verdict on one — naming it as "dropped"
380
+ * would tell a person their answer did not apply when they never gave one.
381
+ * A rule set the mirror cannot parse fails the batch on `_root` and drops
382
+ * nothing: the schema is broken, not the draft.
383
+ */
384
+ function judgeRetention(
385
+ values: Readonly<Record<string, unknown>>,
386
+ features: readonly FeatureDef[]
387
+ ): { readonly kept: Record<string, unknown>; readonly dropped: string[] } {
388
+ const known = new Set(features.map((feature) => feature.slug));
389
+ const kept: Record<string, unknown> = {};
390
+ const dropped: string[] = [];
391
+ for (const [slug, value] of Object.entries(values)) {
392
+ if (known.has(slug)) kept[slug] = value;
393
+ else dropped.push(slug);
394
+ }
395
+
396
+ let refused: ReadonlySet<string>;
397
+ try {
398
+ const batch = mirrorValidate(features, toFeaturesDto(features, kept));
399
+ refused = new Set(
400
+ batch.results
401
+ .filter((result) => result.status !== "ok")
402
+ .map((result) => result.slug)
403
+ );
404
+ } catch {
405
+ // A schema this build cannot judge is not a reason to delete answers.
406
+ return { kept, dropped: dropped.sort() };
407
+ }
408
+
409
+ const survived: Record<string, unknown> = {};
410
+ for (const [slug, value] of Object.entries(kept)) {
411
+ if (refused.has(slug) && answeredFeatureValue(value)) dropped.push(slug);
412
+ else survived[slug] = value;
413
+ }
414
+ return { kept: survived, dropped: dropped.sort() };
415
+ }
416
+
417
+ /**
418
+ * Does this value count as an answer? An empty list is what clearing the last
419
+ * chip leaves behind — an unanswered field, not an answer of `[]`.
420
+ */
421
+ function answeredFeatureValue(value: unknown): boolean {
422
+ if (value === undefined || value === null) return false;
423
+ if (Array.isArray(value)) return value.length > 0;
424
+ if (typeof value === "string") return value.trim().length > 0;
425
+ return true;
426
+ }
427
+
428
+ /**
429
+ * Switching category: keep the answers the new schema also asks for AND would
430
+ * accept, drop the rest.
355
431
  *
356
432
  * Spec §4.1 asks for exactly this, and the reason is the same one the forms
357
433
  * spec gives for `error.409.forms_version_superseded`: a person who picked
@@ -359,30 +435,25 @@ export function createDraftBody(categoryId?: string): ListingDraftPatch {
359
435
  * phones" should not retype what both categories ask for. A value whose slug
360
436
  * is gone IS dropped, because 0.6.0 rejects an unknown slug per feature —
361
437
  * carrying it would turn a category change into a publish refusal about a
362
- * field the composer no longer draws.
438
+ * field the composer no longer draws. Since 0.30.2 a value whose slug SURVIVES
439
+ * but which the new schema refuses is dropped for the same reason, which is
440
+ * the harm rather than the mechanism — see {@link judgeRetention}.
363
441
  */
364
442
  export function retainKnownFeatureValues(
365
443
  values: Readonly<Record<string, unknown>>,
366
444
  features: readonly FeatureDef[]
367
445
  ): Readonly<Record<string, unknown>> {
368
- const known = new Set(features.map((feature) => feature.slug));
369
- const out: Record<string, unknown> = {};
370
- for (const [slug, value] of Object.entries(values)) {
371
- if (known.has(slug)) out[slug] = value;
372
- }
373
- return out;
446
+ return judgeRetention(values, features).kept;
374
447
  }
375
448
 
376
- /** Slugs that were answered and are NOT in the new schema — what
377
- * {@link retainKnownFeatureValues} just dropped. A composer tells the person
378
- * ("2 answers do not apply to this category") instead of losing them
379
- * silently. */
449
+ /** Slugs that were answered and the new schema will not carry — what
450
+ * {@link retainKnownFeatureValues} just dropped, whether because the slug is
451
+ * gone or because the answer is not one this category offers. A composer
452
+ * tells the person ("2 answers do not apply to this category") instead of
453
+ * losing them silently. */
380
454
  export function droppedFeatureSlugs(
381
455
  values: Readonly<Record<string, unknown>>,
382
456
  features: readonly FeatureDef[]
383
457
  ): readonly string[] {
384
- const known = new Set(features.map((feature) => feature.slug));
385
- return Object.keys(values)
386
- .filter((slug) => !known.has(slug))
387
- .sort();
458
+ return judgeRetention(values, features).dropped;
388
459
  }