[
  {
    "type": "create_table",
    "description": "Spec 049 T1.2.2: Create breakPolicyPreset table in shared kiosk_buykiosk DB (BK-maintained preset library)",
    "database": "kiosk_buykiosk",
    "check_query": "SELECT 1 FROM information_schema.tables WHERE table_schema = 'kiosk_buykiosk' AND table_name = 'breakPolicyPreset'",
    "sql": "CREATE TABLE `breakPolicyPreset` (\n  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,\n  `presetKey` VARCHAR(50) NOT NULL COMMENT 'e.g. FLSA-default, CA-2025, NY-2025',\n  `name` VARCHAR(100) NOT NULL,\n  `description` TEXT NULL,\n  `jurisdiction` ENUM('federal','state','city') NOT NULL,\n  `jurisdictionCode` VARCHAR(10) NOT NULL COMMENT 'US, CA, NY, NYC, etc.',\n  `effectiveDate` DATE NOT NULL,\n  `version` INT UNSIGNED NOT NULL DEFAULT 1,\n  `supersededByPresetKey` VARCHAR(50) NULL COMMENT 'Set when a newer-version preset replaces this one (e.g. CA-2025 superseded by CA-2026)',\n  `createdAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,\n  `updatedAt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `uk_presetKey_version` (`presetKey`, `version`),\n  INDEX `idx_jurisdiction` (`jurisdiction`, `jurisdictionCode`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Spec 049: Shared break policy preset library (BK-maintained, read-only at runtime)'"
  },
  {
    "type": "create_table",
    "description": "Spec 049 T1.2.2: Create breakPolicyPresetRule table in shared kiosk_buykiosk DB (preset rule definitions, FK to breakPolicyPreset)",
    "database": "kiosk_buykiosk",
    "check_query": "SELECT 1 FROM information_schema.tables WHERE table_schema = 'kiosk_buykiosk' AND table_name = 'breakPolicyPresetRule'",
    "sql": "CREATE TABLE `breakPolicyPresetRule` (\n  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,\n  `presetId` INT UNSIGNED NOT NULL,\n  `priority` INT UNSIGNED NOT NULL COMMENT 'Sort order; lowest priority wins on rule-match scan',\n  `ruleType` ENUM('rest','meal','secondMeal','flsaCutoff','autoDeduct') NOT NULL,\n  `triggerShiftMinHours` DECIMAL(4,2) NULL COMMENT 'Rule applies only if shift duration >= this',\n  `triggerShiftMaxHours` DECIMAL(4,2) NULL COMMENT 'Rule applies only if shift duration <= this',\n  `triggerStartTimeWindow` VARCHAR(20) NULL COMMENT 'Wall-clock window, e.g. 11:00-14:00',\n  `durationMinutes` INT UNSIGNED NOT NULL COMMENT 'Expected break duration',\n  `durationToleranceMinutes` INT UNSIGNED NOT NULL DEFAULT 0,\n  `isPaid` TINYINT(1) NOT NULL,\n  `isRequired` TINYINT(1) NOT NULL DEFAULT 0,\n  `mustStartBeforeHourOfShift` DECIMAL(4,2) NULL COMMENT 'Late if break starts after this many hours into the shift',\n  `classifyShortBreaksUnderMinutesAsPaid` INT UNSIGNED NULL COMMENT 'FLSA cutoff threshold (e.g. 20)',\n  `premiumPayOnViolation` TINYINT(1) NOT NULL DEFAULT 0,\n  `premiumPayHours` DECIMAL(4,2) NOT NULL DEFAULT 0.00,\n  `notes` TEXT NULL,\n  PRIMARY KEY (`id`),\n  INDEX `idx_preset_priority` (`presetId`, `priority`),\n  CONSTRAINT `fk_breakPolicyPresetRule_preset` FOREIGN KEY (`presetId`) REFERENCES `breakPolicyPreset`(`id`) ON DELETE CASCADE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Spec 049: Shared preset rule definitions'"
  }
]
