Skip to content

Bug Tracking - 2026-05-21 ​

Related PRs:

Bug 1: Fractional Order Validation Failure ​

Status: Fix applied, awaiting test Branch: main (merged from improve-change-operators today) Symptom: "Validation error: creative validation failed on creativeSettings.creativeBlocks.*.order" when creating new formats

Root Cause (confirmed) ​

PR #1859 introduced fractional-indexing which stores block order as strings ("a0", "a1"). Backend validation requires order: schema.number(). A serializeOrdersForSave() utility was created to convert back to integers before API calls, but it was only wired up in updateChatbot() -- missing from all other save paths.

Fix Applied ​

Added serializeOrdersForSave() to all missing save paths:

FileMethodWhat it does
ChatbotBuilder.vue:1650createChatbot()First-time save of new creative
createCreative.ts:36createNewCreative()Standalone creative creation
createCreative.ts:89createMassFormatCreative()Mass format creation (the reported bug)
wizardSavingLogic.ts:81createAddedCreatives()Adding formats to existing creative
wizardSavingLogic.ts:255completeEditWizard()Child creative edit save
wizardSavingLogic.ts:343,357completeStandaloneEditWizard()Standalone-to-multi format conversion

Already had the fix:

  • ChatbotBuilder.vue:1733 - updateChatbot() (normal save)
  • LocalBuildPreview.vue:161 - preview payload
  • CreativeJSONViewerV2.vue:165,174 - DevTools JSON viewer

Key Files ​

FileRole
src/utils/orderUtils.tsserializeOrdersForSave(), migrateNumericOrders()
src/store/modules/blocks.tsCalls migrateNumericOrders in setCreativeBlocks
AB/start/validators/creative_validation.tsBackend: order: schema.number()

Verification ​

  • [x] Confirmed backend requires order: schema.number() (number, not string)
  • [x] Confirmed serializeOrdersForSave() was missing from create/format paths
  • [x] Applied fix to all 6 missing call sites
  • [x] Type check passes (no new errors)
  • [ ] User testing: create new format after reordering blocks
  • [ ] User testing: create new creative from scratch
  • [ ] User testing: add format to existing creative via wizard

Bug 2: JavaScript Error in Creative Tags (emitAnimationTriggers) ​

Status: Likely already fixed in CE PR #736 Branch: main (production) Reported by: Client via AdValidation tool Campaign ID: 481244

Symptom ​

JavaScript validation error detected by AdValidation tool:

TypeError: e is not iterable
  at Object.emitAnimationTriggers (about:srcdoc:49:55554)
  at Object.addComponentsToFlow (about:srcdoc:49:54620)
  at Object.handleComponentsEvent (about:srcdoc:49:55012)
  • Creatives work fine in manual preview/testing
  • Error caught by automated AdValidation tool
  • Affects: Board, Board XL, Brandboard, Netboard for campaign r481244

Root Cause (found) ​

File: Creative-Engine/src/logic-system/processors/conversationFlow.tsFunction: emitAnimationTriggers (line ~251)

ts
const { triggerType, targets } = comp.animationTriggers
if (!targets?.length) continue
for (const target of targets) {  // <-- crashes if targets is not iterable

The guard !targets?.length doesn't protect against non-array values that have a .length property (like strings). If animationTriggers.targets is not an array, for...of throws "not iterable".

Fix Status ​

CE PR #736 description states: "Fixed BLOCKS.GROUP constant and guarded emitAnimationTriggers against non-array input"

This fix is already in the merged CE PR. The campaign's creatives were likely built before the fix was deployed. Rebuilding the creatives should resolve this.

Recommendation ​

  1. Verify the CE fix is deployed to production composer
  2. Rebuild the affected creatives for campaign 481244
  3. Re-run AdValidation to confirm the error is gone

AdValidation Report ​

https://app2.advalidation.com/campaigns/202927-r481244?t=awhqfucc

Internal documentation