{
  "status": "passed",
  "project": "nymphar-schema-20261108",
  "actions": [
    {
      "label": "direct-rename",
      "table": "commandes_directes",
      "sql": "ALTER TABLE commandes_directes RENAME COLUMN montant_centimes TO total_centimes;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_after": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "sql_output": "ALTER TABLE",
      "cdc_count_before": 3,
      "ddl_observation": {
        "window_seconds": 2.122,
        "cdc_count_after": 3,
        "new_row_events": 0,
        "interpretation": "Aucun événement de ligne observé pour ce DDL seul dans cette fenêtre ; ce délai ne constitue pas une garantie."
      }
    },
    {
      "label": "direct-update-reelle",
      "table": "commandes_directes",
      "sql": "UPDATE commandes_directes SET statut='controlee' WHERE id=1;",
      "source_before": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_after": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 3
    },
    {
      "label": "progressif-ajout-nullable",
      "table": "commandes_progressives",
      "sql": "ALTER TABLE commandes_progressives ADD COLUMN total_centimes INTEGER;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "sql_output": "ALTER TABLE",
      "cdc_count_before": 3,
      "ddl_observation": {
        "window_seconds": 2.096,
        "cdc_count_after": 3,
        "new_row_events": 0,
        "interpretation": "Aucun événement de ligne observé pour ce DDL seul dans cette fenêtre ; ce délai ne constitue pas une garantie."
      }
    },
    {
      "label": "progressif-double-ecriture-avant-backfill",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET montant_centimes=11000, total_centimes=11000, statut='double_ecriture' WHERE id=1;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 3
    },
    {
      "label": "progressif-zero-double-ecrit",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET montant_centimes=0, total_centimes=0, statut='zero' WHERE id=2;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 4
    },
    {
      "label": "progressif-ancienne-ligne-nouveau-null",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET statut='avant_backfill' WHERE id=3;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 5
    },
    {
      "label": "negatif-conflit-reel",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET total_centimes=12000 WHERE id=1;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 12000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 6
    },
    {
      "label": "correction-du-conflit",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET montant_centimes=11000, total_centimes=11000, statut='reparee' WHERE id=1;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 12000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 7
    },
    {
      "label": "backfill-update-ancienne-ligne",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET total_centimes=montant_centimes WHERE total_centimes IS NULL;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "source_after": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": 30000
        }
      ],
      "sql_output": "UPDATE 1",
      "cdc_count_before": 8
    },
    {
      "label": "progressif-retrait-ancien-champ",
      "table": "commandes_progressives",
      "sql": "ALTER TABLE commandes_progressives DROP COLUMN montant_centimes;",
      "source_before": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": 30000
        }
      ],
      "source_after": [
        {
          "id": 1,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "statut": "avant_backfill",
          "total_centimes": 30000
        }
      ],
      "sql_output": "ALTER TABLE",
      "cdc_count_before": 9,
      "ddl_observation": {
        "window_seconds": 2.11,
        "cdc_count_after": 9,
        "new_row_events": 0,
        "interpretation": "Aucun événement de ligne observé pour ce DDL seul dans cette fenêtre ; ce délai ne constitue pas une garantie."
      }
    },
    {
      "label": "progressif-updates-apres-retrait",
      "table": "commandes_progressives",
      "sql": "UPDATE commandes_progressives SET statut='zero_apres_retrait' WHERE id=2; UPDATE commandes_progressives SET statut='apres_retrait' WHERE id=3;",
      "source_before": [
        {
          "id": 1,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "statut": "avant_backfill",
          "total_centimes": 30000
        }
      ],
      "source_after": [
        {
          "id": 1,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "statut": "zero_apres_retrait",
          "total_centimes": 0
        },
        {
          "id": 3,
          "statut": "apres_retrait",
          "total_centimes": 30000
        }
      ],
      "sql_output": "UPDATE 1\nUPDATE 1",
      "cdc_count_before": 9
    }
  ],
  "checks": [
    {
      "label": "commandes_directes-initial",
      "table": "commandes_directes",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [],
      "source_sum_centimes": 60000,
      "reference_sum_centimes": 60000
    },
    {
      "label": "commandes_progressives-initial",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [],
      "source_sum_centimes": 60000,
      "reference_sum_centimes": 60000
    },
    {
      "label": "direct-source-et-pont",
      "table": "commandes_directes",
      "source_physical": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [],
      "source_sum_centimes": 60000,
      "reference_sum_centimes": 60000
    },
    {
      "label": "avant-backfill-deux-lignes-null",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 20000,
          "statut": "validee",
          "total_centimes": null
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "validee",
          "total_centimes": null
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [],
      "source_sum_centimes": 61000,
      "reference_sum_centimes": 61000
    },
    {
      "label": "pont-repli-null-et-zero",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "double_ecriture"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [],
      "source_sum_centimes": 41000,
      "reference_sum_centimes": 41000
    },
    {
      "label": "conflit-alerte-puis-correction",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [
        {
          "stream_id": "1794140694194-0",
          "id": 1,
          "type": "SchemaConflict",
          "message": "id=1: montant_centimes=11000 != total_centimes=12000"
        }
      ],
      "source_sum_centimes": 41000,
      "reference_sum_centimes": 41000
    },
    {
      "label": "backfill-termine",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "montant_centimes": 0,
          "statut": "zero",
          "total_centimes": 0
        },
        {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": 30000
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "avant_backfill"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [
        {
          "stream_id": "1794140694194-0",
          "id": 1,
          "type": "SchemaConflict",
          "message": "id=1: montant_centimes=11000 != total_centimes=12000"
        }
      ],
      "source_sum_centimes": 41000,
      "reference_sum_centimes": 41000
    },
    {
      "label": "progressif-final-source-projection-reference",
      "table": "commandes_progressives",
      "source_physical": [
        {
          "id": 1,
          "statut": "reparee",
          "total_centimes": 11000
        },
        {
          "id": 2,
          "statut": "zero_apres_retrait",
          "total_centimes": 0
        },
        {
          "id": 3,
          "statut": "apres_retrait",
          "total_centimes": 30000
        }
      ],
      "source_canonical": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero_apres_retrait"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "apres_retrait"
        }
      ],
      "projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero_apres_retrait"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "apres_retrait"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero_apres_retrait"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "apres_retrait"
        }
      ],
      "equal_by_ids_values_status": true,
      "alerts": [
        {
          "stream_id": "1794140694194-0",
          "id": 1,
          "type": "SchemaConflict",
          "message": "id=1: montant_centimes=11000 != total_centimes=12000"
        }
      ],
      "source_sum_centimes": 41000,
      "reference_sum_centimes": 41000
    }
  ],
  "started_at_utc": "2026-11-08T12:24:43.156109+00:00",
  "captures": [
    {
      "label": "commandes_directes-snapshot",
      "observed_wait_ms": 85,
      "events": [
        {
          "stream": "schema_lab.public.commandes_directes",
          "stream_id": "1794140681040-2",
          "key": {
            "id": 3
          },
          "op": "r",
          "before": null,
          "after": {
            "id": 3,
            "montant_centimes": 30000,
            "statut": "validee"
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140680575,
            "snapshot": "last_in_data_collection",
            "db": "cdc",
            "sequence": "[null,\"26427536\"]",
            "ts_us": 1794140680575544,
            "ts_ns": 1794140680575544000,
            "schema": "public",
            "table": "commandes_directes",
            "txId": 737,
            "lsn": 26427536,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "commandes_progressives-snapshot",
      "observed_wait_ms": 88,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140681040-2",
          "key": {
            "id": 3
          },
          "op": "r",
          "before": null,
          "after": {
            "id": 3,
            "montant_centimes": 30000,
            "statut": "validee"
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140680575,
            "snapshot": "last",
            "db": "cdc",
            "sequence": "[null,\"26427536\"]",
            "ts_us": 1794140680575544,
            "ts_ns": 1794140680575544000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 737,
            "lsn": 26427536,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "direct-nouveau-schema-dans-update",
      "observed_wait_ms": 670,
      "events": [
        {
          "stream": "schema_lab.public.commandes_directes",
          "stream_id": "1794140687623-0",
          "key": {
            "id": 1
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 1,
            "total_centimes": 10000,
            "statut": "controlee"
          },
          "after_fields": [
            "id",
            "total_centimes",
            "statut"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140686996,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[null,\"26451656\"]",
            "ts_us": 1794140686996738,
            "ts_ns": 1794140686996738000,
            "schema": "public",
            "table": "commandes_directes",
            "txId": 739,
            "lsn": 26451656,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "double-ecriture-reelle",
      "observed_wait_ms": 684,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140691161-0",
          "key": {
            "id": 1
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 1,
            "montant_centimes": 11000,
            "statut": "double_ecriture",
            "total_centimes": 11000
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140690593,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26452032\",\"26455560\"]",
            "ts_us": 1794140690593511,
            "ts_ns": 1794140690593511000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 741,
            "lsn": 26455560,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "zero-reel-double-ecrit",
      "observed_wait_ms": 658,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140692173-0",
          "key": {
            "id": 2
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 2,
            "montant_centimes": 0,
            "statut": "zero",
            "total_centimes": 0
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140691748,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26455928\",\"26455928\"]",
            "ts_us": 1794140691748473,
            "ts_ns": 1794140691748473000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 742,
            "lsn": 26455928,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "nullable-reel-avant-backfill",
      "observed_wait_ms": 670,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140693186-0",
          "key": {
            "id": 3
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 3,
            "montant_centimes": 30000,
            "statut": "avant_backfill",
            "total_centimes": null
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140692767,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26456064\",\"26456064\"]",
            "ts_us": 1794140692767141,
            "ts_ns": 1794140692767141000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 743,
            "lsn": 26456064,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "conflit-reel",
      "observed_wait_ms": 672,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140694194-0",
          "key": {
            "id": 1
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 1,
            "montant_centimes": 11000,
            "statut": "double_ecriture",
            "total_centimes": 12000
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140693929,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26456208\",\"26734432\"]",
            "ts_us": 1794140693929704,
            "ts_ns": 1794140693929704000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 755,
            "lsn": 26734432,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "correction-reelle",
      "observed_wait_ms": 651,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140695200-0",
          "key": {
            "id": 1
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 1,
            "montant_centimes": 11000,
            "statut": "reparee",
            "total_centimes": 11000
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140694909,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26734576\",\"26734576\"]",
            "ts_us": 1794140694909018,
            "ts_ns": 1794140694909018000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 756,
            "lsn": 26734576,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "backfill-reel",
      "observed_wait_ms": 699,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140696711-0",
          "key": {
            "id": 3
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 3,
            "montant_centimes": 30000,
            "statut": "avant_backfill",
            "total_centimes": 30000
          },
          "after_fields": [
            "id",
            "montant_centimes",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "montant_centimes",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140696036,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26734712\",\"26734712\"]",
            "ts_us": 1794140696036944,
            "ts_ns": 1794140696036944000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 757,
            "lsn": 26734712,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "zero-reel-sans-ancien-champ",
      "observed_wait_ms": 714,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140700234-0",
          "key": {
            "id": 2
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 2,
            "statut": "zero_apres_retrait",
            "total_centimes": 0
          },
          "after_fields": [
            "id",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140699879,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26734856\",\"26735584\"]",
            "ts_us": 1794140699879890,
            "ts_ns": 1794140699879890000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 759,
            "lsn": 26735584,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    },
    {
      "label": "nouveau-schema-apres-retrait",
      "observed_wait_ms": 87,
      "events": [
        {
          "stream": "schema_lab.public.commandes_progressives",
          "stream_id": "1794140700234-1",
          "key": {
            "id": 3
          },
          "op": "u",
          "before": null,
          "after": {
            "id": 3,
            "statut": "apres_retrait",
            "total_centimes": 30000
          },
          "after_fields": [
            "id",
            "statut",
            "total_centimes"
          ],
          "after_schema_fields": [
            {
              "field": "id",
              "type": "int32",
              "optional": false
            },
            {
              "field": "statut",
              "type": "string",
              "optional": false
            },
            {
              "field": "total_centimes",
              "type": "int32",
              "optional": true
            }
          ],
          "source": {
            "version": "3.7.0.Final",
            "connector": "postgresql",
            "name": "schema_lab",
            "ts_ms": 1794140699879,
            "snapshot": "false",
            "db": "cdc",
            "sequence": "[\"26734856\",\"26735680\"]",
            "ts_us": 1794140699879890,
            "ts_ns": 1794140699879890000,
            "schema": "public",
            "table": "commandes_progressives",
            "txId": 759,
            "lsn": 26735680,
            "xmin": null,
            "origin": null,
            "origin_lsn": null
          }
        }
      ]
    }
  ],
  "offline_tests": {
    "status": "passed",
    "docker_used": false,
    "legacy_after_rename": {
      "event": {
        "stream": "schema_lab.public.commandes_directes",
        "stream_id": "1794140687623-0",
        "key": {
          "id": 1
        },
        "op": "u",
        "before": null,
        "after": {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        "after_fields": [
          "id",
          "total_centimes",
          "statut"
        ],
        "after_schema_fields": [
          {
            "field": "id",
            "type": "int32",
            "optional": false
          },
          {
            "field": "total_centimes",
            "type": "int32",
            "optional": false
          },
          {
            "field": "statut",
            "type": "string",
            "optional": false
          }
        ],
        "source": {
          "version": "3.7.0.Final",
          "connector": "postgresql",
          "name": "schema_lab",
          "ts_ms": 1794140686996,
          "snapshot": "false",
          "db": "cdc",
          "sequence": "[null,\"26451656\"]",
          "ts_us": 1794140686996738,
          "ts_ns": 1794140686996738000,
          "schema": "public",
          "table": "commandes_directes",
          "txId": 739,
          "lsn": 26451656,
          "xmin": null,
          "origin": null,
          "origin_lsn": null
        }
      },
      "expected_error": {
        "type": "KeyError",
        "message": "'montant_centimes'"
      }
    },
    "new_only_replay_old_snapshot": {
      "event_refs": [
        "1794140681040-0",
        "1794140681040-1",
        "1794140681040-2"
      ],
      "expected_error": {
        "type": "KeyError",
        "message": "'total_centimes'"
      }
    },
    "new_only_nullable": {
      "event": {
        "stream": "schema_lab.public.commandes_progressives",
        "stream_id": "1794140693186-0",
        "key": {
          "id": 3
        },
        "op": "u",
        "before": null,
        "after": {
          "id": 3,
          "montant_centimes": 30000,
          "statut": "avant_backfill",
          "total_centimes": null
        },
        "after_fields": [
          "id",
          "montant_centimes",
          "statut",
          "total_centimes"
        ],
        "after_schema_fields": [
          {
            "field": "id",
            "type": "int32",
            "optional": false
          },
          {
            "field": "montant_centimes",
            "type": "int32",
            "optional": false
          },
          {
            "field": "statut",
            "type": "string",
            "optional": false
          },
          {
            "field": "total_centimes",
            "type": "int32",
            "optional": true
          }
        ],
        "source": {
          "version": "3.7.0.Final",
          "connector": "postgresql",
          "name": "schema_lab",
          "ts_ms": 1794140692767,
          "snapshot": "false",
          "db": "cdc",
          "sequence": "[\"26456064\",\"26456064\"]",
          "ts_us": 1794140692767141,
          "ts_ns": 1794140692767141000,
          "schema": "public",
          "table": "commandes_progressives",
          "txId": 743,
          "lsn": 26456064,
          "xmin": null,
          "origin": null,
          "origin_lsn": null
        }
      },
      "expected_error": {
        "type": "InvalidAmount",
        "message": "id=3: total_centimes est null"
      }
    },
    "conflict": {
      "event": {
        "stream": "schema_lab.public.commandes_progressives",
        "stream_id": "1794140694194-0",
        "key": {
          "id": 1
        },
        "op": "u",
        "before": null,
        "after": {
          "id": 1,
          "montant_centimes": 11000,
          "statut": "double_ecriture",
          "total_centimes": 12000
        },
        "after_fields": [
          "id",
          "montant_centimes",
          "statut",
          "total_centimes"
        ],
        "after_schema_fields": [
          {
            "field": "id",
            "type": "int32",
            "optional": false
          },
          {
            "field": "montant_centimes",
            "type": "int32",
            "optional": false
          },
          {
            "field": "statut",
            "type": "string",
            "optional": false
          },
          {
            "field": "total_centimes",
            "type": "int32",
            "optional": true
          }
        ],
        "source": {
          "version": "3.7.0.Final",
          "connector": "postgresql",
          "name": "schema_lab",
          "ts_ms": 1794140693929,
          "snapshot": "false",
          "db": "cdc",
          "sequence": "[\"26456208\",\"26734432\"]",
          "ts_us": 1794140693929704,
          "ts_ns": 1794140693929704000,
          "schema": "public",
          "table": "commandes_progressives",
          "txId": 755,
          "lsn": 26734432,
          "xmin": null,
          "origin": null,
          "origin_lsn": null
        }
      },
      "expected_error": {
        "type": "SchemaConflict",
        "message": "id=1: montant_centimes=11000 != total_centimes=12000"
      },
      "strict_full_replay_expected_error": {
        "type": "SchemaConflict",
        "message": "id=1: montant_centimes=11000 != total_centimes=12000"
      },
      "quarantine_alerts": [
        {
          "stream_id": "1794140694194-0",
          "id": 1,
          "type": "SchemaConflict",
          "message": "id=1: montant_centimes=11000 != total_centimes=12000"
        }
      ],
      "policy": "La ligne divergente est rejetée avec alerte ; le correctif CDC ultérieur est appliqué."
    },
    "zero_after_drop": {
      "event": {
        "stream": "schema_lab.public.commandes_progressives",
        "stream_id": "1794140700234-0",
        "key": {
          "id": 2
        },
        "op": "u",
        "before": null,
        "after": {
          "id": 2,
          "statut": "zero_apres_retrait",
          "total_centimes": 0
        },
        "after_fields": [
          "id",
          "statut",
          "total_centimes"
        ],
        "after_schema_fields": [
          {
            "field": "id",
            "type": "int32",
            "optional": false
          },
          {
            "field": "statut",
            "type": "string",
            "optional": false
          },
          {
            "field": "total_centimes",
            "type": "int32",
            "optional": true
          }
        ],
        "source": {
          "version": "3.7.0.Final",
          "connector": "postgresql",
          "name": "schema_lab",
          "ts_ms": 1794140699879,
          "snapshot": "false",
          "db": "cdc",
          "sequence": "[\"26734856\",\"26735584\"]",
          "ts_us": 1794140699879890,
          "ts_ns": 1794140699879890000,
          "schema": "public",
          "table": "commandes_progressives",
          "txId": 759,
          "lsn": 26735584,
          "xmin": null,
          "origin": null,
          "origin_lsn": null
        }
      },
      "bridge_output_centimes": 0,
      "naive_boolean_fallback_output": null,
      "naive_expression": "after.get('total_centimes') or after.get('montant_centimes')"
    },
    "old_real_cdc_replayed_locally": {
      "projection": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "independent_reference": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "validee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ]
    },
    "full_real_cdc_replayed_locally": {
      "direct_projection": [
        {
          "id": 1,
          "total_centimes": 10000,
          "statut": "controlee"
        },
        {
          "id": 2,
          "total_centimes": 20000,
          "statut": "validee"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "validee"
        }
      ],
      "progressive_projection": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 0,
          "statut": "zero_apres_retrait"
        },
        {
          "id": 3,
          "total_centimes": 30000,
          "statut": "apres_retrait"
        }
      ]
    },
    "same_sum_wrong_ids_synthetic_negative": {
      "candidate": [
        {
          "id": 1,
          "total_centimes": 11000,
          "statut": "reparee"
        },
        {
          "id": 2,
          "total_centimes": 30000,
          "statut": "zero_apres_retrait"
        },
        {
          "id": 3,
          "total_centimes": 0,
          "statut": "apres_retrait"
        }
      ],
      "sum_centimes": 41000,
      "exact_comparison_rejected": true,
      "provenance": "Permutation locale de projection ; ce n’est pas un événement CDC."
    }
  },
  "operations_observed": {
    "commandes_directes": {
      "r": 3,
      "u": 1
    },
    "commandes_progressives": {
      "r": 3,
      "u": 8
    }
  },
  "limits": [
    "Essai fonctionnel local avec données fictives ; pas un déploiement de production.",
    "Lecteur et projection Python en mémoire ; pas un consommateur durable avec reprise de position.",
    "Les anciens événements réellement capturés sont rejoués localement ; aucun rejeu de panne de connecteur n’est revendiqué.",
    "Le conflit volontaire est rejeté avec alerte ; une correction CDC ultérieure rétablit la valeur. Un lecteur strict s’arrête sur ce conflit.",
    "Deux secondes d’observation DDL et quarante-cinq secondes d’attente maximale sont des bornes du script, pas des garanties de débit ou de latence.",
    "Aucun Kafka, Schema Registry, test de charge, crash, failover, ordre perturbé, comparaison de versions ou compatibilité universelle de schéma testé.",
    "Le renommage conserve les centimes ; aucune conversion d’unité ou règle d’arrondi n’est testée."
  ],
  "finished_at_utc": "2026-11-08T12:25:01.169664+00:00"
}
