{
    "success": true,
    "cascade_run": {
        "cascade_run_id": 388,
        "app_id": 289,
        "operator": "operator",
        "status": "partial",
        "started_at": "2026-07-20 00:46:47",
        "finished_at": "2026-07-20 00:46:48",
        "notes": "All 2 tables completed"
    },
    "stages": [
        {
            "stage_result_id": 3050,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "preflight",
            "status": "warning",
            "upstream_target": "importer",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"status\":\"warning\",\"checks\":[{\"check_type\":\"slug_format\",\"input_value\":\"nanored_bait_origen\",\"result\":\"pass\",\"message\":\"Table name 'nanored_bait_origen' matches naming contract format.\",\"fix_suggestion\":null},{\"check_type\":\"reserved_word\",\"input_value\":\"nanored_bait_origen\",\"result\":\"pass\",\"message\":\"Table name 'nanored_bait_origen' is not a MySQL reserved word.\",\"fix_suggestion\":null},{\"check_type\":\"upstream_primary_key\",\"input_value\":\"nanored_bait_origen\",\"result\":\"warning\",\"message\":\"Missing expected primary key 'nanored_bait_origen_id'. Tables must define a primary key named after the singular table name with '_id' suffix.\",\"fix_suggestion\":\"Add column 'nanored_bait_origen_id' VARCHAR(32) PRIMARY KEY\"}],\"fix_suggestions\":[\"Add column 'nanored_bait_origen_id' VARCHAR(32) PRIMARY KEY\"]}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3051,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "schema_import",
            "status": "success",
            "upstream_target": "ia_case (preview)",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"local\":true,\"ia_case_probe\":\"skipped\",\"reason\":\"no relationships declared\"}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3052,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "model_gen",
            "status": "success",
            "upstream_target": "ia_case",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"skipped\":true,\"reason\":\"no relationships declared\",\"mode\":\"local-first\"}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3053,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "wire_relations",
            "status": "success",
            "upstream_target": "local\/relationship-authoring",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"authored\":[],\"skipped\":[],\"already_derived\":[]}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3054,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "ui_api_gen",
            "status": "success",
            "upstream_target": "local\/modern-generator",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"ok\":true,\"files\":{\"backoffice\\\/modern-nanored_bait_origen.php\":{\"success\":true,\"backup\":true,\"lint\":\"No syntax errors detected in \\\/lamp\\\/www\\\/quantix\\\/backoffice\\\/modern-nanored_bait_origen.php\",\"size\":10031},\"api\\\/v1\\\/nanored_bait_origen.php\":{\"success\":true,\"backup\":true,\"lint\":\"No syntax errors detected in \\\/lamp\\\/www\\\/quantix\\\/api\\\/v1\\\/nanored_bait_origen.php\",\"size\":9938},\"js\\\/modern\\\/nanored_bait_origen-app.js\":{\"success\":true,\"backup\":true,\"lint\":\"\",\"size\":42700},\"backoffice\\\/schema\\\/nanored_bait_origen.json\":{\"success\":true,\"backup\":true,\"lint\":\"\",\"size\":9685},\"model\":{\"success\":false,\"error\":\"Model file not found: app_nanored_bait_origen.php\"}},\"config\":{\"table\":\"nanored_bait_origen\",\"pk\":\"bait_origen_id\",\"columns\":{\"bait_origen_id\":{\"name\":\"bait_origen_id\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":false,\"default\":null,\"is_primary\":true,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Bait Origen ID\",\"is_editable\":false,\"is_visible\":true},\"Distribuidor\":{\"name\":\"Distribuidor\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Distribuidor\",\"is_editable\":true,\"is_visible\":true},\"ICCID\":{\"name\":\"ICCID\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"ICCID\",\"is_editable\":true,\"is_visible\":true},\"Estatus\":{\"name\":\"Estatus\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Estatus\",\"is_editable\":true,\"is_visible\":true},\"Fecha de activacion\":{\"name\":\"Fecha de activacion\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Fecha De Activacion\",\"is_editable\":true,\"is_visible\":true},\"Fecha de Port-in\":{\"name\":\"Fecha de Port-in\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Fecha De Byt-in\",\"is_editable\":true,\"is_visible\":true},\"Fecha de Port-out\":{\"name\":\"Fecha de Port-out\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Fecha De Byt-out\",\"is_editable\":true,\"is_visible\":true},\"Consumo\":{\"name\":\"Consumo\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Consumo\",\"is_editable\":true,\"is_visible\":true},\"Bono x Alta\":{\"name\":\"Bono x Alta\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Bono X Created\",\"is_editable\":true,\"is_visible\":true},\"Bono x Port-in\":{\"name\":\"Bono x Port-in\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Bono X Byt-in\",\"is_editable\":true,\"is_visible\":true},\"Residual de recarga\":{\"name\":\"Residual de recarga\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Residual De Recarga\",\"is_editable\":true,\"is_visible\":true},\"Bono de desempeno\":{\"name\":\"Bono de desempeno\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Bono De Desempeno\",\"is_editable\":true,\"is_visible\":true},\"CANAL\":{\"name\":\"CANAL\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"CANAL\",\"is_editable\":true,\"is_visible\":true},\"SUBCANAL\":{\"name\":\"SUBCANAL\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"SUBCANAL\",\"is_editable\":true,\"is_visible\":true},\"ASIGNADO\":{\"name\":\"ASIGNADO\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"ASIGNADO\",\"is_editable\":true,\"is_visible\":true},\"alta_db\":{\"name\":\"alta_db\",\"type\":\"timestamp\",\"raw_type\":\"timestamp\",\"nullable\":true,\"default\":\"CURRENT_TIMESTAMP\",\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"DEFAULT_GENERATED\",\"comment\":\"\",\"label\":\"Created\",\"is_editable\":false,\"is_visible\":true},\"alta_por\":{\"name\":\"alta_por\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":true,\"default\":\"system\",\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Created By\",\"is_editable\":false,\"is_visible\":true},\"ultimo_cambio\":{\"name\":\"ultimo_cambio\",\"type\":\"timestamp\",\"raw_type\":\"timestamp\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"on update CURRENT_TIMESTAMP\",\"comment\":\"\",\"label\":\"Last Modified\",\"is_editable\":false,\"is_visible\":true},\"ultimo_cambio_por\":{\"name\":\"ultimo_cambio_por\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Last Modified By\",\"is_editable\":false,\"is_visible\":true}},\"foreign_keys\":[],\"visible_columns\":[\"bait_origen_id\",\"alta_db\",\"ultimo_cambio\"],\"editable_columns\":[\"Distribuidor\",\"ICCID\",\"Estatus\",\"Fecha de activacion\",\"Fecha de Port-in\",\"Fecha de Port-out\",\"Consumo\",\"Bono x Alta\",\"Bono x Port-in\",\"Residual de recarga\",\"Bono de desempeno\",\"CANAL\",\"SUBCANAL\",\"ASIGNADO\"],\"searchable_columns\":[\"bait_origen_id\",\"Distribuidor\",\"ICCID\",\"Estatus\",\"Fecha de activacion\",\"Fecha de Port-in\",\"Fecha de Port-out\",\"Consumo\"],\"sort_default\":\"alta_db\",\"form_sections\":[{\"title\":\"General\",\"collapsed\":false,\"fields\":[{\"key\":\"Estatus\",\"required\":false,\"span\":2}]},{\"title\":\"Details\",\"collapsed\":false,\"fields\":[{\"key\":\"Distribuidor\",\"required\":false,\"span\":2},{\"key\":\"ICCID\",\"required\":false,\"span\":2},{\"key\":\"Fecha de activacion\",\"required\":false,\"span\":2},{\"key\":\"Fecha de Port-in\",\"required\":false,\"span\":2},{\"key\":\"Fecha de Port-out\",\"required\":false,\"span\":2},{\"key\":\"Consumo\",\"required\":false,\"span\":2},{\"key\":\"Bono x Alta\",\"required\":false,\"span\":2},{\"key\":\"Bono x Port-in\",\"required\":false,\"span\":2},{\"key\":\"Residual de recarga\",\"required\":false,\"span\":2},{\"key\":\"Bono de desempeno\",\"required\":false,\"span\":2}]},{\"title\":\"Details 2\",\"collapsed\":true,\"fields\":[{\"key\":\"CANAL\",\"required\":false,\"span\":2},{\"key\":\"SUBCANAL\",\"required\":false,\"span\":2},{\"key\":\"ASIGNADO\",\"required\":false,\"span\":2}]},{\"title\":\"Audit\",\"collapsed\":true,\"fields\":[{\"key\":\"alta_db\",\"required\":false,\"span\":1},{\"key\":\"alta_por\",\"required\":false,\"span\":1},{\"key\":\"ultimo_cambio\",\"required\":false,\"span\":1},{\"key\":\"ultimo_cambio_por\",\"required\":false,\"span\":1}]}],\"enum_columns\":[],\"filter_columns\":[],\"child_tables\":[],\"label_singular\":\"Nanored Bait Origen\",\"label_plural\":\"Nanored Bait Origens\"},\"elapsed_ms\":141}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3055,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "stage": "verify",
            "status": "warning",
            "upstream_target": "ia_case + local",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"status\":\"warning\",\"findings\":[{\"check\":\"php_lint\",\"status\":\"success\",\"message\":\"PHP lint: 3\\\/3 files clean.\"},{\"check\":\"iacase_model\",\"status\":\"warning\",\"message\":\"ia_case introspection unavailable: Table 'nanored_bait_origen' not found in model. Cannot verify model post-generation.\"},{\"check\":\"naming_recheck\",\"status\":\"success\",\"message\":\"Naming contract: 'nanored_bait_origen' passes local recheck (regex + reserved words).\"},{\"check\":\"modern_health\",\"status\":\"warning\",\"message\":\"Modern-gen health: warning — Missing: app_nanored_bait_origen.php (4\\\/5 checks pass)\"}],\"elapsed_ms\":149}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3056,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "preflight",
            "status": "warning",
            "upstream_target": "importer",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"status\":\"warning\",\"checks\":[{\"check_type\":\"slug_format\",\"input_value\":\"nanored_calculado\",\"result\":\"pass\",\"message\":\"Table name 'nanored_calculado' matches naming contract format.\",\"fix_suggestion\":null},{\"check_type\":\"reserved_word\",\"input_value\":\"nanored_calculado\",\"result\":\"pass\",\"message\":\"Table name 'nanored_calculado' is not a MySQL reserved word.\",\"fix_suggestion\":null},{\"check_type\":\"upstream_primary_key\",\"input_value\":\"nanored_calculado\",\"result\":\"warning\",\"message\":\"Missing expected primary key 'nanored_calculado_id'. Tables must define a primary key named after the singular table name with '_id' suffix.\",\"fix_suggestion\":\"Add column 'nanored_calculado_id' VARCHAR(32) PRIMARY KEY\"}],\"fix_suggestions\":[\"Add column 'nanored_calculado_id' VARCHAR(32) PRIMARY KEY\"]}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3057,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "schema_import",
            "status": "success",
            "upstream_target": "ia_case (preview)",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"local\":true,\"ia_case_probe\":\"skipped\",\"reason\":\"no relationships declared\"}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3058,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "model_gen",
            "status": "success",
            "upstream_target": "ia_case",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"skipped\":true,\"reason\":\"no relationships declared\",\"mode\":\"local-first\"}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3059,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "wire_relations",
            "status": "success",
            "upstream_target": "local\/relationship-authoring",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"authored\":[],\"skipped\":[],\"already_derived\":[]}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3060,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "ui_api_gen",
            "status": "success",
            "upstream_target": "local\/modern-generator",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"ok\":true,\"files\":{\"backoffice\\\/modern-nanored_calculado.php\":{\"success\":true,\"backup\":true,\"lint\":\"No syntax errors detected in \\\/lamp\\\/www\\\/quantix\\\/backoffice\\\/modern-nanored_calculado.php\",\"size\":10021},\"api\\\/v1\\\/nanored_calculado.php\":{\"success\":true,\"backup\":true,\"lint\":\"No syntax errors detected in \\\/lamp\\\/www\\\/quantix\\\/api\\\/v1\\\/nanored_calculado.php\",\"size\":9234},\"js\\\/modern\\\/nanored_calculado-app.js\":{\"success\":true,\"backup\":true,\"lint\":\"\",\"size\":41732},\"backoffice\\\/schema\\\/nanored_calculado.json\":{\"success\":true,\"backup\":true,\"lint\":\"\",\"size\":3919},\"model\":{\"success\":false,\"error\":\"Model file not found: app_nanored_calculado.php\"}},\"config\":{\"table\":\"nanored_calculado\",\"pk\":\"nanored_calculado_id\",\"columns\":{\"nanored_calculado_id\":{\"name\":\"nanored_calculado_id\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":false,\"default\":null,\"is_primary\":true,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Nanored Calculado ID\",\"is_editable\":false,\"is_visible\":true},\"Bono x Alta\":{\"name\":\"Bono x Alta\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Bono X Created\",\"is_editable\":true,\"is_visible\":true},\"(Todas)\":{\"name\":\"(Todas)\",\"type\":\"text\",\"raw_type\":\"text\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"(Todas)\",\"is_editable\":true,\"is_visible\":true},\"alta_db\":{\"name\":\"alta_db\",\"type\":\"timestamp\",\"raw_type\":\"timestamp\",\"nullable\":true,\"default\":\"CURRENT_TIMESTAMP\",\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"DEFAULT_GENERATED\",\"comment\":\"\",\"label\":\"Created\",\"is_editable\":false,\"is_visible\":true},\"alta_por\":{\"name\":\"alta_por\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":true,\"default\":\"system\",\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Created By\",\"is_editable\":false,\"is_visible\":true},\"ultimo_cambio\":{\"name\":\"ultimo_cambio\",\"type\":\"timestamp\",\"raw_type\":\"timestamp\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"on update CURRENT_TIMESTAMP\",\"comment\":\"\",\"label\":\"Last Modified\",\"is_editable\":false,\"is_visible\":true},\"ultimo_cambio_por\":{\"name\":\"ultimo_cambio_por\",\"type\":\"varchar\",\"raw_type\":\"varchar(32)\",\"nullable\":true,\"default\":null,\"is_primary\":false,\"is_foreign\":false,\"foreign_table\":null,\"foreign_column\":null,\"extra\":\"\",\"comment\":\"\",\"label\":\"Last Modified By\",\"is_editable\":false,\"is_visible\":true}},\"foreign_keys\":[],\"visible_columns\":[\"nanored_calculado_id\",\"alta_db\",\"ultimo_cambio\"],\"editable_columns\":[\"Bono x Alta\",\"(Todas)\"],\"searchable_columns\":[\"nanored_calculado_id\",\"Bono x Alta\",\"(Todas)\",\"alta_por\",\"ultimo_cambio_por\"],\"sort_default\":\"alta_db\",\"form_sections\":[{\"title\":\"Details\",\"collapsed\":false,\"fields\":[{\"key\":\"Bono x Alta\",\"required\":false,\"span\":2},{\"key\":\"(Todas)\",\"required\":false,\"span\":2}]},{\"title\":\"Audit\",\"collapsed\":true,\"fields\":[{\"key\":\"alta_db\",\"required\":false,\"span\":1},{\"key\":\"alta_por\",\"required\":false,\"span\":1},{\"key\":\"ultimo_cambio\",\"required\":false,\"span\":1},{\"key\":\"ultimo_cambio_por\",\"required\":false,\"span\":1}]}],\"enum_columns\":[],\"filter_columns\":[],\"child_tables\":[],\"label_singular\":\"Nanored Calculado\",\"label_plural\":\"Nanored Calculados\"},\"elapsed_ms\":85}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:47"
        },
        {
            "stage_result_id": 3061,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "stage": "verify",
            "status": "warning",
            "upstream_target": "ia_case + local",
            "request_url": null,
            "response_code": null,
            "response_body": "{\"status\":\"warning\",\"findings\":[{\"check\":\"php_lint\",\"status\":\"success\",\"message\":\"PHP lint: 3\\\/3 files clean.\"},{\"check\":\"iacase_model\",\"status\":\"warning\",\"message\":\"ia_case introspection unavailable: Table 'nanored_calculado' not found in model. Cannot verify model post-generation.\"},{\"check\":\"naming_recheck\",\"status\":\"success\",\"message\":\"Naming contract: 'nanored_calculado' passes local recheck (regex + reserved words).\"},{\"check\":\"modern_health\",\"status\":\"warning\",\"message\":\"Modern-gen health: warning — Missing: app_nanored_calculado.php (4\\\/5 checks pass)\"}],\"elapsed_ms\":140}",
            "started_at": "2026-07-20 00:46:47",
            "finished_at": "2026-07-20 00:46:48"
        }
    ],
    "naming_checks": [
        {
            "naming_check_id": 2299,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "check_type": "slug_format",
            "input_value": "nanored_bait_origen",
            "result": "pass",
            "message": "Table name 'nanored_bait_origen' matches naming contract format.",
            "fix_suggestion": null,
            "checked_at": "2026-07-20 00:46:47"
        },
        {
            "naming_check_id": 2300,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "check_type": "reserved_word",
            "input_value": "nanored_bait_origen",
            "result": "pass",
            "message": "Table name 'nanored_bait_origen' is not a MySQL reserved word.",
            "fix_suggestion": null,
            "checked_at": "2026-07-20 00:46:47"
        },
        {
            "naming_check_id": 2301,
            "cascade_run_id": 388,
            "app_table_id": 923,
            "check_type": "upstream_primary_key",
            "input_value": "nanored_bait_origen",
            "result": "warning",
            "message": "Missing expected primary key 'nanored_bait_origen_id'. Tables must define a primary key named after the singular table name with '_id' suffix.",
            "fix_suggestion": "Add column 'nanored_bait_origen_id' VARCHAR(32) PRIMARY KEY",
            "checked_at": "2026-07-20 00:46:47"
        },
        {
            "naming_check_id": 2302,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "check_type": "slug_format",
            "input_value": "nanored_calculado",
            "result": "pass",
            "message": "Table name 'nanored_calculado' matches naming contract format.",
            "fix_suggestion": null,
            "checked_at": "2026-07-20 00:46:47"
        },
        {
            "naming_check_id": 2303,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "check_type": "reserved_word",
            "input_value": "nanored_calculado",
            "result": "pass",
            "message": "Table name 'nanored_calculado' is not a MySQL reserved word.",
            "fix_suggestion": null,
            "checked_at": "2026-07-20 00:46:47"
        },
        {
            "naming_check_id": 2304,
            "cascade_run_id": 388,
            "app_table_id": 924,
            "check_type": "upstream_primary_key",
            "input_value": "nanored_calculado",
            "result": "warning",
            "message": "Missing expected primary key 'nanored_calculado_id'. Tables must define a primary key named after the singular table name with '_id' suffix.",
            "fix_suggestion": "Add column 'nanored_calculado_id' VARCHAR(32) PRIMARY KEY",
            "checked_at": "2026-07-20 00:46:47"
        }
    ]
}