v0.3.3-pre.009-fix.005

This commit is contained in:
2026-08-30 15:46:03 +02:00
parent 5f1938c7c3
commit ba2e52f841
5 changed files with 183 additions and 15 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: docs/validation/020-V0_3_3_STORE_POSTGRES_RAW_TRANSACTION.md -->
<!-- version: 18 -->
<!-- version: 19 -->
# Validation `0.3.3` — Store/PostgreSQL RawTransaction vertical slice
@@ -649,7 +649,11 @@ cap 500/1000 dans Store pagination
- gate Cargo standard de `pre.009-fix.003` du 2026-08-30 : PASS complet ;
- live PostgreSQL réel `pre.009-fix.003` : PostgreSQL 17 joint puis FAIL précisément sur `constraints/006_ck_ksp_raw_transactions_slot.sql` ;
- diagnostic : le CHECK est appliqué, mais la forme catalogue PostgreSQL peut rendre la borne `NUMERIC` hors bigint comme littéral quoté `'18446744073709551615'::numeric`, tandis que l'ancien normaliseur conservait les quotes ;
- `pre.009-fix.004` corrige uniquement cette équivalence catalogue ciblée et ajoute un canari qui préserve les quotes des littéraux texte ; aucune ressource SQL/migration n'est modifiée.
- `pre.009-fix.004` corrige l'équivalence catalogue des littéraux `NUMERIC` quotés et ajoute un canari qui préserve les quotes des littéraux texte ; aucune ressource SQL/migration n'est modifiée ;
- gate Cargo standard `pre.009-fix.004` du 2026-08-30 : PASS complet ;
- live PostgreSQL réel `pre.009-fix.004` : le CHECK `slot` passe désormais et l'échec se déplace précisément sur `constraints/007_ck_ksp_raw_transactions_block_time.sql` ;
- diagnostic : `block_time_unix_millis` est `BIGINT`, et la reconstruction catalogue peut typer une grande constante entière sous forme de littéral quoté suivi d'un cast intégral ; la normalisation ciblée de `fix.004` ne couvrait encore que `::numeric` ;
- `pre.009-fix.005` généralise uniquement cette canonicalisation aux casts numériques/intégraux PostgreSQL (`numeric`, `bigint`, `integer`, `smallint`, `int8`, `int4`, `int2`) sans retirer les quotes des littéraux textuels.
### `pre.010`
@@ -779,7 +783,17 @@ cargo check -p ksp-store-lib --no-default-features
- [PASS opérateur] gate standard `pre.009-fix.003` intégralement propre le 2026-08-30 ;
- [DIAGNOSTIC LIVE] PostgreSQL 17 identifie exactement `constraints/006_ck_ksp_raw_transactions_slot.sql` comme ressource incompatible immédiatement après application ;
- [FIX statique] l'introspection normalise désormais uniquement les littéraux numériques quotés suivis de `::numeric`, forme que le déparseur PostgreSQL peut produire pour `NUMERIC` hors plage bigint ;
- [PASS statique] le canari couvre `'18446744073709551615'::numeric` et vérifie que les littéraux texte comme `'full'::text` conservent leurs quotes ;
- [PASS statique] aucun fichier SQL V000/V001, ordre de ressource ou checksum de migration n'est modifié ;
- [FIX] l'introspection normalise les littéraux numériques quotés suivis de `::numeric`, forme reconstruite pour la borne `NUMERIC` hors plage bigint ;
- [PASS] le canari couvre `'18446744073709551615'::numeric` et vérifie que les littéraux texte comme `'full'::text` conservent leurs quotes ;
- [PASS] aucun fichier SQL V000/V001, ordre de ressource ou checksum de migration n'est modifié ;
- [PASS opérateur] gate Cargo complet `pre.009-fix.004` fourni le 2026-08-30 ;
- [DIAGNOSTIC LIVE] le CHECK `slot` est désormais accepté ; PostgreSQL 17 poursuit V001 puis s'arrête sur `constraints/007_ck_ksp_raw_transactions_block_time.sql`.
### `pre.009-fix.005` — canonicalisation des littéraux numériques/intégraux typés
- [DIAGNOSTIC] `block_time_unix_millis` est `BIGINT` et sa borne haute `253402300799999` est une constante entière large ; le catalogue reconstruit les expressions, il ne restitue pas nécessairement le texte SQL source ;
- [FIX statique] le normaliseur retire quotes + cast uniquement pour un littéral ASCII intégral (`[+-]?[0-9]+`) suivi de `::numeric`, `::bigint`, `::integer`, `::smallint`, `::int8`, `::int4` ou `::int2` ;
- [PASS statique] le canari couvre explicitement le CHECK `block_time` sous forme `'253402300799999'::bigint` ainsi qu'un alias `::int8` ;
- [PASS statique] les quotes des littéraux texte restent préservées et aucune comparaison métier n'est relâchée ;
- [PASS statique] aucune ressource SQL V000/V001 ni checksum de migration n'est modifié ;
- [À FAIRE] gate Cargo opérateur complet puis live PostgreSQL `postgres_raw_transaction_live`.