2025-12-06 12:08:17 - INFO --> Skipped 76 migration(s) - already applied 2025-12-06 12:08:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20251201_001_employee_avatar_override 2025-12-06 12:08:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20251201_001_employee_avatar_override 2025-12-06 12:08:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20251201_001_employee_avatar_override 2025-12-06 12:08:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20251201_001_employee_avatar_override 2025-12-06 12:08:17 - ERROR --> ERROR: [N/A] | parse | Invalid JSON in 20251203_005_cc_pending_emails.json 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add avatarOverride flag to employees to protect manual avatars 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add avatarOverride flag to employees to protect manual avatars 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_se00 | add_column | Add avatarOverride flag to employees to protect manual avatars 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add avatarOverride flag to employees to protect manual avatars 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_pc80923 | add_column | Add avatarOverride flag to employees to protect manual avatars 2025-12-06 12:11:44 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ccPendingEmails table to store emails collected before CC was connected 2025-12-06 12:11:44 - INFO --> Skipped 75 migration(s) - already applied 2025-12-08 9:03:46 - INFO --> CSS build complete: 16.48 KB, hash: 83b3b103 2025-12-08 9:12:46 - INFO --> CSS build complete: 16.48 KB, hash: 83b3b103 2025-12-08 9:21:55 - INFO --> CSS build complete: 16.48 KB, hash: 83b3b103 2025-12-08 9:26:40 - INFO --> CSS build complete: 16.48 KB, hash: 83b3b103 2025-12-08 9:34:33 - INFO --> CSS build complete: 18.58 KB, hash: f5001c79 2025-12-08 9:36:45 - INFO --> CSS build complete: 18.63 KB, hash: 97038538 2025-12-08 9:42:18 - INFO --> CSS build complete: 18.89 KB, hash: f1c88f36 2025-12-08 9:45:29 - INFO --> CSS build complete: 18.92 KB, hash: df9d040b 2025-12-08 9:48:34 - INFO --> CSS build complete: 18.9 KB, hash: c4060d2d 2025-12-08 9:50:24 - INFO --> CSS build complete: 19.59 KB, hash: 60b79327 2025-12-08 9:51:06 - INFO --> CSS build complete: 18.93 KB, hash: 57b5e340 2025-12-08 9:51:28 - INFO --> CSS build complete: 19.04 KB, hash: 3dbabc54 2025-12-08 9:53:53 - INFO --> CSS build complete: 20.62 KB, hash: d83099a3 2025-12-08 9:59:16 - INFO --> CSS build complete: 20.7 KB, hash: a9a7c348 2025-12-08 10:26:57 - INFO --> CSS build complete: 21.07 KB, hash: 08a30d13 2025-12-08 10:32:42 - INFO --> CSS build complete: 28.25 KB, hash: ace5e4f5 2025-12-08 10:36:34 - INFO --> CSS build complete: 28.27 KB, hash: 7f7447f8 2025-12-08 10:43:49 - INFO --> CSS build complete: 42.15 KB, hash: 3bdb1a84 2025-12-08 10:46:55 - INFO --> CSS build complete: 42.15 KB, hash: 37f04a07 2025-12-08 10:49:33 - INFO --> CSS build complete: 42.61 KB, hash: 258f1ebd 2025-12-08 10:51:16 - INFO --> CSS build complete: 42.61 KB, hash: c9aef529 2025-12-08 10:52:54 - INFO --> CSS build complete: 42.72 KB, hash: 4a7e18df 2025-12-08 11:17:06 - INFO --> CSS build complete: 42.72 KB, hash: 4a7e18df 2025-12-08 11:26:18 - INFO --> CSS build complete: 43.33 KB, hash: b50120cd 2025-12-08 11:52:19 - ERROR --> CSS bundle exceeds size limit: 187.85 KB > 50 KB 2025-12-08 11:53:16 - INFO --> CSS build complete: 131.52 KB, hash: 41aa424f 2025-12-08 12:14:08 - INFO --> CSS build complete: 131.52 KB, hash: 41aa424f 2025-12-08 12:16:31 - INFO --> CSS build complete: 131.52 KB, hash: 41aa424f 2025-12-08 12:28:11 - INFO --> CSS build complete: 131.52 KB, hash: 41aa424f 2025-12-08 12:34:04 - INFO --> CSS build complete: 131.52 KB, hash: 41aa424f 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create chat_threads table for Two-Way SMS Chat conversation threads 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create chat_threads table for Two-Way SMS Chat conversation threads 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_se00 | create_table | Create chat_threads table for Two-Way SMS Chat conversation threads 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create chat_threads table for Two-Way SMS Chat conversation threads 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create chat_threads table for Two-Way SMS Chat conversation threads 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create chat_messages table for Two-Way SMS Chat message history 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create chat_messages table for Two-Way SMS Chat message history 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_se00 | create_table | Create chat_messages table for Two-Way SMS Chat message history 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create chat_messages table for Two-Way SMS Chat message history 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create chat_messages table for Two-Way SMS Chat message history 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create chat_templates table for Two-Way SMS Chat message templates 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create chat_templates table for Two-Way SMS Chat message templates 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_se00 | create_table | Create chat_templates table for Two-Way SMS Chat message templates 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create chat_templates table for Two-Way SMS Chat message templates 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create chat_templates table for Two-Way SMS Chat message templates 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create chat_sms_usage table for Two-Way SMS Chat billing and analytics 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add optout_type column to loyaltyDoNotTextList for granular opt-out preferences 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add optout_source column to loyaltyDoNotTextList to track how opt-out was registered 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_buys | add_index | Add index on phoneNum column in systemBuys for efficient phone-to-store routing in Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_buys | add_index | Add composite index on phoneNum and timeStamp for efficient recent-buy lookups 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed default transactional chat templates for Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed default transactional chat templates for Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_se00 | insert | Seed default transactional chat templates for Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed default transactional chat templates for Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> SUCCESS: kiosk_pc80923 | insert | Seed default transactional chat templates for Two-Way SMS Chat 2025-12-08 17:17:26 - INFO --> Skipped 78 migration(s) - already applied 2025-12-08 17:17:26 - ERROR --> ERROR: kiosk_buykiosk | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'created_at' in 'loyaltydonottextlist' 2025-12-09 7:38:04 - INFO --> CSS build complete: 217.2 KB, hash: de00bb1d 2025-12-09 7:39:55 - INFO --> CSS build complete: 217.18 KB, hash: aee65ed0 2025-12-09 7:43:05 - INFO --> CSS build complete: 217.22 KB, hash: c6e2f15a 2025-12-09 7:50:38 - INFO --> CSS build complete: 149.67 KB, hash: 68428686 2025-12-09 7:51:51 - INFO --> CSS build complete: 149.67 KB, hash: 68428686 2025-12-09 8:56:03 - INFO --> CSS build complete: 149.67 KB, hash: 68428686 2025-12-09 16:54:48 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add overrideByEmployeeId column to workbook_punch_log for manager override audit trail 2025-12-09 16:54:48 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add overrideReason column to workbook_punch_log for manager override audit trail 2025-12-09 16:54:48 - INFO --> Skipped 85 migration(s) - already applied 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_ou00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_se00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pa00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_ou00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_se00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pa00.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 16:54:48 - ERROR --> ERROR: kiosk_pc80923 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pc80923.workbook_punch_log' doesn't exist 2025-12-09 19:04:40 - INFO --> Skipped 87 migration(s) - already applied 2025-12-09 19:04:40 - ERROR --> ERROR: | unknown | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:04:40 - ERROR --> ERROR: | unknown | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:04:40 - ERROR --> ERROR: | unknown | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:04:40 - ERROR --> ERROR: | unknown | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add mappedRole column to employees table for BuyerKiosk role assignment 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add mappedRole column to employees table for BuyerKiosk role assignment 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add mappedRole column to employees table for BuyerKiosk role assignment 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add mappedRole column to employees table for BuyerKiosk role assignment 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add roleColor column to employees table for custom role color display 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add roleColor column to employees table for custom role color display 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add roleColor column to employees table for custom role color display 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add roleColor column to employees table for custom role color display 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create wiwPositionRoleMap table for mapping WhenIWork positions to BuyerKiosk roles 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create wiwPositionRoleMap table for mapping WhenIWork positions to BuyerKiosk roles 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_se00 | create_table | Create wiwPositionRoleMap table for mapping WhenIWork positions to BuyerKiosk roles 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create wiwPositionRoleMap table for mapping WhenIWork positions to BuyerKiosk roles 2025-12-09 19:05:12 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create wiwPositionRoleMap table for mapping WhenIWork positions to BuyerKiosk roles 2025-12-09 19:05:12 - INFO --> Skipped 86 migration(s) - already applied 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'position' in 'employees' 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'mappedRole' in 'employees' 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_ou00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_se00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pa00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:05:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - INFO --> Skipped 87 migration(s) - already applied 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_ou00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_se00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pa00 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:41:12 - ERROR --> ERROR: kiosk_pc80923 | raw_sql | Unknown operation type in 20251209_employee_role_mapping 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> SUCCESS: kiosk_pc80923 | raw_sql | Seed default position mappings for common WhenIWork positions 2025-12-09 19:43:54 - INFO --> Skipped 86 migration(s) - already applied 2025-12-10 8:35:47 - INFO --> Skipped 86 migration(s) - already applied 2025-12-10 13:01:21 - INFO --> CSS build complete: 159.29 KB, hash: 0b0bdfb8 2025-12-10 13:23:51 - INFO --> CSS build complete: 159.29 KB, hash: 0b0bdfb8 2025-12-11 13:21:04 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulingProvider ENUM column to stores table for scheduling provider selection 2025-12-11 13:21:04 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulingFeatureFlags JSON column to stores table for granular feature toggles 2025-12-11 13:21:04 - INFO --> Skipped 96 migration(s) - already applied 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleShifts table for storing employee shift assignments 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleShifts table for storing employee shift assignments 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleShifts table for storing employee shift assignments 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleShifts table for storing employee shift assignments 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleShifts table for storing employee shift assignments 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunches table for clock in/out time tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunches table for clock in/out time tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunches table for clock in/out time tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunches table for clock in/out time tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunches table for clock in/out time tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleBreaks table for tracking employee break periods 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleBreaks table for tracking employee break periods 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleBreaks table for tracking employee break periods 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleBreaks table for tracking employee break periods 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleBreaks table for tracking employee break periods 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimesheets table for weekly timesheet summaries and approvals 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimesheets table for weekly timesheet summaries and approvals 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimesheets table for weekly timesheet summaries and approvals 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimesheets table for weekly timesheet summaries and approvals 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimesheets table for weekly timesheet summaries and approvals 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_users | create_table | Create scheduleOvertimeRules table in central kiosk_users database for per-store overtime calculation rules 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add lateThresholdMinutes column to stores table for late arrival threshold configuration 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add noShowThresholdMinutes column to stores table for no-show threshold configuration 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payPeriodType column to stores table for pay period configuration 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payPeriodStartDay column to stores table for pay period start day configuration 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleWeekPublish table for tracking weekly schedule publication status 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleWeekPublish table for tracking weekly schedule publication status 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleWeekPublish table for tracking weekly schedule publication status 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleWeekPublish table for tracking weekly schedule publication status 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleWeekPublish table for tracking weekly schedule publication status 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create schedulePayPeriods table for pay period management and payroll export tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create schedulePayPeriods table for pay period management and payroll export tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create schedulePayPeriods table for pay period management and payroll export tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create schedulePayPeriods table for pay period management and payroll export tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create schedulePayPeriods table for pay period management and payroll export tracking 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunchAudit table for tracking all time punch edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunchAudit table for tracking all time punch edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunchAudit table for tracking all time punch edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunchAudit table for tracking all time punch edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunchAudit table for tracking all time punch edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleBreakAudit table for tracking all break record edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleBreakAudit table for tracking all break record edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleBreakAudit table for tracking all break record edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleBreakAudit table for tracking all break record edits and changes 2025-12-11 14:21:19 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleBreakAudit table for tracking all break record edits and changes 2025-12-11 14:21:19 - INFO --> Skipped 97 migration(s) - already applied 2025-12-11 14:26:27 - INFO --> Skipped 107 migration(s) - already applied 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add attendance status fields to scheduleShifts table for no-show tracking 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add attendance status fields to scheduleShifts table for no-show tracking 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add attendance status fields to scheduleShifts table for no-show tracking 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add attendance status fields to scheduleShifts table for no-show tracking 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add attendance status fields to scheduleShifts table for no-show tracking 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add noShowAcknowledged flag to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add noShowAcknowledged flag to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add noShowAcknowledged flag to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add noShowAcknowledged flag to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add noShowAcknowledged flag to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add noShowReason field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add noShowReason field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add noShowReason field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add noShowReason field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add noShowReason field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add noShowNotes field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add noShowNotes field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add noShowNotes field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add noShowNotes field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add noShowNotes field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add noShowAcknowledgedBy field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add noShowAcknowledgedBy field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add noShowAcknowledgedBy field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add noShowAcknowledgedBy field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add noShowAcknowledgedBy field to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add acknowledged_at timestamp to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add acknowledged_at timestamp to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add acknowledged_at timestamp to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add acknowledged_at timestamp to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add acknowledged_at timestamp to scheduleShifts table 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on attendanceStatus for efficient filtering 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on attendanceStatus for efficient filtering 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on attendanceStatus for efficient filtering 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on attendanceStatus for efficient filtering 2025-12-11 21:00:42 - INFO --> SUCCESS: kiosk_pc80923 | alter_table | Add index on attendanceStatus for efficient filtering 2025-12-11 21:00:42 - INFO --> Skipped 107 migration(s) - already applied 2025-12-11 21:19:22 - ERROR --> CSS bundle exceeds size limit: 305.72 KB > 250 KB 2025-12-11 21:19:35 - ERROR --> CSS bundle exceeds size limit: 305.72 KB > 250 KB 2025-12-11 21:19:40 - INFO --> CSS build complete: 210.57 KB, hash: f938b8c8 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | insert | Insert default positions for new stores 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | insert | Insert default positions for new stores 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | insert | Insert default positions for new stores 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | insert | Insert default positions for new stores 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | insert | Insert default positions for new stores 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_users | create_table | Create userPayRates table for employee hourly rate history 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_users | create_table | Create scheduleOvertimeRules table for store overtime configuration 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulingProvider column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockInEarlyMinutes column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockInLateMinutes column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockOutLateMinutes column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add requireManagerOverrideOutsideClockWindow column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add requireManagerOverrideForUnscheduledClockIn column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payrollRoundingIncrementMinutes column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payrollRoundingMode column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add workWeekStartDay column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add workWeekStartTimeLocal column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add statutoryHolidaysMode column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add statutoryHolidayDates column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulePermissions column to stores table 2025-12-12 13:40:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add externalProviderManualPunchFallbackEnabled column to stores table 2025-12-12 13:40:53 - INFO --> Skipped 96 migration(s) - already applied 2025-12-12 13:58:07 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulingFeatureFlags column to stores table 2025-12-12 13:58:07 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add scheduledDailyHours column to stores table 2025-12-12 13:58:07 - INFO --> Skipped 104 migration(s) - already applied 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleShifts table for employee shift definitions 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunches table for time clock records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimesheets table for weekly timesheet records 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create schedulePositions table for store job positions with colors 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | insert | Insert default positions for new stores 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | insert | Insert default positions for new stores 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | insert | Insert default positions for new stores 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | insert | Insert default positions for new stores 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | insert | Insert default positions for new stores 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleShiftAudit table for shift change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_pc80923 | create_table | Create scheduleTimePunchAudit table for time punch change history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_users | create_table | Create userPayRates table for employee hourly rate history 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_users | create_table | Create scheduleOvertimeRules table for store overtime configuration 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulingProvider column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockInEarlyMinutes column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockInLateMinutes column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add clockOutLateMinutes column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add requireManagerOverrideOutsideClockWindow column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add requireManagerOverrideForUnscheduledClockIn column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payrollRoundingIncrementMinutes column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add payrollRoundingMode column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add workWeekStartDay column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add workWeekStartTimeLocal column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add statutoryHolidaysMode column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add statutoryHolidayDates column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add schedulePermissions column to stores table 2025-12-12 13:58:53 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add externalProviderManualPunchFallbackEnabled column to stores table 2025-12-12 13:58:53 - INFO --> Skipped 96 migration(s) - already applied 2025-12-13 13:20:05 - INFO --> SUCCESS: kiosk_users | insert | Add uri_schedule permission - View employee schedule (Manager, Shift Lead, Administrator, Owner) 2025-12-13 13:20:05 - INFO --> SUCCESS: kiosk_users | insert | Add uri_schedule_manage permission - Create, edit, delete shifts (Manager, Administrator, Owner) 2025-12-13 13:20:05 - INFO --> SUCCESS: kiosk_users | insert | Add uri_schedule_config permission - Configure scheduling settings (Administrator, Owner) 2025-12-13 13:20:05 - INFO --> Skipped 105 migration(s) - already applied 2025-12-15 12:33:28 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create storeRoles table for store-specific role configuration 2025-12-15 12:33:28 - INFO --> Skipped 106 migration(s) - already applied 2025-12-15 13:31:41 - INFO --> CSS build complete: 165.59 KB, hash: 7aa69300 2025-12-15 14:17:18 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add store hours columns to stores table (Spec 018: Store Configuration) 2025-12-15 14:17:18 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create storeOperatingHours table for per-day operating hours (Spec 018) 2025-12-15 14:17:18 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create storeHolidayHours table for holiday/special date overrides (Spec 018) 2025-12-15 14:17:18 - INFO --> Skipped 107 migration(s) - already applied 2025-12-16 10:13:53 - INFO --> CSS build complete: 165.59 KB, hash: 7aa69300 2025-12-18 9:51:16 - INFO --> CSS build complete: 172.06 KB, hash: 92635b92 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create task_job_definitions table for job configuration 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create task_executions table for execution history 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create task_execution_logs table for per-execution logs 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create task_workers table for worker registration 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_users | insert | Add uri_task_engine permission - View task engine dashboard (Site Admin, Manager, Super Admin) 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_users | insert | Add uri_task_engine_global permission - Global task engine dashboard (Site Admin, Super Admin only) 2025-12-18 16:37:42 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed task engine job definitions for concrete jobs (T9) 2025-12-18 16:37:42 - INFO --> Skipped 108 migration(s) - already applied 2025-12-18 17:05:38 - INFO --> Skipped 111 migration(s) - already applied 2025-12-18 17:26:45 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add mock data generator job definition for test stores 2025-12-18 17:26:45 - INFO --> Skipped 111 migration(s) - already applied 2025-12-18 17:37:32 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add mock data generator job definition for test stores (ou00, pc00, se00) 2025-12-18 17:37:32 - INFO --> Skipped 112 migration(s) - already applied 2025-12-18 17:37:32 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20251218_003_user_sync_log_table 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add timeEntered index to buyQueue 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add timeEntered index to buyQueue 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add timeEntered index to buyQueue 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add date index to LiveFinancials 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add date index to LiveFinancials 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add date index to LiveFinancials 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add date index to LiveFinancials 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create dsLayoutTemplates table for layout definitions 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create dsCorporateTemplates table for corporate page templates 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create dsSocialConfig table for social media OAuth config 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed dsLayoutTemplates with 6 default layouts 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed dsCorporateTemplates with full-queue-page preset 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsDisplayZones table for managing display zones 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsDisplayZones table for managing display zones 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsDisplayZones table for managing display zones 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsDisplayZones table for managing display zones 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsDisplayPairings table for device pairing codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsDisplayPairings table for device pairing codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsDisplayPairings table for device pairing codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsDisplayPairings table for device pairing codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsPages table for signage pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsPages table for signage pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsPages table for signage pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsPages table for signage pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsPageWidgets table for widgets on pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsPageWidgets table for widgets on pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsPageWidgets table for widgets on pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsPageWidgets table for widgets on pages 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsPlaylists table for zone playlists 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsPlaylists table for zone playlists 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsPlaylists table for zone playlists 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsPlaylists table for zone playlists 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsPlaylistItems table for playlist entries 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsPlaylistItems table for playlist entries 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsPlaylistItems table for playlist entries 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsPlaylistItems table for playlist entries 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsSocialPosts table for social media content 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsSocialPosts table for social media content 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsSocialPosts table for social media content 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsSocialPosts table for social media content 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsQRCodes table for trackable QR codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsQRCodes table for trackable QR codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsQRCodes table for trackable QR codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsQRCodes table for trackable QR codes 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsQRScans table for QR scan analytics 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsQRScans table for QR scan analytics 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsQRScans table for QR scan analytics 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsQRScans table for QR scan analytics 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsDisplayAnalytics table for page view tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsDisplayAnalytics table for page view tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsDisplayAnalytics table for page view tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsDisplayAnalytics table for page view tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create dsZoneHeartbeats table for zone uptime tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create dsZoneHeartbeats table for zone uptime tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_se00 | create_table | Create dsZoneHeartbeats table for zone uptime tracking 2025-12-22 18:13:57 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create dsZoneHeartbeats table for zone uptime tracking 2025-12-22 18:13:57 - INFO --> Skipped 113 migration(s) - already applied 2025-12-22 18:13:57 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'timeEntered' 2025-12-22 18:42:16 - INFO --> Skipped 118 migration(s) - already applied 2025-12-30 11:07:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add waitTimeIntervalLower column - configurable lower bound for wait time range 2025-12-30 11:07:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add waitTimeIntervalUpper column - configurable upper bound for wait time range 2025-12-30 11:07:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add mpcLocked column - lock MPC to prevent changes 2025-12-30 11:07:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add mpcCustomEnabled column - allow custom MPC input 2025-12-30 11:07:13 - INFO --> Skipped 129 migration(s) - already applied 2025-12-30 11:07:13 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 11:07:13 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 11:07:13 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 11:07:13 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 11:46:04 - INFO --> CSS build complete: 172.06 KB, hash: c6402e2a 2025-12-30 11:52:39 - INFO --> CSS build complete: 173.24 KB, hash: 352265f9 2025-12-30 12:05:46 - INFO --> CSS build complete: 173.24 KB, hash: 352265f9 2025-12-30 12:18:29 - INFO --> Skipped 130 migration(s) - already applied 2025-12-30 12:18:29 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:18:29 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:18:29 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:18:29 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:26:02 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add startDate column to tasks table for task scheduling 2025-12-30 12:26:02 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add endDate column to tasks table for task scheduling 2025-12-30 12:26:02 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add timeOfDay column to tasks table for task scheduling 2025-12-30 12:26:02 - INFO --> Skipped 129 migration(s) - already applied 2025-12-30 12:26:02 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:26:02 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:26:02 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 12:26:02 - ERROR --> ERROR: | unknown | Unknown operation type in 20251218_002_floorplan_fixtures 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_se00 | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create analytics_velocity_daily table for daily velocity summary 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create analytics_velocity_daily table for daily velocity summary 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_se00 | create_table | Create analytics_velocity_daily table for daily velocity summary 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create analytics_velocity_daily table for daily velocity summary 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_sales | create_table | Create analytics_category_momentum table for MACD momentum signals 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create analytics_seller_cohorts table for seller retention tracking 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create analytics_seller_cohorts table for seller retention tracking 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_se00 | create_table | Create analytics_seller_cohorts table for seller retention tracking 2025-12-30 13:56:44 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create analytics_seller_cohorts table for seller retention tracking 2025-12-30 13:56:44 - INFO --> Skipped 149 migration(s) - already applied 2025-12-30 15:55:49 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add analytics aggregation jobs for 022-admin-reporting-refresh 2025-12-30 15:55:49 - INFO --> Skipped 152 migration(s) - already applied 2025-12-30 19:17:20 - ERROR --> CSS bundle exceeds size limit: 254.47 KB > 250 KB 2025-12-31 11:13:26 - INFO --> Skipped 154 migration(s) - already applied 2025-12-31 11:13:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20251231_001_store_metrics_daily 2025-12-31 11:13:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20251231_001_store_metrics_daily 2025-12-31 11:13:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20251231_001_store_metrics_daily 2025-12-31 11:14:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create storeMetricsDaily table for cross-store analytics aggregation 2025-12-31 11:14:14 - INFO --> Skipped 153 migration(s) - already applied 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-01-01 20:12:08 - INFO --> SUCCESS: kiosk_users | alter_table | Add staff chat notification categories to userNotificationPreferences enum 2026-01-01 20:12:08 - INFO --> Skipped 154 migration(s) - already applied 2026-01-01 20:12:23 - INFO --> Skipped 164 migration(s) - already applied 2026-01-01 20:18:51 - INFO --> Skipped 164 migration(s) - already applied 2026-01-01 20:19:31 - INFO --> Skipped 164 migration(s) - already applied 2026-01-03 13:50:55 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add Staff Chat Retention Cleanup job definition (Phase 8, ADR-4) 2026-01-03 13:50:55 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add Staff Chat Outbox Processor job definition (Phase 7, ADR-7) 2026-01-03 13:50:55 - INFO --> Skipped 169 migration(s) - already applied 2026-01-03 14:45:35 - INFO --> Skipped 171 migration(s) - already applied 2026-01-03 14:45:35 - ERROR --> ERROR: | unknown | Unknown operation type in 20260103_001_backfill_mock_data_job 2026-01-03 14:45:35 - ERROR --> ERROR: | unknown | Unknown operation type in 20260103_001_backfill_mock_data_job 2026-01-03 14:45:35 - ERROR --> ERROR: | unknown | Unknown operation type in 20260103_001_backfill_mock_data_job 2026-01-03 14:45:35 - ERROR --> ERROR: | unknown | Unknown operation type in 20260103_001_backfill_mock_data_job 2026-01-03 14:46:07 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add Backfill Mock Data job definition (production - nightly at 2 AM) 2026-01-03 14:46:07 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add Backfill Mock Data job definition (dev - aggressive, runs every 30 min, disabled by default) 2026-01-03 14:46:07 - INFO --> Skipped 170 migration(s) - already applied 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add unique constraint for reactions with userId 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add unique constraint for reactions with userId 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add unique constraint for reactions with userId 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add unique constraint for reactions with userId 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-01-03 18:10:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-01-03 18:10:14 - INFO --> Skipped 176 migration(s) - already applied 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_channel_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'userId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_message_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_message_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_message_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[HY000]: General error: 1553 Cannot drop index 'uk_message_employee': needed in a foreign key constraint 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'mentionedUserId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'mentionedUserId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'mentionedUserId' doesn't exist in table 2026-01-03 18:10:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'mentionedUserId' doesn't exist in table 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_channel_members 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_mentions 2026-01-03 18:12:30 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_mentions 2026-01-03 18:12:30 - INFO --> Skipped 177 migration(s) - already applied 2026-01-04 16:48:30 - ERROR --> CSS bundle exceeds size limit: 291.68 KB > 250 KB 2026-01-04 17:27:32 - INFO --> CSS build complete: 200.39 KB, hash: 81030c71 2026-01-05 7:59:53 - INFO --> CSS build complete: 203.91 KB, hash: 162c8658 2026-01-05 8:44:01 - INFO --> Skipped 181 migration(s) - already applied 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pc00 | add_columns | Unknown operation type in 20260104_025_003_schedule_shifts_recurrence 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_ou00 | add_columns | Unknown operation type in 20260104_025_003_schedule_shifts_recurrence 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_se00 | add_columns | Unknown operation type in 20260104_025_003_schedule_shifts_recurrence 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pa00 | add_columns | Unknown operation type in 20260104_025_003_schedule_shifts_recurrence 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pc00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_ou00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_se00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pa00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pc00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'recurrenceRule' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_ou00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'recurrenceRule' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_se00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'recurrenceRule' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pa00 | add_index | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'recurrenceRule' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pc00 | add_constraint | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_ou00 | add_constraint | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_se00 | add_constraint | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:01 - ERROR --> ERROR: kiosk_pa00 | add_constraint | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'parentShiftId' doesn't exist in table 2026-01-05 8:44:31 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-01-05 8:44:31 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-01-05 8:44:31 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-01-05 8:44:31 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-01-05 8:44:31 - INFO --> Skipped 180 migration(s) - already applied 2026-01-05 8:44:42 - INFO --> Skipped 181 migration(s) - already applied 2026-01-05 9:41:00 - INFO --> CSS build complete: 207.58 KB, hash: 87843559 2026-01-05 9:43:20 - INFO --> CSS build complete: 208.34 KB, hash: 2c48909e 2026-01-05 9:48:49 - INFO --> CSS build complete: 209.19 KB, hash: 6458f752 2026-01-05 9:53:05 - INFO --> CSS build complete: 209.86 KB, hash: 2217b905 2026-01-05 9:53:58 - INFO --> CSS build complete: 209.9 KB, hash: 59ad0107 2026-01-05 10:16:32 - INFO --> CSS build complete: 209.9 KB, hash: c0feed04 2026-01-05 10:21:48 - INFO --> CSS build complete: 210.34 KB, hash: 1e062f43 2026-01-05 10:24:08 - INFO --> CSS build complete: 209.22 KB, hash: a629f2b0 2026-01-05 10:26:21 - INFO --> CSS build complete: 209.22 KB, hash: a629f2b0 2026-01-05 10:29:47 - INFO --> CSS build complete: 210.25 KB, hash: 2fa79bac 2026-01-06 8:22:53 - INFO --> Skipped 183 migration(s) - already applied 2026-01-06 8:22:53 - ERROR --> ERROR: | unknown | Unknown operation type in 20260106_000_comeback_cash_permissions 2026-01-06 8:22:53 - ERROR --> ERROR: | unknown | Unknown operation type in 20260106_000_comeback_cash_permissions 2026-01-06 8:22:53 - ERROR --> ERROR: | unknown | Unknown operation type in 20260106_000_comeback_cash_permissions 2026-01-06 8:22:53 - ERROR --> ERROR: | unknown | Unknown operation type in 20260106_000_comeback_cash_permissions 2026-01-06 8:24:02 - INFO --> SUCCESS: kiosk_users | insert | Add uri_comeback_cash permission - Redeem coupons in workspace (All users: Staff, Manager, Site Admin, Super Admin) 2026-01-06 8:24:02 - INFO --> SUCCESS: kiosk_users | insert | Add uri_comeback_cash_manage permission - Create and manage promotional events (Manager, Site Admin, Super Admin) 2026-01-06 8:24:02 - INFO --> Skipped 182 migration(s) - already applied 2026-01-06 9:34:08 - ERROR --> CSS bundle exceeds size limit: 313.69 KB > 250 KB 2026-01-06 14:03:57 - INFO --> CSS build complete: 219.91 KB, hash: 70f92100 2026-01-06 14:17:12 - INFO --> CSS build complete: 220.34 KB, hash: d9399ab1 2026-01-06 14:19:13 - INFO --> CSS build complete: 220.42 KB, hash: 65a409d9 2026-01-06 14:22:20 - INFO --> CSS build complete: 220.47 KB, hash: 9dff1cd3 2026-01-06 14:27:10 - INFO --> CSS build complete: 220.96 KB, hash: e9d12256 2026-01-06 15:21:46 - INFO --> CSS build complete: 220.96 KB, hash: e9d12256 2026-01-06 21:31:46 - INFO --> CSS build complete: 226.29 KB, hash: aeadb3f5 2026-01-08 15:31:04 - INFO --> CSS build complete: 231.53 KB, hash: 80a063d5 2026-01-08 15:58:25 - INFO --> CSS build complete: 231.53 KB, hash: 80a063d5 2026-01-09 10:52:09 - INFO --> CSS build complete: 236.93 KB, hash: 6748a8b3 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_se00 | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-01-09 11:47:45 - INFO --> Skipped 188 migration(s) - already applied 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_buykiosk | add_column | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'schedulingConfig' in 'stores' 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_buykiosk | add_column | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'aiScheduleOwnerPrefs' in 'stores' 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.role_permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.role_permissions' doesn't exist 2026-01-09 11:47:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.role_permissions' doesn't exist 2026-01-09 12:18:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add 'cancelled' status to aiScheduleJobs enum (Spec 026) 2026-01-09 12:18:42 - INFO --> Skipped 196 migration(s) - already applied 2026-01-09 12:18:42 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:18:42 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:18:42 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:18:42 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:18:42 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:11 - INFO --> Skipped 196 migration(s) - already applied 2026-01-09 12:19:11 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:11 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:11 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:11 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:11 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:17 - INFO --> Skipped 196 migration(s) - already applied 2026-01-09 12:19:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:19:17 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 12:27:28 - INFO --> CSS build complete: 237.89 KB, hash: 2e59fe6b 2026-01-09 13:06:26 - INFO --> Skipped 196 migration(s) - already applied 2026-01-09 13:06:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 13:06:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 13:06:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 13:06:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 13:06:26 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 13:32:03 - INFO --> Skipped 196 migration(s) - already applied 2026-01-09 14:00:13 - INFO --> Skipped 197 migration(s) - already applied 2026-01-09 14:00:13 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 14:36:26 - ERROR --> CSS bundle exceeds size limit: 357.17 KB > 250 KB 2026-01-09 14:58:34 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add scheduleSummary column to aiScheduleSuggestions for AI-generated human-readable summary (Spec 026) 2026-01-09 16:03:06 - INFO --> Skipped 199 migration(s) - already applied 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260109_003_shifts_local_to_utc 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260109_003_shifts_local_to_utc 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260109_003_shifts_local_to_utc 2026-01-09 16:03:06 - ERROR --> ERROR: | unknown | Unknown operation type in 20260109_003_shifts_local_to_utc 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-01-09 16:03:55 - INFO --> Skipped 198 migration(s) - already applied 2026-01-09 16:03:55 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:55 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:55 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:55 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:55 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-09 16:03:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'shiftStart' cannot be null 2026-01-09 16:03:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'shiftStart' cannot be null 2026-01-09 16:03:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'shiftStart' cannot be null 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-01-10 11:51:07 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-01-10 11:51:07 - INFO --> Skipped 199 migration(s) - already applied 2026-01-10 11:51:07 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-10 11:51:07 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-10 11:51:07 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-10 11:51:07 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-10 11:51:07 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create homepage_stats table for cached homepage statistics (spec 029) 2026-01-14 13:18:44 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed initial fallback values for homepage_stats (spec 029) 2026-01-14 13:18:44 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register HomepageStatsJob in task_job_definitions (spec 029) 2026-01-14 13:18:44 - INFO --> Skipped 210 migration(s) - already applied 2026-01-14 13:18:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:18:44 - ERROR --> ERROR: kiosk_buykiosk | drop_table | Unknown operation type in 20260114_028_08_drop_seller_marketing_queue_central 2026-01-14 13:18:44 - ERROR --> ERROR: kiosk_buykiosk | delete_data | Unknown operation type in 20260114_028_09_cleanup_event_integrations 2026-01-14 13:19:45 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Drop seller_marketing_queue table from central database - text marketing removal (spec 028) 2026-01-14 13:19:45 - INFO --> Skipped 211 migration(s) - already applied 2026-01-14 13:19:45 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:19:45 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:19:45 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:19:45 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:19:45 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-14 13:19:45 - ERROR --> ERROR: kiosk_buykiosk | raw_sql | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.event_integrations' doesn't exist 2026-01-14 16:19:28 - INFO --> CSS build complete: 239.47 KB, hash: 16992859 2026-01-14 16:22:32 - INFO --> CSS build complete: 239.46 KB, hash: 249dfd0c 2026-01-14 16:24:08 - INFO --> CSS build complete: 239.47 KB, hash: 536c9c07 2026-01-14 16:36:53 - INFO --> CSS build complete: 239.5 KB, hash: df610cc9 2026-01-15 11:39:14 - INFO --> CSS build complete: 239.73 KB, hash: 46190adc 2026-01-15 11:55:39 - INFO --> CSS build complete: 239.52 KB, hash: b265e650 2026-01-15 12:00:40 - INFO --> CSS build complete: 239.6 KB, hash: 77042725 2026-01-15 12:03:13 - INFO --> CSS build complete: 238.89 KB, hash: 06f592de 2026-01-15 12:10:03 - INFO --> CSS build complete: 238.92 KB, hash: 23ba1d71 2026-01-15 12:12:33 - INFO --> CSS build complete: 239.02 KB, hash: 26b0f97d 2026-01-15 12:15:34 - INFO --> CSS build complete: 239.02 KB, hash: ebcdd39a 2026-01-15 12:17:31 - INFO --> CSS build complete: 238.67 KB, hash: 7f93a640 2026-01-15 12:39:11 - INFO --> CSS build complete: 238.76 KB, hash: ea0354c7 2026-01-15 12:40:18 - INFO --> CSS build complete: 238.76 KB, hash: 4f4d58c8 2026-01-15 12:45:27 - INFO --> CSS build complete: 238.9 KB, hash: e46cacc6 2026-01-15 12:47:18 - INFO --> CSS build complete: 238.88 KB, hash: c809000f 2026-01-15 12:49:14 - INFO --> CSS build complete: 239.06 KB, hash: 263c98af 2026-01-15 12:49:46 - INFO --> CSS build complete: 239.04 KB, hash: 08263dfc 2026-01-15 12:51:41 - INFO --> CSS build complete: 239.5 KB, hash: 052d17e2 2026-01-15 13:29:33 - INFO --> CSS build complete: 239.72 KB, hash: 47947b7a 2026-01-15 13:35:38 - INFO --> CSS build complete: 239.99 KB, hash: faee008b 2026-01-15 13:36:33 - INFO --> CSS build complete: 240.05 KB, hash: 175172aa 2026-01-15 13:40:42 - INFO --> CSS build complete: 241.13 KB, hash: d100e5dd 2026-01-15 13:42:06 - INFO --> CSS build complete: 241.04 KB, hash: 14b94824 2026-01-15 13:43:54 - INFO --> CSS build complete: 241.17 KB, hash: 9c967855 2026-01-15 13:49:42 - INFO --> CSS build complete: 241.18 KB, hash: e5d4d9c9 2026-01-15 13:53:38 - INFO --> CSS build complete: 241.18 KB, hash: eae69f38 2026-01-15 15:49:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add defaultSocketPositions JSON column to fpRackTypes for visual port placement 2026-01-19 14:34:44 - INFO --> Skipped 212 migration(s) - already applied 2026-01-19 14:34:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-19 14:34:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-19 14:34:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-19 14:34:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-19 14:34:44 - ERROR --> ERROR: | unknown | Unknown operation type in 20260108_010_ai_suggestions_unique_pending 2026-01-20 15:22:31 - INFO --> CSS build complete: 240.45 KB, hash: 443717cb 2026-02-05 15:32:47 - ERROR --> CSS bundle exceeds size limit: 360.69 KB > 250 KB 2026-02-05 16:21:45 - ERROR --> CSS bundle exceeds size limit: 252.61 KB > 250 KB 2026-02-05 16:49:57 - ERROR --> CSS bundle exceeds size limit: 380.84 KB > 250 KB 2026-02-06 12:02:07 - ERROR --> CSS bundle exceeds size limit: 252.61 KB > 250 KB 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_se00 | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add identity columns to support_edit_suggestions table for submitter tracking 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add index on storeTypeNum for filtering suggestions by store 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on user_id for support_article_comments 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on user_id for support_article_comments 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on user_id for support_article_comments 2026-02-06 12:57:17 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on user_id for support_article_comments 2026-02-06 12:57:17 - INFO --> Skipped 233 migration(s) - already applied 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_pc00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_pc00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_se00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_se00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_pa00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_pa00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 12:57:17 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 13:04:10 - ERROR --> CSS bundle exceeds size limit: 252.62 KB > 250 KB 2026-02-06 13:44:11 - ERROR --> CSS bundle exceeds size limit: 259.58 KB > 250 KB 2026-02-06 13:44:18 - ERROR --> CSS bundle exceeds size limit: 259.58 KB > 250 KB 2026-02-06 13:44:18 - ERROR --> CSS bundle exceeds size limit: 259.58 KB > 250 KB 2026-02-06 13:44:44 - INFO --> CSS build complete: 259.58 KB, hash: dde488f6 2026-02-06 13:47:53 - INFO --> CSS build complete: 265.62 KB, hash: e34251aa 2026-02-06 15:39:29 - INFO --> Skipped 235 migration(s) - already applied 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_pc00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_pc00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_se00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_se00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_pa00 | create_table | SQLSTATE[HY000]: General error: 1005 Can't create table `kiosk_pa00`.`replenishmenttasks` (errno: 150 "Foreign key constraint is incorrectly formed") [file: 20260206_004_replenishment_task_linkage] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:39:29 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:40:20 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-06 15:40:20 - INFO --> SUCCESS: kiosk_se00 | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-06 15:40:20 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-06 15:40:20 - INFO --> Skipped 234 migration(s) - already applied 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 15:40:20 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-06 17:17:27 - INFO --> CSS build complete: 265.7 KB, hash: 92aff7ca 2026-02-07 14:38:24 - INFO --> CSS build complete: 274.36 KB, hash: 0a193645 2026-02-07 15:45:17 - INFO --> CSS build complete: 274.69 KB, hash: dbf25531 2026-02-07 15:50:13 - INFO --> CSS build complete: 274.78 KB, hash: 3b0d851f 2026-02-07 15:55:46 - INFO --> CSS build complete: 274.78 KB, hash: 3b0d851f 2026-02-07 16:18:20 - INFO --> CSS build complete: 275.44 KB, hash: 21c71502 2026-02-07 16:23:43 - INFO --> CSS build complete: 275.44 KB, hash: 21c71502 2026-02-09 9:38:16 - INFO --> CSS build complete: 278.9 KB, hash: 0f0c6886 2026-02-09 10:16:42 - INFO --> CSS build complete: 278.9 KB, hash: 0f0c6886 2026-02-09 11:09:53 - INFO --> CSS build complete: 278.94 KB, hash: acb2186a 2026-02-09 11:11:19 - INFO --> CSS build complete: 278.89 KB, hash: 4bb9e4ae 2026-02-09 11:20:04 - INFO --> CSS build complete: 279 KB, hash: 0fa457b6 2026-02-09 11:25:02 - INFO --> CSS build complete: 279.03 KB, hash: c69d642e 2026-02-09 11:25:47 - INFO --> CSS build complete: 279.12 KB, hash: d99a9e51 2026-02-09 11:28:00 - INFO --> CSS build complete: 279.31 KB, hash: ba1b88cb 2026-02-09 12:40:12 - INFO --> CSS build complete: 279.36 KB, hash: e6c0bf52 2026-02-09 12:41:14 - INFO --> CSS build complete: 279.34 KB, hash: 334c02bc 2026-02-09 12:42:50 - INFO --> CSS build complete: 279.34 KB, hash: ccb361e2 2026-02-09 12:44:56 - INFO --> CSS build complete: 279.34 KB, hash: ccb361e2 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumStatus column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumTrialStartDate column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumTrialEndDate column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumTrialUsed column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumActivatedAt column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumActivatedByUserId column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add premiumDeactivatedAt column to stores table 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add index on premiumStatus column 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add composite index on premiumTrialEndDate and premiumStatus for trial expiration queries 2026-02-09 21:18:20 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create premiumEventLog table for premium analytics tracking 2026-02-09 21:18:20 - INFO --> Skipped 235 migration(s) - already applied 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-09 21:18:20 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-09 22:00:17 - ERROR --> CSS bundle exceeds size limit: 289.11 KB > 280 KB 2026-02-09 22:00:44 - INFO --> CSS build complete: 289.11 KB, hash: de4b37e7 2026-02-10 8:37:34 - INFO --> CSS build complete: 290.92 KB, hash: f839c77c 2026-02-10 8:44:19 - INFO --> CSS build complete: 291.99 KB, hash: 5bf687ca 2026-02-10 8:45:15 - INFO --> CSS build complete: 292 KB, hash: 2d386151 2026-02-10 8:50:58 - INFO --> CSS build complete: 293.04 KB, hash: 61643948 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create billingSmsUsage table for SMS usage tracking 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create billingInvoices table for invoice records 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create billingLineItems table for invoice line items 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create billingSmsCategoryConfig table for per-store SMS category configuration 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add billingBaseRateOverride column to stores table 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add billingPremiumRate column to stores table 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add billingContactEmail column to stores table 2026-02-10 15:04:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add billingConfigUpdatedAt column to stores table 2026-02-10 15:04:14 - INFO --> Skipped 237 migration(s) - already applied 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:04:14 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:11:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Make invoice number globally unique 2026-02-10 15:11:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Make billingLineItems quantity column unsigned 2026-02-10 15:11:13 - INFO --> Skipped 242 migration(s) - already applied 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:11:13 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:13:27 - INFO --> Skipped 244 migration(s) - already applied 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 15:13:27 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:01:48 - ERROR --> CSS bundle exceeds size limit: 303.05 KB > 300 KB 2026-02-10 17:07:58 - ERROR --> CSS bundle exceeds size limit: 303.05 KB > 300 KB 2026-02-10 17:08:23 - INFO --> CSS build complete: 303.05 KB, hash: 6a738849 2026-02-10 17:23:37 - INFO --> Skipped 245 migration(s) - already applied 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:37 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-10 17:23:42 - INFO --> Skipped 245 migration(s) - already applied 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-10 17:23:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 12:18:52 - INFO --> CSS build complete: 314.07 KB, hash: 85974cb9 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add providerCostUsd column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add costStatus column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add costCapturedAt column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add costRetryCount column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add deliveryStatus column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add providerRawStatus column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add deliveryUpdatedAt column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add deliveryErrorCode column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add deliveryErrorMessage column to billingSmsUsage 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_index | Add index for cost pending lookups 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | add_index | Add index for delivery status queries 2026-02-11 13:09:09 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create smsWebhookLog table for webhook audit trail 2026-02-11 13:09:09 - INFO --> Skipped 253 migration(s) - already applied 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | alter_column | Unknown operation type in 20260211_037_001_billing_sms_cost_columns 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260211_037_003_sms_cost_lookup_job] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260211_037_004_demo_simulation_job] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260211_037_004b_stale_cost_sweep_job] 2026-02-11 13:09:09 - ERROR --> ERROR: kiosk_buykiosk | update | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.storefeatureflags' doesn't exist [file: 20260211_037_005_enable_embedded_chat] 2026-02-11 13:10:15 - INFO --> Skipped 255 migration(s) - already applied 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | modify_column | Unknown operation type in 20260211_037_001_billing_sms_cost_columns 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobName' in 'INSERT INTO' [file: 20260211_037_003_sms_cost_lookup_job] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobName' in 'INSERT INTO' [file: 20260211_037_004_demo_simulation_job] 2026-02-11 13:10:15 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobName' in 'INSERT INTO' [file: 20260211_037_004b_stale_cost_sweep_job] 2026-02-11 13:11:03 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register SmsCostLookupJob for delayed cost capture from Twilio API 2026-02-11 13:11:03 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register DemoDeliverySimulationJob for simulating delivery status in demo stores 2026-02-11 13:11:03 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register SmsStaleCostSweepJob for daily sweep of messages with pending cost status 2026-02-11 13:11:03 - INFO --> Skipped 252 migration(s) - already applied 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:03 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 13:11:08 - INFO --> Skipped 255 migration(s) - already applied 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:08 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 13:11:12 - INFO --> Skipped 255 migration(s) - already applied 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'ACCD' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-11 13:11:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-11 14:33:43 - INFO --> CSS build complete: 314.47 KB, hash: 349929bc 2026-02-11 14:37:45 - INFO --> CSS build complete: 314.47 KB, hash: 349929bc 2026-02-11 14:55:19 - INFO --> CSS build complete: 314.98 KB, hash: b277ffa8 2026-02-12 11:06:03 - INFO --> CSS build complete: 314.6 KB, hash: 462b323c 2026-02-12 11:12:55 - INFO --> CSS build complete: 314.58 KB, hash: 5590afaa 2026-02-12 11:25:54 - INFO --> CSS build complete: 314.58 KB, hash: 5590afaa 2026-02-12 11:47:46 - INFO --> CSS build complete: 314.58 KB, hash: 5590afaa 2026-02-12 11:54:14 - INFO --> CSS build complete: 314.58 KB, hash: 5590afaa 2026-02-12 13:23:16 - INFO --> CSS build complete: 315.34 KB, hash: 69195808 2026-02-12 13:24:33 - INFO --> CSS build complete: 315.34 KB, hash: e2ba6d15 2026-02-12 13:25:54 - INFO --> CSS build complete: 315.35 KB, hash: 479ec80b 2026-02-12 13:27:20 - INFO --> CSS build complete: 315.33 KB, hash: 191840c8 2026-02-12 15:52:55 - INFO --> CSS build complete: 315.33 KB, hash: 191840c8 2026-02-12 15:58:13 - INFO --> CSS build complete: 315.9 KB, hash: 46a34d45 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add sourceId column to tasks table - references source record 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed Floor Plan task group into taskGroups table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed Floor Plan task group into taskGroups table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_se00 | insert | Seed Floor Plan task group into taskGroups table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed Floor Plan task group into taskGroups table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_se00 | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_se00 | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-12 16:14:41 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register FloorPlanTaskGeneratorJob for daily scheduled floor plan task generation 2026-02-12 16:14:41 - INFO --> Skipped 255 migration(s) - already applied 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'timeOfDay' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'timeOfDay' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'timeOfDay' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'taskMode' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'taskMode' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'taskMode' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceType' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceType' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceType' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceId' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceId' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'sourceId' in 'tasks' [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'taskMode' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'taskMode' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'taskMode' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'sourceType' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'sourceType' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:14:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'sourceType' doesn't exist in table [file: 20260212_001_workbook_one_time_tasks] 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add sourceId column to tasks table - references source record 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add sourceId column to tasks table - references source record 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add sourceId column to tasks table - references source record 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-12 16:16:20 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-12 16:16:20 - INFO --> Skipped 259 migration(s) - already applied 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:16:20 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 16:18:01 - INFO --> CSS build complete: 315.9 KB, hash: 06d4ed9c 2026-02-12 16:19:58 - INFO --> Skipped 260 migration(s) - already applied 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:19:58 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 16:44:41 - INFO --> Skipped 261 migration(s) - already applied 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:44:41 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_se00 | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 33 rows) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_se00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-12 16:51:42 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-12 16:51:42 - INFO --> Skipped 260 migration(s) - already applied 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 16:51:42 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 17:06:07 - INFO --> CSS build complete: 316.43 KB, hash: 896ac175 2026-02-12 17:07:12 - INFO --> CSS build complete: 316.25 KB, hash: 7d12af6c 2026-02-12 17:08:32 - INFO --> CSS build complete: 316.26 KB, hash: e226faaf 2026-02-12 18:32:10 - INFO --> CSS build complete: 316.87 KB, hash: 50ed7822 2026-02-12 19:31:24 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create dlAccessLog table for auditing driver's license access with signature consent 2026-02-12 19:31:24 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add termsText column to dlAccessLog to preserve exact T&C wording agreed to 2026-02-12 19:31:24 - INFO --> Skipped 261 migration(s) - already applied 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-12 19:31:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-12 19:36:49 - INFO --> CSS build complete: 323.85 KB, hash: cec7495d 2026-02-12 19:48:41 - INFO --> CSS build complete: 323.88 KB, hash: e211af44 2026-02-12 19:51:01 - INFO --> CSS build complete: 324.3 KB, hash: 0379ddcd 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_buykiosk | update | Fix Event Management support category icon to use fa-calendar-days (affected: 1 rows) 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register StrandedBuyCleanupJob for nightly checkout of stranded completed buys 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_users | alter_table | Drop incorrect FK on userStoreAssignments that references uf_user instead of users 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_users | alter_table | Add correct FK on userStoreAssignments referencing users table instead of uf_user 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_buykiosk | update | Change employee-sync from every 15 minutes to daily at 12:00 UTC (7 AM ET / 4 AM PT) - runs before store opens (affected: 1 rows) 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_users | alter_table | Add unique index on users.email to prevent duplicate email addresses 2026-02-13 15:37:24 - INFO --> SUCCESS: kiosk_users | alter_table | Add unique index on users.username to prevent duplicate usernames 2026-02-13 15:37:24 - INFO --> Skipped 263 migration(s) - already applied 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'storeGroup' in 'INSERT INTO' [file: 20260123_demo_stores_registration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_users.task_job_definitions' doesn't exist [file: 20260126_001_close_report_migrate_legacy_job_def] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'AC' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: 'MAAP' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'concept' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pc-5' for key 'PRIMARY' [file: 20260202_001_drs_multi_concept_metadata] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_pc00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_ou00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_pa00 | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'bc.catName' in 'WHERE' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 15:37:24 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.taskjobdefinitions' doesn't exist [file: 20260210_036_009_billing_job_definition] 2026-02-13 15:53:26 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register MigrateLegacyCloseReportsJob for TaskEngine 2026-02-13 15:53:26 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register billing invoice generation job for monthly automated billing 2026-02-13 15:53:26 - INFO --> Skipped 266 migration(s) - already applied 2026-02-13 15:53:26 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[HY000]: General error: 1364 Field 'address' doesn't have a default value [file: 20260123_demo_stores_registration] 2026-02-13 15:53:26 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[HY000]: General error: 1364 Field 'address' doesn't have a default value [file: 20260123_demo_stores_registration] 2026-02-13 15:53:26 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[HY000]: General error: 1364 Field 'address' doesn't have a default value [file: 20260123_demo_stores_registration] 2026-02-13 15:53:26 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DECIMAL value: '' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 16:01:12 - INFO --> Skipped 268 migration(s) - already applied 2026-02-13 16:01:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'pc' for column `kiosk_buykiosk`.`stores`.`storeType` at row 1 [file: 20260123_demo_stores_registration] 2026-02-13 16:01:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'ou' for column `kiosk_buykiosk`.`stores`.`storeType` at row 1 [file: 20260123_demo_stores_registration] 2026-02-13 16:01:12 - ERROR --> ERROR: kiosk_buykiosk | insert | SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'se' for column `kiosk_buykiosk`.`stores`.`storeType` at row 1 [file: 20260123_demo_stores_registration] 2026-02-13 16:01:12 - ERROR --> ERROR: kiosk_se00 | insert | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect DECIMAL value: '' [file: 20260206_005_replenishment_backstock_migration] 2026-02-13 16:09:12 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register demo Plato's Closet store 2026-02-13 16:09:12 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register demo Once Upon A Child store 2026-02-13 16:09:12 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register demo Style Encore store 2026-02-13 16:09:12 - INFO --> SUCCESS: kiosk_se00 | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-02-13 16:09:12 - INFO --> Skipped 266 migration(s) - already applied 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Modify driversLicense column in customers table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Modify driversLicense column in customers table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Modify driversLicense column in customers table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default task groups (Opening and Closing) if table is empty 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default task groups (Opening and Closing) if table is empty 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default task groups (Opening and Closing) if table is empty 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Insert sample seller marketing message templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Insert sample seller marketing message templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Insert sample seller marketing message templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_task_lists table for task list configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_task_lists table for task list configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_task_lists table for task list configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_task_assignments table for task employee assignments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_task_assignments table for task employee assignments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_task_assignments table for task employee assignments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_task_completions table for daily task tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_task_completions table for daily task tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_task_completions table for daily task tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_task_comments table for task comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_task_comments table for task comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_task_comments table for task comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add startDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add startDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add startDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add endDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add endDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add endDate column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add timeOfDay column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add timeOfDay column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add timeOfDay column to tasks table for task scheduling 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_notes table for notes/announcements system 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_notes table for notes/announcements system 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_notes table for notes/announcements system 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_note_reactions table for note likes/reactions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_note_reactions table for note likes/reactions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_note_reactions table for note likes/reactions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_note_comments table for comments on notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_note_comments table for comments on notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_note_comments table for comments on notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_kpi_config table for KPI configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_kpi_config table for KPI configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_kpi_config table for KPI configuration 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Insert default KPI configuration values 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Insert default KPI configuration values 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Insert default KPI configuration values 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create daybook_list_schedule table for per-day start times 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create daybook_list_schedule table for per-day start times 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create daybook_list_schedule table for per-day start times 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create QuickBooks account mapping table for each store 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create QuickBooks account mapping table for each store 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create QuickBooks account mapping table for each store 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Insert default S-file field mappings for QuickBooks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Insert default S-file field mappings for QuickBooks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Insert default S-file field mappings for QuickBooks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Seed default position mappings for common WhenIWork positions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Seed default position mappings for common WhenIWork positions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Seed default position mappings for common WhenIWork positions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed drsCategories from CSV data (Plato's Closet stores only) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed drsSubCategories from CSV data (Plato's Closet stores only) - Part 1 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Seed bsCategories with floor plan categories (insert missing only, Plato's Closet stores only) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default floor plan settings 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default floor plan settings 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default floor plan settings 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed fpFixtureTypes defaults 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set endcap dimensions (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set endcap dimensions (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set endcap dimensions (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set freestanding rack dimensions (3ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set freestanding rack dimensions (3ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set freestanding rack dimensions (3ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set wall unit dimensions (4ft x 1.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set wall unit dimensions (4ft x 1.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set wall unit dimensions (4ft x 1.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set combo rack dimensions (4ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set combo rack dimensions (4ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set combo rack dimensions (4ft x 3ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set service counter dimensions (5ft x 2.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set service counter dimensions (5ft x 2.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set service counter dimensions (5ft x 2.5ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for any remaining rack types (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for any remaining rack types (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for any remaining rack types (3ft x 2ft) (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Insert default positions for new stores 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Insert default positions for new stores 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Insert default positions for new stores 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Modify scheduleShifts table - nullable employeeId for open shifts, add publishing columns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Modify scheduleShifts table - nullable employeeId for open shifts, add publishing columns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Modify scheduleShifts table - nullable employeeId for open shifts, add publishing columns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add GPS location columns to scheduleTimePunches for geofence validation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add GPS location columns to scheduleTimePunches for geofence validation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add GPS location columns to scheduleTimePunches for geofence validation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleAvailability table for recurring employee availability patterns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleAvailability table for recurring employee availability patterns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleAvailability table for recurring employee availability patterns 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleAvailabilityExceptions table for date-specific availability overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleAvailabilityExceptions table for date-specific availability overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleAvailabilityExceptions table for date-specific availability overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleTimeOffRequests table for employee time off requests 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleTimeOffRequests table for employee time off requests 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleTimeOffRequests table for employee time off requests 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleSwapRequests table for shift swap workflow between employees 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleSwapRequests table for shift swap workflow between employees 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleSwapRequests table for shift swap workflow between employees 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create schedulePublished table to track weekly schedule publications 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create schedulePublished table to track weekly schedule publications 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create schedulePublished table to track weekly schedule publications 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleAuditLog table for comprehensive scheduling action audit trail 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleAuditLog table for comprehensive scheduling action audit trail 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleAuditLog table for comprehensive scheduling action audit trail 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add minRoleId column to scheduleShifts for open shift role requirements - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add minRoleId column to scheduleShifts for open shift role requirements - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add minRoleId column to scheduleShifts for open shift role requirements - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index for open shifts with role requirements 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index for open shifts with role requirements 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index for open shifts with role requirements 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add claimedAt column to scheduleShifts to track when open shifts are claimed - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add claimedAt column to scheduleShifts to track when open shifts are claimed - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add claimedAt column to scheduleShifts to track when open shifts are claimed - Spec 022 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create analytics_item_velocity table for velocity bucket aggregation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create analytics_velocity_daily table for daily velocity summary 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create analytics_velocity_daily table for daily velocity summary 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create analytics_velocity_daily table for daily velocity summary 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create analytics_seller_cohorts table for seller retention tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create analytics_seller_cohorts table for seller retention tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create analytics_seller_cohorts table for seller retention tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_channels table for Staff Chat channels with role-based access 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_messages table for Staff Chat message storage with audit support 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_reactions table for emoji reactions on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_read_receipts table for per-channel high water mark read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_channel_members table for manual membership overrides (ADR-3 hybrid approach) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_attachments table for image attachments on Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_mentions table for @user mention tracking in Staff Chat messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_audit_log table for message edit/delete tracking (2 year retention) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create staff_chat_event_outbox table for reliable async Ably publishing (ADR-7 outbox pattern) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create closeReports table for storing daily close report data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create closeReports table for storing daily close report data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create closeReports table for storing daily close report data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename createdByEmployeeId to createdByUserId in staff_chat_channels (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename senderEmployeeId to senderUserId in staff_chat_messages (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add index for senderUserId in staff_chat_messages 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename employeeId to userId in staff_chat_reactions (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add unique constraint for reactions with userId 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add unique constraint for reactions with userId 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add unique constraint for reactions with userId 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename employeeId to userId in staff_chat_audit_log (global user ID) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename employeeId to userId in staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_channel_members 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename employeeId to userId in staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_read_receipts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename mentionedEmployeeId to mentionedUserId in staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_mentions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleTemplates table for storing schedule templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleTemplates table for storing schedule templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleTemplates table for storing schedule templates 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleTemplateShifts table for storing template shift definitions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleTemplateShifts table for storing template shift definitions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleTemplateShifts table for storing template shift definitions 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add recurrence support columns to scheduleShifts table for recurring shifts 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index for parent shift lookups in recurrence series 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index for parent shift lookups in recurrence series 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index for parent shift lookups in recurrence series 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index for recurrence rule queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index for recurrence rule queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index for recurrence rule queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add foreign key for parent shift self-reference 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add foreign key for parent shift self-reference 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add foreign key for parent shift self-reference 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create aiScheduleSuggestions table for AI-generated schedule suggestions (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create mobileSigninSessions table for mobile sign-in session tokens 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create mobileSigninSessions table for mobile sign-in session tokens 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create mobileSigninSessions table for mobile sign-in session tokens 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create aiScheduleUsage table for rate limiting tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create mobileSigninSignatures table for signature capture storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create mobileSigninSignatures table for signature capture storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create mobileSigninSignatures table for signature capture storage 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create aiScheduleJobs table for async job tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add mobileSigninSessionId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add mobileSigninSessionId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add mobileSigninSessionId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add signatureId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add signatureId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add signatureId column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add smsOptIn column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add smsOptIn column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add smsOptIn column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add hasDesignerItems column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add hasDesignerItems column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add hasDesignerItems column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add containerCount column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add containerCount column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add containerCount column to buyQueue table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add index on mobileSigninSessionId for quick lookups 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add index on mobileSigninSessionId for quick lookups 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add index on mobileSigninSessionId for quick lookups 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add aiSuggestionId column to scheduleShifts for AI assignment tracking (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add aiAssignedAt column to scheduleShifts for AI assignment timestamp (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add index on aiSuggestionId for efficient AI suggestion queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create aiScheduleSessionLogs table for full AI session logging (Spec 026 PRD Feature 13) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create hourlyStaffingMetrics table for historical data collection (Spec 026 PRD Features 11 & 12) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add pendingWeekStart generated column to aiScheduleSuggestions for unique pending constraint 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add pendingWeekStart generated column to aiScheduleSuggestions for unique pending constraint 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add pendingWeekStart generated column to aiScheduleSuggestions for unique pending constraint 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add unique index on pendingWeekStart to enforce one pending suggestion per week 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add unique index on pendingWeekStart to enforce one pending suggestion per week 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add unique index on pendingWeekStart to enforce one pending suggestion per week 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create mobileSignInPushSubscriptions table for Web Push notifications (PRD Feature 16) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create mobileSignInPushSubscriptions table for Web Push notifications (PRD Feature 16) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create mobileSignInPushSubscriptions table for Web Push notifications (PRD Feature 16) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Update scheduleAvailability.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Update scheduleAvailabilityExceptions.employeeId column comment to reflect FK to central users 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add 'cancelled' status to aiScheduleJobs enum (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add 'cancelled' status to aiScheduleJobs enum (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add 'cancelled' status to aiScheduleJobs enum (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add scheduleSummary column to aiScheduleSuggestions for AI-generated human-readable summary (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add scheduleSummary column to aiScheduleSuggestions for AI-generated human-readable summary (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add scheduleSummary column to aiScheduleSuggestions for AI-generated human-readable summary (Spec 026) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert publishedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert publishedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert publishedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert claimedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert claimedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert claimedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add discount_line column to ccEvents for printed coupon headline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add tag_line_1 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add tag_line_2 column to ccEvents for printed coupon subheadline 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add exclusions column to ccEvents for printed coupon exclusions text 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add defaultRackUnits column to fpRackTypes table - rack type's default capacity in abstract units 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add defaultRackUnits column to fpRackTypes table - rack type's default capacity in abstract units 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add defaultRackUnits column to fpRackTypes table - rack type's default capacity in abstract units 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add rackUnitsOverride column to fpRacks table - individual rack can override type default 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add rackUnitsOverride column to fpRacks table - individual rack can override type default 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add rackUnitsOverride column to fpRacks table - individual rack can override type default 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add rackUnitsAllocated column to fpSocketAssignments table - units allocated to category on socket 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add rackUnitsAllocated column to fpSocketAssignments table - units allocated to category on socket 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add rackUnitsAllocated column to fpSocketAssignments table - units allocated to category on socket 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add categoryType column to bsBin_Cat table - distinguish POS categories from custom tags 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add categoryType column to bsBin_Cat table - distinguish POS categories from custom tags 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add categoryType column to bsBin_Cat table - distinguish POS categories from custom tags 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create replenishmentTracking table - tracks last replenishment date per category for hybrid time window calculation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create replenishmentTracking table - tracks last replenishment date per category for hybrid time window calculation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create replenishmentTracking table - tracks last replenishment date per category for hybrid time window calculation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create replenishmentCategorySettings table - category-level threshold overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create replenishmentCategorySettings table - category-level threshold overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create replenishmentCategorySettings table - category-level threshold overrides 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create replenishmentTasks table - links workbook tasks to bins and categories for replenishment workflow 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create replenishmentStockoutTracking table for stockout event detection 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add identity columns to support_article_comments table for commenter tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on user_id for support_article_comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on user_id for support_article_comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on user_id for support_article_comments 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add lastReadAt column to chat_threads for store-wide read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add lastReadAt column to chat_threads for store-wide read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add lastReadAt column to chat_threads for store-wide read tracking 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add composite index for efficient unread count queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add composite index for efficient unread count queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add composite index for efficient unread count queries 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add 'status' to chat_messages category enum for system divider messages (e.g., new buy started) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add 'status' to chat_messages category enum for system divider messages (e.g., new buy started) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add 'status' to chat_messages category enum for system divider messages (e.g., new buy started) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add taskMode column to tasks table - distinguishes floor plan tasks from daily checklists 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add sourceType column to tasks table - origin of the task 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add sourceId column to tasks table - references source record 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add sourceId column to tasks table - references source record 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add sourceId column to tasks table - references source record 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add metadata JSON column to tasks table - type-specific structured data 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on taskMode for efficient filtering of one-time vs recurring tasks 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on sourceType and sourceId for querying tasks by origin 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add taskGenerationConfig JSON column to fpLayouts - stores dropped category resolutions for scheduled generation 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed Floor Plan task group into taskGroups table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed Floor Plan task group into taskGroups table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed Floor Plan task group into taskGroups table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed Floor Plan entry into workbook_task_lists - always visible, no time gating, appears last 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Rename fpMoveTasks to fpMoveTasks_deprecated - data preserved for reference, new tasks use unified workbook tasks table 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Replace unique constraint uk_floorPlan_rackName with regular index idx_floorPlan_rackName on fpRacks - allows duplicate custom names per floor plan (e.g. multiple Cash Wrap racks) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-02-13 16:09:40 - INFO --> Skipped 186 migration(s) - already applied 2026-02-13 16:09:40 - ERROR --> ERROR: kiosk_demo_pc | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:09:40 - ERROR --> ERROR: kiosk_demo_ou | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:09:40 - ERROR --> ERROR: kiosk_demo_se | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:09:49 - INFO --> Skipped 268 migration(s) - already applied 2026-02-13 16:09:49 - ERROR --> ERROR: kiosk_demo_pc | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:09:49 - ERROR --> ERROR: kiosk_demo_ou | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:09:49 - ERROR --> ERROR: kiosk_demo_se | insert | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'defaultSocketPositions' in 'INSERT INTO' [file: 20251217_001_floorplan_core] 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add defaultSocketPositions column to fpRackTypes if missing (for databases created from BLANK_STRUCTURE before this column existed) 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add defaultSocketPositions column to fpRackTypes if missing (for databases created from BLANK_STRUCTURE before this column existed) 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add defaultSocketPositions column to fpRackTypes if missing (for databases created from BLANK_STRUCTURE before this column existed) 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed all 30 system rack types - Combo, Freestanding, Wall, Endcap, Service fixtures 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed all 30 system rack types - Combo, Freestanding, Wall, Endcap, Service fixtures 2026-02-13 16:11:41 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed all 30 system rack types - Combo, Freestanding, Wall, Endcap, Service fixtures 2026-02-13 16:11:41 - INFO --> Skipped 267 migration(s) - already applied 2026-02-13 16:11:47 - INFO --> Skipped 268 migration(s) - already applied 2026-02-14 16:56:42 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add mobileSigninDesignerTermsHtml column to stores table for configurable designer item certification 2026-02-14 16:56:42 - INFO --> Skipped 268 migration(s) - already applied 2026-02-14 17:00:35 - INFO --> Skipped 269 migration(s) - already applied 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_se00 | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add averageTransaction column to LiveFinancials for POS average transaction value 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_se00 | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add transactionCount column to LiveFinancials for POS transaction count 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_se00 | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add tradePercent column to LiveFinancials for POS trade percentage 2026-02-15 10:18:38 - INFO --> Skipped 269 migration(s) - already applied 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_users | alter_table | Add oldEmployeeId column to userStoreAssignments for backward-compatible mapping from store-level employees table 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | update | Enable replenishment tracking by default for all stores. Updates existing fpSettings rows from disabled to enabled. (affected: 2 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | update | Enable replenishment tracking by default for all stores. Updates existing fpSettings rows from disabled to enabled. (affected: 2 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | update | Enable replenishment tracking by default for all stores. Updates existing fpSettings rows from disabled to enabled. (affected: 2 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | update | Enable replenishment tracking by default for all stores. Updates existing fpSettings rows from disabled to enabled. (affected: 2 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | update | Enable replenishment tracking by default for all stores. Updates existing fpSettings rows from disabled to enabled. (affected: 2 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Make totalRevenue nullable in storeMetricsDaily so stores without POS data get NULL instead of 0 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_buykiosk | update | Set totalRevenue to NULL where it is 0 but store has buys (indicates missing POS data, not actual $0) (affected: 15 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_kpi_config table if it does not exist 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_kpi_config table if it does not exist 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_kpi_config table if it does not exist 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_kpi_config table if it does not exist 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | insert | Insert default KPI configuration values with transactions, avgTrans, tradePercent hidden 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | insert | Insert default KPI configuration values with transactions, avgTrans, tradePercent hidden 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | insert | Insert default KPI configuration values with transactions, avgTrans, tradePercent hidden 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | insert | Insert default KPI configuration values with transactions, avgTrans, tradePercent hidden 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | update | Hide Transactions, Avg Trans, and Trade % KPIs until data sources are hooked up (affected: 3 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | update | Hide Transactions, Avg Trans, and Trade % KPIs until data sources are hooked up (affected: 3 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | update | Hide Transactions, Avg Trans, and Trade % KPIs until data sources are hooked up (affected: 3 rows) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_users | insert | Add task-lists permission for Store group (12) so all store-level users can access workbook API endpoints 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add avgTrans column to LiveFinancials for average transaction value (stored as integer, cents-style) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add transCount column to LiveFinancials for number of sale transactions (stored as integer) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add tradePct column to LiveFinancials for trade/buy percentage (stored as integer, e.g. 3835 = 38.35%) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add retry_count column to chat_messages for tracking SMS retry attempts (max 2 retries) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | insert | Add default 'Default On-Site' location for stores with no backstock locations 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | insert | Add default 'Default On-Site' location for stores with no backstock locations 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | insert | Add default 'Default On-Site' location for stores with no backstock locations 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | insert | Add default 'Default On-Site' location for stores with no backstock locations 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | insert | Add default 'Custom Tag' category for stores with no custom tags 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | insert | Add default 'Custom Tag' category for stores with no custom tags 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | insert | Add default 'Custom Tag' category for stores with no custom tags 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | insert | Add default empty bin in on-site location for stores with no bins 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | insert | Add default empty bin in on-site location for stores with no bins 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | insert | Add default empty bin in on-site location for stores with no bins 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | insert | Add default empty bin in on-site location for stores with no bins 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen zipcode column in customers from VARCHAR(5) to VARCHAR(10) to support ZIP+4 and international postal codes 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Widen phone column in stores from VARCHAR(10) to VARCHAR(20) to support formatted phone numbers 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_users | create_table | Create oauthStateTokens table for OAuth CSRF state storage (replaces session-based storage) 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix collation mismatch on fpSocketAssignments.subcategoryCode — change from utf8mb4_unicode_ci to utf8mb4_general_ci to match kiosk_sales.subcategories.id 2026-02-16 20:56:49 - INFO --> Skipped 273 migration(s) - already applied 2026-02-16 20:56:49 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-16 21:14:08 - INFO --> CSS build complete: 327.35 KB, hash: 405ae2a8 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add offset account columns to qb_account_mapping for double-entry balancing 2026-02-16 22:12:02 - INFO --> Skipped 285 migration(s) - already applied 2026-02-16 22:12:02 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add lastBuyDate column to stores table to track when each store last had a buy in their queue 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create drsDailySFileData table for DRS daily close S-File data 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | create_table | Create drsDailySFileData table for DRS daily close S-File data 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register SlideExpirationJob for daily removal of expired digital sign slides 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Make fpAuditLog.entityId nullable for batch operations 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add rack_type to fpAuditLog entityType ENUM 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add typeNum column to staff_chat_attachments for store scoping 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add typeNum column to staff_chat_attachments for store scoping 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add typeNum column to staff_chat_attachments for store scoping 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add channelId column to staff_chat_attachments for ownership validation 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add channelId column to staff_chat_attachments for ownership validation 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add channelId column to staff_chat_attachments for ownership validation 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add uploadedByUserId column to staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add uploadedByUserId column to staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add uploadedByUserId column to staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on channelId for staff_chat_attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create storesAiPrefs table for per-store AI scheduling preferences (Spec 026) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add index on timeEntered for buyQueue date-range lookups 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add composite index on isProcessed and timeCompleted for buyQueue count queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | add_index | Add composite index on isProcessed and timeStarted for buyQueue active queue queries 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isLegacyEmployeeId flag to buyQueue for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isLegacyEmployeeId flag to deletedBuys for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isLegacyEmployeeId flag to statsEmployeeDaily for records that could not be migrated to global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen statsEmployeeDaily employeeID from TINYINT to INT to support global user IDs 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add deterministic solver columns to aiScheduleSuggestions table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add solverType to aiScheduleJobs table (Spec 038 Phase 1 Track A) 2026-02-18 21:44:23 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create storeMigrationLog table to track store number migrations 2026-02-18 21:44:23 - INFO --> Skipped 290 migration(s) - already applied 2026-02-18 21:44:23 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-18 21:44:23 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add private access level to staff_chat_channels for user-level channel access control 2026-02-19 11:46:25 - INFO --> Skipped 301 migration(s) - already applied 2026-02-19 11:46:25 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-19 11:46:25 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-19 11:58:14 - INFO --> Skipped 302 migration(s) - already applied 2026-02-19 11:58:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-19 11:58:14 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_se00 | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add lastSolverType column to storesAiPrefs for solver type persistence (Spec 038) 2026-02-19 11:59:04 - INFO --> Skipped 301 migration(s) - already applied 2026-02-19 11:59:04 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-19 11:59:04 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-19 12:09:19 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add solver-schedule-generation job definition to TaskEngine (Spec 038) 2026-02-19 12:09:19 - INFO --> Skipped 302 migration(s) - already applied 2026-02-19 12:09:19 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-19 12:09:19 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_se00 | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create employeeSchedulePositions junction table for multi-position assignment 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_se00 | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed Cashier position into schedulePositions if not present 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pc00 | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_ou00 | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_se00 | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_pa00 | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_pc | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_ou | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> SUCCESS: kiosk_demo_se | insert | Default all active employees to Cashier position 2026-02-19 17:37:08 - INFO --> Skipped 303 migration(s) - already applied 2026-02-19 17:37:08 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-19 17:37:08 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_users | raw_sql | Fix store login accounts to have accountType='system' instead of 'user' - prevents them appearing in Team Members list 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create workbook_task_position_assignments table for recurring position-based task assignments 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add qualifyingPositionId column to workbook_task_completions for position audit tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add outOfPositionLevel column to workbook_task_completions for OoP severity tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add outOfPositionReason column to workbook_task_completions for OoP reason text 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add assignedToUserId column to workbook_task_completions for assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add assignedToPositionIds column to workbook_task_completions for position assignment snapshot 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add shiftId column to workbook_task_completions for shift-linked completion tracking 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on outOfPositionLevel and date for OoP report queries 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on shiftId for shift-linked completion lookups 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_se00 | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create workbook_task_day_overrides table for per-day task assignment overrides 2026-02-20 10:56:01 - INFO --> Skipped 304 migration(s) - already applied 2026-02-20 10:56:01 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-20 10:56:01 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-24 16:06:06 - INFO --> SUCCESS: kiosk_users | insert | Add workbook_manage_tasks permission for Manager (7), Shift Lead (8), Site Admin (2), and Owner (9) groups to enable task assignment management in Feature 039 2026-02-24 16:06:06 - INFO --> Skipped 308 migration(s) - already applied 2026-02-24 16:06:06 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-24 16:06:06 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create systemAlerts table for platform-wide admin broadcast messages 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create systemAlertStoreTargets table for store-specific alert targeting 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create systemAlertAcknowledgments table for tracking per-user alert dismissals 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_users | create_table | Create userRememberMe table for persistent login tokens 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Make staff_chat_attachments.messageId nullable for pre-upload attachment workflow 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Make staff_chat_attachments.messageId nullable for pre-upload attachment workflow 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Make staff_chat_attachments.messageId nullable for pre-upload attachment workflow 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_users | raw_sql | Remove duplicate emails keeping the newest user record (highest id) 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_users | alter_table | Add unique constraint on email column in users table 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_users | alter_table | Add appId column to userDeviceTokens for multi-project FCM routing 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_sales | raw_sql | Change sales unique key from code-only to code+typeNum composite to allow same item code across stores 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_sales | add_index | Add composite index on sales (typeNum, salesDate) for heatmap and velocity queries 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_sales | add_index | Add composite index on sales (typeNum, buyDate) for buy-date range queries 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_sales | add_index | Add composite index on buys (typeNum, buyDate) for incremental copy and date range queries 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add overrideByEmployeeId column to workbook_punch_log for manager override tracking 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create workbook_punch_log table for time punch tracking 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create quoteRequests table for storing price quote form submissions 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create quotePricing table for admin-configurable price quote items 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed quotePricing with default items (prices at 0 — admin fills in real prices) 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add unpaidBreakHours column to scheduleTimesheets for tracking unpaid break time separately from worked hours 2026-02-27 12:44:00 - INFO --> Skipped 310 migration(s) - already applied 2026-02-27 12:44:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-27 12:44:00 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-27 12:44:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_pa00.workbook_punch_log' doesn't exist [file: 20260225_001_punch_log_override_columns] 2026-02-27 12:49:04 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Change systemAlerts.createdBy and updatedBy to unsigned int to match users.id type 2026-02-27 12:49:04 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Change systemAlertAcknowledgments.userId to unsigned int and drop redundant idx_alert_user index 2026-02-27 12:49:04 - INFO --> Skipped 321 migration(s) - already applied 2026-02-27 12:49:04 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-27 12:49:04 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-27 12:52:45 - INFO --> CSS build complete: 334.06 KB, hash: 14c84036 2026-02-27 12:54:24 - INFO --> CSS build complete: 334.91 KB, hash: 4a3eff40 2026-02-27 14:27:34 - INFO --> CSS build complete: 334.91 KB, hash: 4a3eff40 2026-02-27 14:40:21 - INFO --> CSS build complete: 334.91 KB, hash: 4a3eff40 2026-02-27 15:00:17 - INFO --> CSS build complete: 342.94 KB, hash: de5f4b9d 2026-02-27 15:17:33 - INFO --> CSS build complete: 342.94 KB, hash: de5f4b9d 2026-02-27 15:35:58 - INFO --> Skipped 322 migration(s) - already applied 2026-02-27 15:35:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-02-27 15:35:58 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-02-27 15:54:36 - INFO --> CSS build complete: 342.94 KB, hash: de5f4b9d 2026-02-28 13:37:48 - INFO --> CSS build complete: 342.94 KB, hash: de5f4b9d 2026-03-27 13:42:11 - ERROR --> CSS bundle exceeds size limit: 519.54 KB > 500 KB 2026-03-27 13:56:09 - INFO --> CSS build complete: 345.08 KB, hash: f6d9ac5d 2026-03-27 15:18:51 - INFO --> CSS build complete: 346.9 KB, hash: fd5604ae 2026-03-27 15:53:58 - INFO --> CSS build complete: 347 KB, hash: 301e1f32 2026-03-27 16:08:24 - INFO --> CSS build complete: 348.08 KB, hash: d554bc6a 2026-03-27 16:49:37 - INFO --> CSS build complete: 348.08 KB, hash: d554bc6a 2026-03-27 17:34:02 - INFO --> CSS build complete: 347.32 KB, hash: 2d826020 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_users | alter_table | Add assignmentSource column to userStoreAssignments to track how each assignment was created (manual vs sync). This prevents WhenIWork sync from deactivating manually-created multi-store assignments. 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert customerSurvey.comments to utf8mb4 to support emoji characters 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_buys | alter_table | Widen systemBuys.phoneNum from VARCHAR(10) to VARCHAR(20) to support formatted and international phone numbers 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen customerRatings.employeeID from TINYINT to INT UNSIGNED to support global user IDs from kiosk_users.users 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_se00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_se00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create posDataGaps table for POS data gap tracking (spec 043) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add drsEarliestDataDate column to stores table for POS data boundary tracking (spec 043) 2026-04-01 15:01:39 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add POS Data Catchup job definition - daily at 3 AM per store (spec 043) 2026-04-01 15:01:39 - INFO --> Skipped 325 migration(s) - already applied 2026-04-01 15:01:39 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-01 15:01:39 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-01 15:01:39 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add detail column to bsActions for human-readable change context 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add batchId column to bsActions for bulk operation grouping 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add index on batchId column for batch grouping queries 2026-04-02 13:50:27 - INFO --> Skipped 334 migration(s) - already applied 2026-04-02 13:50:27 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-02 13:50:27 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-02 13:50:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add workbookBackstockEnabled feature flag column to stores table 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_users | alter_table | Widen regionCode from VARCHAR(3) to VARCHAR(10) to support codes like FLSA (Federal), and make ruleJson nullable for preset rules that have no custom JSON 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add containerDescriptions TEXT column to buyQueue table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add containerDescriptions TEXT column to deletedBuys table for optional basket/container descriptions from customer 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add buyPaidDigital column to drsDailySFileData for digital payment tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add buyPaidGiftCard column to drsDailySFileData for gift card buy payments 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add paidOutGiftCard column to drsDailySFileData for gift card paid out tracking 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Add UNIQUE index on date column to prevent future duplicate rows in closeSalesReport 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create posDataResyncs table to track stale data resync requests 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | update | Add resyncRules and resyncPersistentThresholdDays to pos-data-catchup job config for stale data detection (affected: 1 rows) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | update | Raise pos-data-catchup maxCommandsPerRun from 10 to 50 so the resync phase isn't starved when stores have large gap backlogs (affected: 1 rows) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add Intercom sync columns to support_articles for one-way push to Intercom Help Center 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Mapping from local support_categories to Intercom Help Center collections 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register statuspage-sync job definition (runs every minute) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Widen dailySalesData amount columns from double(6,2) to decimal(10,2). The old type capped at $9,999.99, silently truncating large transactions. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Add index on billingSmsUsage.providerMessageId — sms:cost-lookup and delivery status webhooks do WHERE providerMessageId = ? lookups without an index, triggering full table scans (~662K rows, ~20s each). Adding a non-unique index (4-5 duplicate providerMessageIds exist from webhook retries) makes these O(log N). 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | update | Change sfile_payment_columns_2026 resync rule from all_zero to all_null. all_zero re-flags rows where the POS legitimately reports 0 (e.g., stores that don't take digital/giftcard payments), causing infinite resync loops. all_null only flags rows where the field was actually missing from the payload. (affected: 1 rows) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Add index on customers.dateAdded for retention cohort aggregation. Without it, the cohort job runs full table scans of customers for each of 12 cohort months per store. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Delete posDataResyncs records created by the broken sfile_payment_columns_2026 'all_zero' rule. The check was logically wrong (it flagged rows where POS legitimately reports 0). The new 'all_null' rule will re-detect any rows that genuinely need a resync, on the next catchup run. 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Rollback: drop intercom_article_id, intercom_synced_at, intercom_sync_error, intercom_sync_hash columns from support_articles (switched to /fin-source scraping portal) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Rollback: drop support_intercom_collections mapping table (no longer needed, switched to /fin-source scraping portal) 2026-04-13 19:36:22 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register TrialExpirationJob in TaskEngine — job class existed since spec 035 but was never added to task_job_definitions, so cron never dispatched it and expired trials stayed flagged as 'trial' 2026-04-13 19:36:22 - INFO --> Skipped 336 migration(s) - already applied 2026-04-13 19:36:22 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-13 19:36:22 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-13 19:36:22 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-13 20:18:02 - INFO --> CSS build complete: 356.18 KB, hash: a55ae177 2026-04-13 20:36:02 - INFO --> CSS build complete: 356.18 KB, hash: a55ae177 2026-04-13 21:17:11 - INFO --> CSS build complete: 356.18 KB, hash: a55ae177 2026-04-13 22:09:53 - INFO --> CSS build complete: 355.89 KB, hash: 111d048b 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_users | alter_table | Add isKeyholder boolean to userStoreAssignments for opener/closer eligibility 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Owner position color from blue to dark slate (hierarchy top) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update General Manager position color from blue to violet 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Store Manager position color from medium blue to blue-600 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Shift Lead position color from blue to orange 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Buyer position color from light blue to green 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Sales Associate position color from sky blue to cyan 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Update Cashier position color from green to red 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add minShiftLengthHours column to storesAiPrefs for minimum shift length enforcement in AI/math scheduling 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add requiresKeyholder flag to scheduleShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isOpener flag to scheduleShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isCloser flag to scheduleShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add recurrenceExceptions column for storing excluded dates in recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add requiresKeyholder flag to scheduleTemplateShifts 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isOpener flag to scheduleTemplateShifts for daily opener designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isCloser flag to scheduleTemplateShifts for daily closer designation 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register RecurringShiftExtensionJob in TaskEngine — maintains 4-week rolling horizon for recurring shift series 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_users | update | Backfill isKeyholder=1 for employees with role 1-3 (Owner/Manager/Shift Lead) (affected: 10 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_se00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-04-14 16:30:12 - INFO --> Skipped 353 migration(s) - already applied 2026-04-14 16:30:12 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-14 16:30:12 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-14 16:30:12 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-14 18:24:12 - INFO --> CSS build complete: 356.96 KB, hash: 2dabf88d 2026-04-21 8:13:55 - INFO --> CSS build complete: 356.96 KB, hash: 2dabf88d 2026-04-21 8:25:36 - INFO --> CSS build complete: 357.04 KB, hash: c221b43a 2026-04-21 8:28:25 - INFO --> CSS build complete: 356.98 KB, hash: 40e0df3e 2026-04-21 8:29:33 - INFO --> CSS build complete: 357.04 KB, hash: c221b43a 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add timeOffMinLeadDays column to stores - minimum advance notice required for time-off requests 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add timeOffMaxFutureDays column to stores - maximum days ahead a time-off request can be made 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Fix regression from 20260414_002: flip timeOffMaxFutureDays default from 365 to 0 (unlimited). Previous default silently capped every existing store at 1 year, blocking otherwise-valid long-future requests. 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Reset existing stores still at the old 365 default back to 0 (unlimited). Safe because the time-off rules UI was introduced in the same batch and no admin has had the chance to intentionally set 365 yet. 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_users | alter_table | Add isExempt flag to users — salaried / overtime-exempt employees. Overtime calculations short-circuit for exempt users so reports don't accumulate bogus OT for managers and other salaried staff. 2026-04-21 9:31:13 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Compliance audit log for inbound SMS opt-out/opt-in events (STOP, START, HELP). Central, append-only record used to prove TCPA/CTIA consent state on demand. 2026-04-21 9:31:13 - INFO --> Skipped 366 migration(s) - already applied 2026-04-21 9:31:13 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-21 9:31:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-21 9:32:59 - INFO --> Skipped 370 migration(s) - already applied 2026-04-21 9:32:59 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-21 9:32:59 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-21 9:34:50 - INFO --> Skipped 370 migration(s) - already applied 2026-04-21 9:34:50 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-21 9:34:50 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-21 10:39:51 - INFO --> CSS build complete: 368.15 KB, hash: 3c02931c 2026-04-22 8:33:15 - INFO --> CSS build complete: 368.4 KB, hash: bbdd550c 2026-04-22 8:54:38 - INFO --> CSS build complete: 369.32 KB, hash: e88270f1 2026-04-22 13:05:18 - INFO --> Skipped 375 migration(s) - already applied 2026-04-22 13:05:18 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-22 13:05:18 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-22 13:05:23 - INFO --> Skipped 375 migration(s) - already applied 2026-04-22 13:05:23 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-22 13:05:23 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-22 13:06:53 - INFO --> Skipped 375 migration(s) - already applied 2026-04-22 13:06:53 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-22 13:06:53 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-04-22 13:08:34 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-04-22 13:08:34 - INFO --> Skipped 368 migration(s) - already applied 2026-04-22 13:08:34 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-22 13:08:34 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-22 13:08:34 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-22 13:08:58 - INFO --> Skipped 375 migration(s) - already applied 2026-04-22 13:08:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-04-22 13:08:58 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-04-22 13:08:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-04-22 14:50:05 - INFO --> CSS build complete: 370.82 KB, hash: 42e34bd2 2026-04-22 15:01:48 - INFO --> CSS build complete: 371.42 KB, hash: 6f08bc71 2026-04-22 15:11:38 - INFO --> CSS build complete: 371.48 KB, hash: 77d812ac 2026-04-23 13:04:44 - INFO --> CSS build complete: 371.49 KB, hash: 1a1634c3 2026-04-24 13:16:10 - INFO --> CSS build complete: 372.5 KB, hash: 6c48b739 2026-04-27 15:39:18 - INFO --> CSS build complete: 372.5 KB, hash: 6c48b739 2026-04-27 16:59:38 - INFO --> CSS build complete: 374.47 KB, hash: 7a56da84 2026-05-05 9:46:27 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add qbSyncMode column to central stores table for QuickBooks V2 2026-05-05 9:46:27 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add notifySms flag to task_job_definitions for per-job SMS opt-in alerting on permanent failure 2026-05-05 9:46:27 - INFO --> SUCCESS: kiosk_buykiosk | update | Enable SMS alerting for critical revenue/communication/billing jobs whose silent failure would cause real harm (affected: 6 rows) 2026-05-05 9:46:27 - INFO --> Skipped 379 migration(s) - already applied 2026-05-05 9:46:27 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-05 9:46:27 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-05 9:46:34 - INFO --> Skipped 381 migration(s) - already applied 2026-05-05 9:46:34 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-05 9:46:34 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-05 9:46:40 - INFO --> Skipped 381 migration(s) - already applied 2026-05-05 9:46:40 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-05 9:46:40 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-05 18:21:44 - INFO --> CSS build complete: 381.08 KB, hash: c78be93f 2026-05-05 19:32:32 - INFO --> CSS build complete: 382.87 KB, hash: 6fd0ffc7 2026-05-06 11:16:59 - INFO --> CSS build complete: 382.87 KB, hash: 6fd0ffc7 2026-05-06 11:36:09 - INFO --> CSS build complete: 384.18 KB, hash: a0597b3d 2026-05-06 11:44:20 - INFO --> CSS build complete: 384.18 KB, hash: a0597b3d 2026-05-06 15:16:37 - INFO --> CSS build complete: 384.43 KB, hash: 67164772 2026-05-06 18:01:11 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:01:11 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:01:11 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:01:16 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:01:16 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:01:16 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:01:19 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:01:19 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:01:19 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:02:43 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:02:43 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:02:43 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:02:55 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:02:55 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:02:55 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:03:24 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:03:24 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:03:24 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:03:28 - INFO --> Fresh mode: Cleared 10348 migration log entries 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create seller marketing global message queue table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add 'test' provider option to seller_marketing_queue table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add 'processing' status option to seller_marketing_queue table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Fix store_id column to reference typeNum instead of numeric ID 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add delivery status tracking fields to seller_marketing_queue table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Fix emoji support in inboundSMSLog table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ccSyncLog table to track individual contact syncs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ccSyncDaily table for daily aggregated stats 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ccLostEmails table for failed syncs requiring manual review 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add updated_at column to loyaltyDoNotTextList for change tracking 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed task engine job definitions for concrete jobs (T9) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add mock data generator job definition for test stores (ou00, pc00, se00) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Create demo store record for Plato's Closet 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Create demo store record for Once Upon A Child 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Create demo store record for Style Encore 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add analytics aggregation jobs for 022-admin-reporting-refresh 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Insert TaskEngine job definition for close report notifications 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Insert TaskEngine job definition for close report historical migration 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add aiScheduleOwnerPrefs column to stores table for owner toggle preferences (Spec 026 ADR-5) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add aiScheduleDefaultPrefs column to stores table for saved optimization defaults (Spec 026) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Seed initial fallback values for homepage_stats (spec 029) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register HomepageStatsJob in task_job_definitions (spec 029) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Drop seller_marketing_queue table from central database - text marketing removal (spec 028) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Drop legacy FK constraint on subcategories.catID BEFORE changing categories PK (app-level validation per ADR-4) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change brands.id from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change buys ID columns from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change categories.id from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change subcategories.id from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change subcategories.catID from INT to VARCHAR(20) for alphanumeric category references 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change sizes.id from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Change departments.id from INT to VARCHAR(20) for alphanumeric IDs 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Add optional description field to categories table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_sales | alter_table | Add optional description field to subcategories table 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_users | alter_table | Drop incorrect FK on userStoreAssignments that references uf_user instead of users 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_users | alter_table | Add correct FK on userStoreAssignments referencing users table instead of uf_user 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Make totalRevenue nullable in storeMetricsDaily so stores without POS data get NULL instead of 0 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | update | Set totalRevenue to NULL where it is 0 but store has buys (indicates missing POS data, not actual $0) (affected: 0 rows) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_users | raw_sql | Remove duplicate emails keeping the newest user record (highest id) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add Intercom sync columns to support_articles for one-way push to Intercom Help Center 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Mapping from local support_categories to Intercom Help Center collections 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register statuspage-sync job definition (runs every minute) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Delete posDataResyncs records created by the broken sfile_payment_columns_2026 'all_zero' rule. The check was logically wrong (it flagged rows where POS legitimately reports 0). The new 'all_null' rule will re-detect any rows that genuinely need a resync, on the next catchup run. 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Rollback: drop intercom_article_id, intercom_synced_at, intercom_sync_error, intercom_sync_hash columns from support_articles (switched to /fin-source scraping portal) 2026-05-06 18:03:30 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Rollback: drop support_intercom_collections mapping table (no longer needed, switched to /fin-source scraping portal) 2026-05-06 18:03:30 - INFO --> Skipped 354 migration(s) - already applied 2026-05-06 18:03:30 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-06 18:03:30 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:03:30 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:03:34 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:03:34 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-06 18:03:34 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:03:34 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-06 18:03:36 - INFO --> Skipped 382 migration(s) - already applied 2026-05-06 18:03:36 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-06 18:03:36 - ERROR --> ERROR: kiosk_buykiosk | sql | Unknown operation type in 20260217_003_quickbooks_sync_daily_schedule 2026-05-06 18:03:36 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Spec 049 T1.2.2: Create breakPolicyPreset table in shared kiosk_buykiosk DB (BK-maintained preset library) 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Spec 049 T1.2.2: Create breakPolicyPresetRule table in shared kiosk_buykiosk DB (preset rule definitions, FK to breakPolicyPreset) 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Spec 049 T1.2.4: Add breakPolicyEnabled feature-flag column to stores table (off by default; ADR-3 per-store rollout gate) 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Update QuickBooks sync job to run daily at 2am instead of every 4 hours 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create buyQueueDisplayConfig table for per-store digital sign buy queue text-size customization 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Flip embeddedChatEnabled default from 0 to 1 — workbook embedded chat is now on by default for every store; the legacy DataTable view is being retired and new stores should land on the Syncfusion grid + chat experience automatically. 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Backfill: enable embedded chat on every store still sitting at the original default of 0. As of 2026-05-06 this was 9 active stores, all pre-launch (no buys recorded yet). Stores already at 1 are unaffected. 2026-05-12 9:31:49 - INFO --> SUCCESS: kiosk_users | insert | Add uri_cash permission to Manager (7) and Owner (9) groups so franchise managers/owners can access the Cash sidebar section 2026-05-12 9:31:49 - INFO --> Skipped 388 migration(s) - already applied 2026-05-12 9:31:49 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-12 9:31:49 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-12 9:31:49 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:31:49 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:31:49 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-12 9:33:21 - INFO --> Skipped 394 migration(s) - already applied 2026-05-12 9:33:21 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-12 9:33:21 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-12 9:33:21 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:33:21 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:33:21 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for FLSA-default (US Federal baseline) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for FLSA-default (1 rule: flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for CA-2025 (California 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for CA-2025 (4 rules: rest, meal, secondMeal, flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for NY-2025 (New York 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for NY-2025 (3 rules: meal x2, flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for OR-2025 (Oregon 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for OR-2025 (3 rules: rest, meal, flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for WA-2025 (Washington 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for WA-2025 (3 rules: rest, meal, flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for CO-2025 (Colorado 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for CO-2025 (3 rules: rest, meal, flsaCutoff) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | insert | Spec 049 T1.3: Seed breakPolicyPreset row for IL-2025 (Illinois 2025) 2026-05-12 9:42:11 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 T1.3: Seed breakPolicyPresetRule rows for IL-2025 (2 rules: meal, flsaCutoff) 2026-05-12 9:42:11 - INFO --> Skipped 394 migration(s) - already applied 2026-05-12 9:42:11 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-12 9:42:11 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-12 9:42:11 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:42:11 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-12 9:42:11 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-12 10:35:35 - INFO --> CSS build complete: 387.87 KB, hash: de0e6954 2026-05-12 10:39:54 - INFO --> CSS build complete: 387.87 KB, hash: de0e6954 2026-05-12 11:25:51 - INFO --> CSS build complete: 389.73 KB, hash: c22a68e4 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-3 fix: Add minOccurrences INT column to breakPolicyPresetRule (shared DB). Default=1 preserves existing behaviour. CA rest rule needs 2 (IWC: one per 4h or major fraction). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-5 fix: Add triggerShiftMinHoursInclusive BOOLEAN column to breakPolicyPresetRule (shared DB). Default=1 (inclusive >=) preserves existing behaviour. Set to 0 for states using 'more than X hours' (exclusive >). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-3: Update CA-2025 rest rule to minOccurrences=2 (IWC: one 10-min rest per 4 hours or major fraction — an 8h shift requires two rests). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-5: Set triggerShiftMinHoursInclusive=0 (exclusive) for CA-2025 meal and secondMeal rules (Lab Code §512: 'more than five/ten hours'). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-5: Set triggerShiftMinHoursInclusive=0 (exclusive) for WA-2025 meal rule (RCW 49.12: 'more than five hours'). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-5: Set triggerShiftMinHoursInclusive=0 (exclusive) for CO-2025 meal rule (7 CCR 1103-1: 'more than five consecutive hours'). 2026-05-14 11:37:49 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Spec 049 Issue-5: Set triggerShiftMinHoursInclusive=0 (exclusive) for OR-2025 meal rule (ORS 653.261: 'more than six hours'). 2026-05-14 11:37:49 - INFO --> Skipped 403 migration(s) - already applied 2026-05-14 11:37:49 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 11:37:49 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 11:37:49 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 11:37:49 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 11:37:49 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:22:41 - INFO --> SUCCESS: kiosk_buykiosk | update | Backfill stores.waitTimeIntervalLower/Upper from legacy estimateInterval so the customer-facing wait-time range returns to its pre-refactor width (e.g. 25-35 min instead of 20-40 min). Authorized fleet-wide by user 2026-05-08. (affected: 10 rows) 2026-05-14 13:22:41 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Lower default for stores.waitTimeIntervalLower from 10 to 5 so newly created stores match legacy behavior 2026-05-14 13:22:41 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Lower default for stores.waitTimeIntervalUpper from 10 to 5 so newly created stores match legacy behavior 2026-05-14 13:22:41 - INFO --> SUCCESS: kiosk_buykiosk | add_index | Add (status, completed_at) index on task_executions so dashboard throughput counts (countCompletedSince/countFailedSince/getAverageDurationSince) stop full-scanning the 6M-row table 2026-05-14 13:22:41 - INFO --> SUCCESS: kiosk_buykiosk | add_index | Add (queued_at) index on task_executions so countQueuedSince and any ORDER BY queued_at stop full-index-scanning the 6M-row table 2026-05-14 13:22:41 - INFO --> Skipped 392 migration(s) - already applied 2026-05-14 13:22:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:22:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:22:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:22:41 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:22:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:22:45 - INFO --> Skipped 394 migration(s) - already applied 2026-05-14 13:22:45 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:22:45 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:22:45 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:22:45 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:22:45 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:23:13 - INFO --> Skipped 394 migration(s) - already applied 2026-05-14 13:23:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:23:13 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:23:13 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:23:13 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:23:13 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:25:28 - INFO --> SUCCESS: kiosk_users | alter_table | Add dateOfBirth to users — supports birthday soft-touch indicators on the team members page (birthday badges, upcoming-birthday surfacing). 2026-05-14 13:25:28 - INFO --> Skipped 393 migration(s) - already applied 2026-05-14 13:25:28 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:25:28 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:25:28 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:25:28 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:25:28 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:26:23 - INFO --> Skipped 395 migration(s) - already applied 2026-05-14 13:26:23 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:26:23 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:26:23 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:26:23 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:26:23 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:27:21 - INFO --> Skipped 394 migration(s) - already applied 2026-05-14 13:27:21 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:27:21 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:27:21 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:27:21 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:27:21 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-14 13:27:36 - INFO --> Skipped 394 migration(s) - already applied 2026-05-14 13:27:36 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-14 13:27:36 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-14 13:27:36 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:27:36 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-14 13:27:36 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 12:18:25 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create qb_mapping_learning: anonymized aggregate of which generic account names stores commonly map each POS field to. Used to suggest sensible defaults during auto-map. 2026-05-19 12:18:25 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create qb_mapping_learning_contributions: one row per store per field, enforces one-vote-per-store and lets us decrement the old aggregate row when a store changes its mapping. 2026-05-19 12:18:25 - INFO --> Skipped 401 migration(s) - already applied 2026-05-19 12:18:25 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-19 12:18:25 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-19 12:18:25 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 12:18:25 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 12:18:25 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 16:01:32 - INFO --> CSS build complete: 438.03 KB, hash: 73130b11 2026-05-19 16:08:14 - INFO --> CSS build complete: 438.12 KB, hash: 1c16961a 2026-05-19 16:12:03 - INFO --> CSS build complete: 438.37 KB, hash: 4f934775 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create bsCategoryGroups table for grouping DRS subcategories into named bundles 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create bsCategoryGroupMembers table linking groups to DRS subcategory codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create bsCategoryVisibility table for per-store DRS category show/hide settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create bsCategoryShortNames table for DRS category short name overrides 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add shortName column to bsCategories for custom category short names in reports 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create qb_staged_entries table for QuickBooks V2 approval workflow 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create qb_audit_log table for append-only QuickBooks operation tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create qb_store_settings table for per-store QuickBooks configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default QuickBooks settings for qb_store_settings 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add stagedEntryId column to qb_sync_log for V2 workflow linking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add payloadHash column to qb_sync_log for change detection 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add docNumber column to qb_sync_log for BK- format document numbers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Fix entryType for newReturns and usedReturns mappings to align with buildJournalLines sign-flip semantics — Spec 048 reconciliation imbalance fix. Returns arrive negative from S-file (e.g. newReturns=-3.99); JournalEntryService::buildJournalLines() flips negative-valued debit-mapped fields to credits, which produces the wrong direction for contra-revenue accounts. Setting entryType=credit causes the sign-flip to correctly produce DEBIT entries posted to Returns accounts. Idempotent: only updates rows that still have the buggy debit mapping. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop UNIQUE KEY uk_sync_date on qb_staged_entries and replace with non-unique idx_sync_date — Spec 048 Phase 1.3 — allow multiple rows per syncDate so rejected entries can be re-staged while preserving the rejected row as an audit record. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add 'sync_restaged' to qb_audit_log.eventType ENUM — Spec 048 Phase 1.3 — emitted when a rejected staged entry is re-staged so the audit trail explicitly shows priorEntryId supersession. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add autoBalancePreviewAccount column to qb_staged_entries — Spec 048 Phase 1 balance transparency. Stores the QBO account id of the prospective auto-balance plug, computed at stage time. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add autoBalancePreviewAccountName column to qb_staged_entries — denormalized for UI display. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add autoBalancePreviewAmount column to qb_staged_entries — signed: positive = need DEBIT plug, negative = need CREDIT plug. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Seed cashOverShortAutoCap setting (default $10) — imbalances at or below this threshold auto-plug silently to Cash Over/Short on approve. Idempotent via INSERT IGNORE on the unique settingKey. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Seed cashOverShortHardCap setting (default $100) — imbalances above this threshold block approve and require mapping config review. Mid-tier (between auto and hard caps) requires explicit user confirmation in the approve modal. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add signSemantics column to qb_account_mapping — Spec 048 Phase 2. Replaces the implicit sign-flip convention in JournalEntryService::buildJournalLines with explicit per-field semantics. 'directional' = sign of source value flips entryType (used for cashOverShort and similar fields where sign carries meaning). 'absolute' = always use entryType as-is, ignore sign of source value (used for fields like newReturns/usedReturns where negative is just a labeling convention). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill signSemantics='absolute' and flip entryType='credit'->'debit' for newReturns/usedReturns fields — Spec 048 Phase 2 migration 048_006 self-documenting fix. Mathematically equivalent (these fields have always posted as DEBITs to contra-revenue via the implicit sign-flip on negative source values), but the mapping now reads as 'this is a DEBIT to Returns' instead of 'this is a CREDIT but actually flips to DEBIT because of negative input'. Idempotent: only updates rows still in the legacy state. (affected: 2 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Modify driversLicense column in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Modify address fields in customers table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_task_lists table for task list configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_task_lists table for task list configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_task_lists table for task list configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_task_lists table for task list configuration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_task_assignments table for task employee assignments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_task_assignments table for task employee assignments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_task_assignments table for task employee assignments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_task_assignments table for task employee assignments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_task_completions table for daily task tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_task_completions table for daily task tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_task_completions table for daily task tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_task_completions table for daily task tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_task_comments table for task comments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_task_comments table for task comments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_task_comments table for task comments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_task_comments table for task comments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add email column to employees table for contact information 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add phone column to employees table for contact information 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add photoUrl column to employees table for profile photos 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add emergencyContactName column to employees table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add emergencyContactPhone column to employees table 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add hireDate column to employees table for employment lifecycle tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add terminationDate column to employees table for employment lifecycle tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add leaveStartDate column to employees table for leave tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add leaveEndDate column to employees table for leave tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add source column to employees table for tracking provider origin 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add externalId column to employees table for WhenIWork/Homebase user ID 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add drsEmployeeId column to employees table for DRS system integration 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add dailyEmailEnabled column to employees table for email preferences 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add hourlyRate column to employees table for pay rate tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add lastSyncedAt column to employees table for sync tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add createdAt column to employees table for record tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add updatedAt column to employees table for record tracking 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on source column for filtering by provider 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on externalId column for provider sync lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on active column for filtering active employees 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on email column for lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add hasUserAccount column to employees table to track linked uf_user accounts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add displayName column to employees table for preferred display name 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add index on employee name columns for auto-linking lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_notes table for notes/announcements system 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_notes table for notes/announcements system 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_notes table for notes/announcements system 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_notes table for notes/announcements system 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_note_reactions table for note likes/reactions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_note_reactions table for note likes/reactions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_note_reactions table for note likes/reactions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_note_reactions table for note likes/reactions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_note_comments table for comments on notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_note_comments table for comments on notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_note_comments table for comments on notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_note_comments table for comments on notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_whiteboard_canvas table for daily canvas state storage 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_whiteboard_items table for overlay items like sticky notes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_whiteboard_history table for audit log of whiteboard actions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Make employeeId nullable in daybook_whiteboard_items (sticky notes can be anonymous) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_schedule_cache table for storing employee schedule data from external providers 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed daybook_task_lists from existing taskGroups (if not already seeded) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create daybook_list_schedule table for per-day start times 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create daybook_list_schedule table for per-day start times 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create daybook_list_schedule table for per-day start times 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create daybook_list_schedule table for per-day start times 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed default schedules for existing daybook_task_lists (OPENING at 8am, CLOSING at 17:00) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add clockPin column to employees table for time clock PIN verification 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add clockPinHash column for secure PIN storage (optional upgrade path) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create QuickBooks account mapping table for each store 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default transactional chat templates for Two-Way SMS Chat 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Seed default position mappings for common WhenIWork positions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Seed bsCategories with floor plan categories (insert missing only, Plato's Closet stores only) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create fpMoveTasks table - generated atomic tasks for layout transitions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing floor plans based on gridSize (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing medium floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Set default dimensions for existing large floor plans (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Set standard gondola dimensions (4ft x 2ft) (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix fullPayload column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix salesSummary column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix buysData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix returnsData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix laborData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix cashData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix checklistData column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Fix comparisons column type from LONGTEXT to JSON (Codex review) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_channel_members before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_channel_members 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_read_receipts before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_read_receipts 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop FK on staff_chat_mentions before modifying index 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add FK on staff_chat_mentions 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | add_index | Add index on mobileSigninSessionId for quick lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | add_index | Add index on mobileSigninSessionId for quick lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | add_index | Add index on mobileSigninSessionId for quick lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | add_index | Add index on mobileSigninSessionId for quick lookups 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Migrate scheduleAvailability.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Migrate scheduleAvailabilityExceptions.employeeId from old employee IDs to central user IDs via user_employee_links 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert shiftStart and shiftEnd from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert publishedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert claimedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Convert aiAssignedAt from America/Chicago to UTC 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Data migration: Ensure all existing bsBin_Cat entries are marked as 'custom' type (they predate POS integration). New column has DEFAULT 'custom' but we ensure consistency. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Data migration: Copy ALL existing mainCategory values from bsBins to bsBin_Cat as custom tags. Since POS integration doesn't exist yet, all existing mainCategory values are custom categories. Skip if tag already exists for the bin. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Data migration: Clear ALL mainCategory values from bsBins (they've been migrated to bsBin_Cat as custom tags). This prepares the column for POS-only usage going forward. (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Seed default replenishment settings in fpSettings table. Uses INSERT IGNORE for idempotency - will add any missing keys without affecting existing values. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill fpRacks.name from diagram JSON annotations[0].content - syncs custom rack names that were only saved in diagramData (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Backfill typeNum and channelId from staff_chat_messages for existing attachments 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Default all active employees to Cashier position 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Default all active employees to Cashier position 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Default all active employees to Cashier position 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Default all active employees to Cashier position 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Default all active employees to Cashier position 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Drop foreign key on staff_chat_attachments.messageId to allow nullable 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Re-add foreign key on staff_chat_attachments.messageId with ON DELETE CASCADE 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Fix chat_templates typeNum - replace literal placeholder with actual store typeNum 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Change bsBins.mainCategory from INT to VARCHAR(20) to support POS subcategory string codes (e.g. WFOU, WBOU) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Change bsBin_Cat.catID from INT to VARCHAR(20) to support POS subcategory string codes 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Remove rows with NULL dates from closeSalesReport (garbage data from early 2019 before date was reliably populated) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | raw_sql | Remove duplicate rows from closeSalesReport keeping only the best row per date (highest grossSalesRetail, then highest id as tiebreaker). This fixes a historical duplication bug where SalesReport::insert() was called once per email recipient. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill requiresKeyholder=1 for shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill requiresKeyholder=1 for template shifts with minRoleId <= 3 (affected: 0 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | create_table | Create scheduleTimeOffBlackouts table for admin-configured date ranges where employees cannot request time off 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add surveySent flag to buyQueue so post-buy survey SMS is only ever sent once per buy (prevents duplicate survey floods). 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Make scheduleTimesheets.totalPay nullable to represent unknown pay (no wage rate configured) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.scheduledTotalHours to DECIMAL(8,4) for sub-15-min payroll precision 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.scheduledRegularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.scheduledOvertimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.scheduledDoubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.totalHours to DECIMAL(8,4) — second-precision payroll hours 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.regularHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.overtimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.doubletimeHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Widen scheduleTimesheets.unpaidBreakHours to DECIMAL(8,4) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | update | Fix entryType for cashOverShort mapping to align with buildJournalLines sign-flip semantics. The 20251203_004 default-mappings seed inserted cashOverShort with entryType='debit', but the JournalEntryService sign-flip semantics (codified in JournalEntrySignFlipTest::cashOverShort_PositiveValue_PostsBaseDirection) require the BASE direction to be CREDIT so that a positive value (drawer over) posts as CREDIT (reduces expense) and a negative value (drawer short) flips to DEBIT (records expense). With the buggy debit base, positive overages incorrectly post as DEBIT and negative shortages flip to CREDIT — reversing the variance in QBO. Idempotent: only updates rows that still have the buggy debit mapping (preserves any store-level admin overrides that intentionally chose 'debit'). (affected: 1 rows) 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | insert | Backfill qb_account_mapping rows for the buy/gift-card payment fields added in 20260408_001 (buyPaidDigital, buyPaidGiftCard, paidOutGiftCard). Without these mapping rows, JournalEntryService::buildJournalLines() silently SKIPS unmapped fields (treated as 'no mapping configured'), so any non-zero amounts in these new columns never post to QBO and never surface in the mapping UI for an admin to configure. Idempotent via INSERT IGNORE on (typeNum, fieldName) unique key — preserves any store-level admin overrides that may already exist. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Extend qb_staged_entries.status ENUM to include the transient 'posting' state used by the postStagedEntry() race-condition guard. JournalEntryService::postStagedEntry now compare-and-swaps the row from pending_approval/approved → 'posting' BEFORE calling the QuickBooks Add API, so two concurrent approvers cannot both reach the external call and create duplicate journal entries in QBO. The 'posting' state lives only between the CAS claim and the QBO success/failure response — successful posts move to 'posted' and failed posts revert to 'pending_approval'. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Extend qb_sync_log.status ENUM to include the data-freshness states DataFreshnessHandler writes. The original ENUM ('pending','processing','success','failed','partial') was missing 'data_pending', 'data_missing', and 'resolved' — values that DataFreshnessHandler::createFreshnessRecord / updateFreshnessRecord / resolvePendingEntry have always written. Without strict_mode in MariaDB the writes silently truncate to '', and even with strict_mode they throw — both paths swallow the error in the defensive try/catch and freshness tracking goes dark. This ALTER aligns the schema with the code so the freshness lifecycle (data_pending → data_missing OR resolved) actually persists. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register ComebackCashEventAutoEndJob to auto-end ccEvents past their end_date so coupons stop issuing 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add isOptional flag to qb_account_mapping so admins can mark per-store which fields don't apply (e.g. a store that doesn't take offsite buys can mark buyPaidOffsite as N/A). Without this, MappingRepository::CRITICAL_CATEGORIES flagged every unmapped buys/sales/cogs/cash/other field as sync-blocking even when the store never logs values for them. isOptional=1 means: acknowledged unmapped, not a blocker. MappingRepository::getCompleteness() now excludes these from unmappedCritical. Idempotent via column-presence check. 2026-05-19 16:29:33 - INFO --> Skipped 347 migration(s) - already applied 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:33 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 16:29:40 - INFO --> Skipped 404 migration(s) - already applied 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:40 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 16:29:48 - INFO --> Skipped 404 migration(s) - already applied 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:48 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 16:29:52 - INFO --> Skipped 404 migration(s) - already applied 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-19 16:29:52 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-19 16:51:35 - INFO --> CSS build complete: 443.44 KB, hash: 5106f80a 2026-05-19 16:58:06 - INFO --> CSS build complete: 443.26 KB, hash: 0dedc18a 2026-05-21 11:23:41 - INFO --> CSS build complete: 445.57 KB, hash: bd00befb 2026-05-21 11:27:13 - INFO --> CSS build complete: 445.75 KB, hash: f2c76f85 2026-05-21 11:36:04 - INFO --> CSS build complete: 446.83 KB, hash: 38dc24d2 2026-05-21 11:39:02 - INFO --> CSS build complete: 447.6 KB, hash: 65b0beeb 2026-05-21 11:40:12 - INFO --> CSS build complete: 448 KB, hash: 1348cdd3 2026-05-21 11:43:08 - INFO --> CSS build complete: 448.47 KB, hash: b5cc9b54 2026-05-21 11:48:17 - INFO --> CSS build complete: 449.45 KB, hash: 5dadabda 2026-05-21 11:52:36 - INFO --> CSS build complete: 449.06 KB, hash: bd6cc096 2026-05-21 12:46:04 - INFO --> CSS build complete: 449.68 KB, hash: da9db06c 2026-05-21 12:59:54 - INFO --> CSS build complete: 450.06 KB, hash: 15322437 2026-05-21 13:10:40 - INFO --> CSS build complete: 450.66 KB, hash: 89970db5 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add checkoutStatus to buyQueue so we can distinguish paid-out checkouts from voided checkouts (POS no-buy where customer must return for unsold items). NULL until checkedOut=1; 'paid' = customer accepted offer and was paid out; 'voided' = no items accepted, still allow workbook resend-SMS. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 67855 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 218033 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 14365 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 70194 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 0 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 0 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | update | Backfill checkoutStatus='paid' for existing checked-out rows. Every prior checkout path meant paid; this preserves that semantics for historical data so the new workbook badge and resend-SMS gate work correctly on legacy rows. Idempotent: only touches rows where checkoutStatus is still NULL. (affected: 0 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | alter_table | Add posState to buyQueue so we can distinguish DRS-driven QUOTE transitions (POS Print Detail / Print Summary in non-Style-Encore stores) from kiosk-driven processBuy(). 'active' = still on the left side; 'quote' = moved to the right side because the POS quoted the customer. Independent from checkoutStatus so paid/voided can still progress cleanly from either origin. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollTenants table — one row per EIN; N stores share one tenant via stores.payrollTenantId. Includes webhookSecretEncrypted (per-tenant HMAC secret per CON-15), webhookPriorSecretEncrypted and webhookPriorSecretExpiresAt for rotation window (ADR-11). UNIQUE ein enforces 1 tenant per EIN (CON-17, PRD F6). isActive is the demo-ready gate. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add isNewStore flag to quoteRequests — captures whether the submitter is opening a brand-new store and needs initial open-to-buy / grand-opening planning 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add openToBuyBudget to quoteRequests — projected initial open-to-buy dollar budget for new stores 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add grandOpeningDate to quoteRequests — projected grand-opening date for new stores 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollRuns table — schema ships Phase 0; no service code exercises it until Phase 1b. FK to payrollTenants ON DELETE RESTRICT (per Codex fix). Status enum covers full lifecycle: draft/submitted/funded/paid/failed/cancelled. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollRunLines table — per-worker line per run. Schema ships Phase 0; no Phase 1a write path. FK to payrollRuns ON DELETE RESTRICT. lineSnapshotJson captures punches and rate-at-submit (defense layer). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollRunSnapshots table — defense layer preserving full source data at submission, approval, and paid moments. Phase 1b populates; Phase 0 ships table only. FK to payrollRuns ON DELETE RESTRICT. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | update | Deactivate Daredevil Red kiosk stand pricing row — Armodilo discontinued the color (follow-up: prior migration check_query was inverted and the op was skipped) (affected: 1 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | update | Relabel Dynamic Blue kiosk stand to indicate Special Order — Armodilo no longer stocks blue; available by special order only (affected: 1 rows) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollWebhookEvents table — idempotency table for Everee webhook ingestion. UNIQUE evereeEventId is the DB-level dedupe primitive (PRD F8 AC, CrossFeatureEdgeCase F8 concurrent-duplicate scenario). signatureHeader and timestampHeader retained for forensics. hmacValid=1 only if both signature and timestamp tolerance passed. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollAuditLog table — mirrors scheduleAuditLog shape (ICO-3). Single sink for tenant provisioning, rate changes, webhook outcomes, and placeholder future run/termination/punch-adjustment actions. actorType enum supports employee/manager/system actors. payrollTenantId denormalized for fast per-tenant queries. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payRateHistory table — append-only; no row is ever updated. isRetirementTombstone=1 only on rows written by retireRate(). Composite index supports getRate(asOfDate) tie-break by greatest (effectiveFrom, id). No FK on userId/positionId — cross-DB enforcement at application layer. FK to payrollTenants ON DELETE RESTRICT (IRS 4yr retention, CON-10). note is REQUIRED — PRD F7 Rule 6 rejects empty notes. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create payrollCoaMappings table — ships Phase 0; UI/CLI seam deferred to Phase 1c per PRD Won't-Have deviation note. Table exists so Phase 1c QBO JE generator has schema to consume immediately. positionId=NULL means tenant-default mapping. qboAccountName is cached display label. FK to payrollTenants ON DELETE CASCADE. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ptoAccrualPolicies table — ships Phase 0; accrual engine + request UI deferred to Phase 1c per PRD Won't-Have. accrualRate is DECIMAL(8,6) for sub-precision hours-per-hour-worked or lump-sum hours. FK to payrollTenants ON DELETE CASCADE. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ptoAccrualBalances table — per-user per-policy balance tracking. UNIQUE (userId, payrollTenantId, policyId) prevents duplicate balance rows. balanceHours is DECIMAL(8,2). FK to ptoAccrualPolicies ON DELETE RESTRICT and payrollTenants ON DELETE CASCADE. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | create_table | Create ptoRequests table — PTO/sick/personal time-off requests. payrollRunLineId FK populated when paid out via a run line (ON DELETE SET NULL). hours is DECIMAL(8,2). Depends on payrollRunLines existing (file 002 creates it). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | create_table | Create userPayrollProfiles table in kiosk_users — links BK users.id to Everee worker per tenant. A single BK user may have multiple rows when employed under multiple EINs (PRD person-centric model). UNIQUE (userId, payrollTenantId) enforces 1 profile per user+tenant pair. No DB-level FK to payrollTenants (cross-DB); cross-DB enforcement at application layer. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add legalFirstName to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. Updates from worker self-service flow through Everee, not BK. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add legalLastName to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. Updates from worker self-service flow through Everee, not BK. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add dob (date of birth) to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. SSN/bank/W-4/I-9 are NEVER stored in BK. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add addressLine1 to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. BK may receive webhook-driven updates as cached read-only mirror. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add addressLine2 to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. BK may receive webhook-driven updates as cached read-only mirror. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add city to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. BK may receive webhook-driven updates as cached read-only mirror. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add state to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. BK may receive webhook-driven updates as cached read-only mirror. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add zip to kiosk_users.users — ONBOARDING-KICKOFF prefill: BK collects once to seed Everee kick-off-onboarding call; Everee canonical thereafter. BK may receive webhook-driven updates as cached read-only mirror. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add phoneE164 to kiosk_users.users — BK CANONICAL: work-contact phone in E.164 format. BK is the source of truth; Everee receives copies as part of onboarding kickoff payload. (CON-18 PII source-of-truth label) 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_index | Add idx_dob index on kiosk_users.users.dob — supports age-related payroll queries and onboarding data validation lookups. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | add_column | Add payrollTenantId column to kiosk_buykiosk.stores — nullable FK to payrollTenants. Multiple stores may share one tenant (1:N relationship; EIN — not store — defines the Everee tenant, CON-17, PRD F6). Re-pointing a store from tenant A to B requires an audit-log entry via PayrollAuditService. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | add_index | Add idx_payroll_tenant index on kiosk_buykiosk.stores.payrollTenantId — supports lookups of all stores belonging to a tenant. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_buykiosk | add_constraint | Add FK constraint fk_stores_payroll_tenant on stores.payrollTenantId referencing payrollTenants(id) ON DELETE SET NULL — allows payrollTenants row deletion (deprovisioning) without orphaning store rows. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | add_column | Add employmentClassification enum to kiosk_users.userStoreAssignments — nullable; set during Phase 1b onboarding. w2_hourly = hourly-paid W-2 employee; w2_salaried = salaried W-2 employee. NULL until classification confirmed during Everee onboarding kickoff flow. BK CANONICAL: classification is determined by BK and sent to Everee during onboarding. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add cashTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add creditTipsCents to per-store scheduleTimePunches — placeholder per CON-19 / PRD Won't-Have (tips tracking never ships in MVP). Adding now avoids future migration cost per analysis §4.1. INT NULL (cents, never float). Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_se00 | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add submittedToEvereeAt to per-store scheduleTimePunches — lock signal for punch-edit policy (analysis §6 hard rule): once a punch is submitted to Everee, edits are blocked at the application layer. DATETIME NULL; set when punch included in a payroll run submission. Per-store DB migration ({{store}} routing). 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add manage_payroll permission — full payroll configuration and oversight. Granted to: Owner (g9), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add submit_pay_run permission — submit a payroll run to Everee. Granted to: Owner (g9), Manager (g7), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add approve_pay_run permission — approve a submitted payroll run. Granted to: Owner (g9), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add approve_pay_run_above_threshold permission — two-person approval gate for runs above twoPersonApprovalThresholdCents. Granted to: Owner (g9), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add view_pay_run permission — view payroll run details and history. Granted to: Owner (g9), Manager (g7), Shift Lead (g8), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add set_pay_rate permission — set or update a worker pay rate in payRateHistory. Granted to: Owner (g9), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add view_own_earnings permission — view own pay stubs and earnings history. Granted to all roles: Owner (g9), Manager (g7), Shift Lead (g8), Employee (g1), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add kickoff_employee_onboarding permission — initiate Everee onboarding for a worker. Granted to: Owner (g9), Manager (g7), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add approve_pto_request permission — approve or deny a submitted PTO/sick/personal time request. Granted to: Owner (g9), Manager (g7), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add request_pto permission — submit own PTO/sick/personal time-off request. Granted to all roles: Owner (g9), Manager (g7), Shift Lead (g8), Employee (g1), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add terminate_employee permission — initiate termination flow for a worker in Everee. Granted to: Owner (g9), Manager (g7), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> SUCCESS: kiosk_users | insert | Add create_punch_adjustment permission — create manual punch corrections for payroll submission. Granted to: Owner (g9), Manager (g7), Site Admin (g2). PRD F10 default role mapping. 2026-05-29 16:43:14 - INFO --> Skipped 407 migration(s) - already applied 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_buykiosk | add_column | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.positions' doesn't exist [file: 20260522_012_positions_payroll_columns] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_buykiosk | add_column | SQLSTATE[42S02]: Base table or view not found: 1146 Table 'kiosk_buykiosk.positions' doesn't exist [file: 20260522_012_positions_payroll_columns] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'display_name' in 'WHERE' [file: 20260522_015_display_name_migration_helper] 2026-05-29 16:43:14 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[42S22]: Column not found: 1054 Unknown column 'display_name' in 'WHERE' [file: 20260522_015_display_name_migration_helper] 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_se00 | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add workersCompClassCode to per-store schedulePositions — workers compensation class code for Everee payroll reporting. VARCHAR(20) to accommodate NCCI class code format (e.g., '8810'). BK CANONICAL: set by owner/manager; sent to Everee during payroll run. NOTE: SDD Extension 4 called this table 'positions' but the actual scheduling-positions table is the per-store `schedulePositions` ({{store}} routing, created by 20251220_013_004) — see implementation-plan.md Deviation Log. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_pc00 | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_ou00 | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_se00 | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_pa00 | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_pc | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_ou | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_demo_se | add_column | Add qboWageAccountId to per-store schedulePositions — per-position QBO wage account override. When set, overrides the tenant-default in payrollCoaMappings for wage_expense mapping. VARCHAR(64) matches QBO account ID format. Targets the per-store `schedulePositions` ({{store}}) table — see Deviation Log re: SDD 'positions' naming. 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_users | update | Best-effort prefill legalFirstName/legalLastName from the already-structured kiosk_users.users.firstName/lastName columns where both legal columns are still NULL and firstName is present. This is the PRIMARY backfill path: users already stores structured first/last names, which are more accurate than re-splitting displayName. Idempotent: only touches rows where legalFirstName IS NULL AND legalLastName IS NULL. Best-effort prefill only — the legal-name-confirmation seam (Phase 1b onboarding) corrects mistakes. annualSalaryCents is explicitly NOT added (CON-19). Depends on 009 having added legalFirstName/legalLastName. NOTE: SDD Extension 1 referenced a 'display_name' source; the real column is `displayName` (camelCase) and structured firstName/lastName already exist — see implementation-plan.md Deviation Log. (affected: 133 rows) 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_users | update | Fallback prefill: best-effort split displayName into legalFirstName (first token) and legalLastName (remainder) for kiosk_users.users rows still missing both legal names but having a multi-token displayName (covers rows with no structured firstName). Idempotent: only touches rows where legalFirstName IS NULL AND legalLastName IS NULL. Uses the real camelCase `displayName` column. (affected: 8 rows) 2026-05-29 16:45:40 - INFO --> SUCCESS: kiosk_users | update | Fallback prefill: copy single-token displayName into legalFirstName for kiosk_users.users rows where displayName has no space and legalFirstName is still NULL. Single-token names treated as first name only; legalLastName remains NULL until confirmed during onboarding. Idempotent: only touches rows where legalFirstName IS NULL. Uses the real camelCase `displayName` column. (affected: 0 rows) 2026-05-29 16:45:40 - INFO --> Skipped 422 migration(s) - already applied 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:40 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-29 16:45:41 - INFO --> Skipped 424 migration(s) - already applied 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-29 16:45:58 - INFO --> Skipped 424 migration(s) - already applied 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-29 16:45:58 - INFO --> Skipped 424 migration(s) - already applied 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:45:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-05-29 16:46:00 - INFO --> Skipped 424 migration(s) - already applied 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-05-29 16:46:00 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-01 14:59:56 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Widen payrollTenants.evereeApiTokenEncrypted to VARCHAR(1024) — the authenticated-encryption envelope (v1:ciphertext:mac) produced by EvereeTokenStorage wraps a full JWT plus HMAC-SHA256 hex (64 chars) plus separators, which can exceed the prior VARCHAR(512) for long-lived Everee JWTs. VARCHAR(1024) provides headroom for the envelope format without risk of silent DB truncation (FIX 4 / spec-050 T6). 2026-06-01 14:59:56 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Widen payrollTenants.webhookSecretEncrypted to VARCHAR(1024) — same authenticated-encryption envelope concern as evereeApiTokenEncrypted. Webhook secrets are shorter than JWTs but widening consistently avoids a future per-column migration (FIX 4 / spec-050 T6). 2026-06-01 14:59:56 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Widen payrollTenants.webhookPriorSecretEncrypted to VARCHAR(1024) — same authenticated-encryption envelope concern as webhookSecretEncrypted (prior secret during rotation window). Consistent with the other two encrypted columns (FIX 4 / spec-050 T6). 2026-06-01 14:59:56 - INFO --> Skipped 424 migration(s) - already applied 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-01 14:59:56 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-01 14:59:58 - INFO --> Skipped 425 migration(s) - already applied 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-01 14:59:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-02 15:17:42 - INFO --> SUCCESS: kiosk_buykiosk | insert | Add ProcessEvereeWebhookJob definition to TaskEngine job registry (spec-050 Everee payroll foundations) 2026-06-02 15:17:42 - INFO --> Skipped 425 migration(s) - already applied 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:17:42 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-02 15:17:44 - INFO --> Skipped 426 migration(s) - already applied 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:17:44 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-02 15:59:15 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Create BEFORE UPDATE trigger on payRateHistory — ADR-2 Layer 3 defense. Any UPDATE attempt raises SQLSTATE 45000 (append-only invariant). Defense-in-depth: GuardedPdo (Layer 2) is the primary app-level gate; this trigger is the backstop for direct DB access, tooling, or future code that bypasses the PHP layer. Operational follow-up: revoke UPDATE/DELETE/TRUNCATE/DROP privileges on payRateHistory from the app DB user. 2026-06-02 15:59:15 - INFO --> SUCCESS: kiosk_buykiosk | raw_sql | Create BEFORE DELETE trigger on payRateHistory — ADR-2 Layer 3 defense. Any DELETE attempt raises SQLSTATE 45000 (append-only invariant). Defense-in-depth: GuardedPdo (Layer 2) is the primary app-level gate; this trigger is the backstop for direct DB access, tooling, or future code that bypasses the PHP layer. Operational follow-up: revoke DELETE privileges on payRateHistory from the app DB user. 2026-06-02 15:59:15 - INFO --> Skipped 426 migration(s) - already applied 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 15:59:15 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-02 17:43:55 - INFO --> Skipped 427 migration(s) - already applied 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-02 17:43:55 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-03 11:29:41 - INFO --> SUCCESS: kiosk_buykiosk | insert | Register ReprocessStrandedWebhooksJob — every-5-min F8 dispatch-failure backstop that re-drives webhook events with processedAt IS NULL AND processingError IS NULL (spec-050 Everee payroll foundations) 2026-06-03 11:29:41 - INFO --> Skipped 427 migration(s) - already applied 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:41 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-03 11:29:47 - INFO --> Skipped 428 migration(s) - already applied 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:47 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-03 11:29:51 - INFO --> Skipped 428 migration(s) - already applied 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:51 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-03 11:29:55 - INFO --> Skipped 428 migration(s) - already applied 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 11:29:55 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-03 12:41:58 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add claimedAt column to payrollWebhookEvents — per-event atomic claim primitive that lets ProcessEvereeWebhookJob short-circuit duplicate dispatches (spec-050 T19; closes the residual concurrency gap documented in T18). NULL = unclaimed; set to NOW() at claim time. Stale claims (older than the job timeout + buffer) are overridable by a new execution id so a crashed worker cannot freeze the row. 2026-06-03 12:41:58 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Add claimedBy column to payrollWebhookEvents — task_executions.id of the worker holding the claim. Lets retries from the same execution re-acquire the claim while blocking a different execution id from racing (spec-050 T19). 2026-06-03 12:41:58 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | Index claimedAt for cheap discovery of stale claims (operational debugging; not on the hot path). (spec-050 T19) 2026-06-03 12:41:58 - INFO --> Skipped 428 migration(s) - already applied 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-03 12:41:58 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | 050b T2 (SDD ADR-1b): extend payrollRuns.status enum APPEND-ONLY with pending_approval, partial_error, needs_reconciliation (BK-side approval state machine + partial/uncertain-recovery states). Appended at END so MySQL ENUM ordinals are preserved (no table rewrite). Idempotent: check_query returns a row once needs_reconciliation is present. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | 050b T2 (SDD ADR-1b/9b): extend payrollRunLines.status enum APPEND-ONLY with returned (ACH deposit returned after PAID, via payment.deposit-returned webhook). Appended at END preserves ENUM ordinals. Idempotent: check_query returns a row once returned is present. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-13b): payrollRunLines.typeNum — the store the hours came from; qualifies the per-store positionId so a tenant-wide run can disambiguate cross-store collisions. VARCHAR(8) NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-13b): payrollRunLines.positionId — PER-STORE local position id, interpreted within typeNum. Line grain = (userId, typeNum, positionId, rate-segment). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-13b): payrollRunLines.rateType — the rate type used for this line (audit). ENUM hourly/salary_annual NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-13b): payrollRunLines.rateCents — the resolved rate used for this line (audit; integer cents, never float). INT NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | alter_table | 050b T2 (SDD ADR-13b): index payrollRunLines (payrollRunId, userId, typeNum, positionId) for line-grain lookups. Idempotent: check_query returns a row once the index exists. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-11b / PRD F5): payrollTenants.environment — the REAL sandbox/production signal PayrollReadinessGate asserts (isActive is reachability, NOT environment). 050b provisioning always sets sandbox; only a future production phase flips it. ENUM('sandbox','production') NOT NULL DEFAULT 'sandbox'. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-8b): payrollTenants.payPeriodAnchorDate — REQUIRED for biweekly period generation (disambiguates which 14-day window). DATE NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | add_column | 050b T2 (SDD ADR-8b): payrollTenants.semiMonthlySecondPeriodStartDay — semi-monthly boundary; periods are [1..day-1] and [day..end-of-month]. TINYINT UNSIGNED NULL DEFAULT 16. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_users | add_column | 050b T2 (SDD F4/ADR-9b): userPayrollProfiles.paymentMethodUpdatedAt — mirror flag set by the payment.updated-payment-method webhook. No PII stored. DATETIME NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_users | add_column | 050b T2 (SDD F4/ADR-9b): userPayrollProfiles.taxFormsAvailableAt — mirror flag set by the worker.new-tax-forms-available webhook. No PII stored. DATETIME NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_buykiosk | create_table | 050b T2 (SDD ADR-12b): create payrollRunExclusions — DURABLE worker exclusions from a tenant-wide run. Preview + submit-payload construction READ this; an excluded worker's punches are NOT locked, so their hours carry to a future run. FK to payrollRuns ON DELETE RESTRICT (IRS retention). UNIQUE (payrollRunId, userId) = one exclusion per worker per run. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_pc00 | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_ou00 | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_se00 | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_pa00 | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_demo_pc | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_demo_ou | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> SUCCESS: kiosk_demo_se | add_column | 050b T2 (SDD ADR-6b): scheduleTimePunches.submittedToEvereeRunId — set together with submittedToEvereeAt at the pre-submit LOCK step so the lock is run-attributable; a failed/uncertain submit releases/reconciles via WHERE submittedToEvereeRunId = run.id. Per-store DB ({{store}} routing). INT UNSIGNED NULL. 2026-06-04 11:27:00 - INFO --> Skipped 429 migration(s) - already applied 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:00 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-04 11:27:30 - INFO --> Skipped 435 migration(s) - already applied 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:30 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-06-04 11:27:31 - INFO --> Skipped 435 migration(s) - already applied 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260202_001_drs_multi_concept_metadata] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'submitter_name' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key name 'idx_user_id' [file: 20260207_001_support_feedback_identity] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[01000]: Warning: 1265 Data truncated for column 'zipcode' at row 42387 [file: 20260216_002_widen_customer_zipcode] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pc00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_ou00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_se00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_pa00 | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_pc | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_ou | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_demo_se | alter_table | SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'offsetQbAccountId' [file: 20260217_002_qb_mapping_offset_accounts] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_sales | alter_table | SQLSTATE[22007]: Invalid datetime format: 1292 Truncated incorrect INTEGER value: '1.5' [file: 20260304_001_brands_id_to_int] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_users | insert | SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`kiosk_users`.`usergroups`, CONSTRAINT `fk_userGroups_user` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) [file: 20260508_001_uri_cash_permissions_carly_owner] 2026-06-04 11:27:31 - ERROR --> ERROR: kiosk_users | update | SQLSTATE[HY000]: General error: 1348 Column 'primary_group_id' is not updatable [file: 20260508_002_carly_primary_group_owner] 2026-07-21 16:36:48 - INFO --> CSS build complete: 469.98 KB, hash: 8312c951 2026-07-21 16:41:00 - INFO --> CSS build complete: 472.06 KB, hash: 080d4a99 2026-07-22 14:32:59 - ERROR --> CSS bundle exceeds size limit: 723.83 KB > 500 KB 2026-07-22 14:33:05 - ERROR --> CSS bundle exceeds size limit: 723.83 KB > 500 KB 2026-07-22 16:44:26 - INFO --> CSS build complete: 472.06 KB, hash: 991c2a40 2026-07-23 12:44:59 - INFO --> CSS build complete: 472.86 KB, hash: 32f1e44a 2026-07-28 10:51:03 - INFO --> CSS build complete: 473.88 KB, hash: a0f0302b 2026-07-28 11:22:29 - ERROR --> CSS bundle exceeds size limit: 729.35 KB > 500 KB 2026-07-28 11:22:36 - INFO --> CSS build complete: 475.24 KB, hash: 1cc7346d 2026-07-28 16:12:39 - INFO --> CSS build complete: 477.31 KB, hash: de5d22d4 2026-07-28 16:26:44 - INFO --> CSS build complete: 478.37 KB, hash: 98b7c5e9 2026-07-28 16:28:36 - INFO --> CSS build complete: 478.37 KB, hash: 98b7c5e9 2026-08-10 12:12:44 - INFO --> CSS build complete: 479.78 KB, hash: 3b1e12ad 2026-08-27 8:41:50 - INFO --> CSS build complete: 479.88 KB, hash: a3c0f3e8