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