# -*- coding: utf-8 -*- # Copyright 2026 Nexa Systems Inc. # License OPL-1 """Post-migrate for 19.0.22.0.0 — Recipe-level cert suppression Booleans. Backfills NULL -> TRUE on the five new requires_* columns on fusion.plating.process.node (requires_coc, requires_thickness_report, requires_nadcap_cert, requires_mill_test, requires_customer_specific). Default TRUE = inherit current behaviour for every existing recipe (zero migration surprises — every existing recipe keeps producing the same cert set it produces today). Idempotent: safe to re-run. Spec: docs/superpowers/specs/2026-05-27-recipe-cert-toggles-design.md """ import logging _logger = logging.getLogger(__name__) def migrate(cr, version): if not version: return _logger.info( '19.0.22.0.0 post-migrate: backfilling recipe cert-suppression ' 'requires_* Booleans to TRUE on fusion.plating.process.node rows' ) for col in ( 'requires_coc', 'requires_thickness_report', 'requires_nadcap_cert', 'requires_mill_test', 'requires_customer_specific', ): cr.execute( "UPDATE fusion_plating_process_node SET %s = TRUE " "WHERE %s IS NULL" % (col, col) ) _logger.info(' %s: %d rows updated', col, cr.rowcount)