---
suivi: 1309
date: 2026-08-13
sujet: diag_liberation_rg
chantier: marches_compta
type: diag
statut: poussé
hash: 6b720a92
fichiers:
  - tools/diag/diag_liberation_rg_1309.php
---

## PROMPT ENVOYÉ

PHASE 1 DIAG #1309 — libération retenue de garantie. Lecture seule.
Seuls fichiers : tools/diag/ + docs/suivi/. Aucune écriture métier.
Décisions Robin déjà prises (dates programme, HT obligatoire, pas de TVA, justificatif SP,
états Demandée/Payée/Refusée, pas d’écriture Sage, page regroupement à terme).

## SYNTHÈSE

### Fiches lues
- `#1293` RG libérée = 0 + mention ; preuve FA202605418 (TVA sur net) ; reste à payer + RG théorique.
- `#1302` / `#1304` unités HT ; écart RG MCH-2026-033 ~217,14 ; marché 109 RG 7 266,61 / 2 461,03.
- `#1268` FIFO CIE supprimé — ne pas reproposer sans justification.
- `#1234` piège admin Gate::before / peuplement GS_*.

### Verdict mécanisme existant
Colonnes `statut`/`date_liberation`/`liberateur_id` présentes, **jamais écrites** vers `liberee`
(seulement reset à `retenue`/null). COUNT liberee = 0 (stub local ; à confirmer prod).
**MRES ne filtre pas le statut** → libérer une ligne serait **inerte** pour l’onglet Retenues.
Granularité binaire par facture ≠ libération partielle → **nouvelle table demandes recommandée (option a)**.

### Dates
`date_livraison_prevue` = livraison commerciale — **ne pas détourner**.
Pas de colonne réception / démarrage travaux. `programme_etapes` = jalons chronologie (autre sémantique).
Onglet « Dates clés » → `Programmes/Edit.vue` (pas CHANTIER).

### Écran / données prod
Script exécuté sur stub local `erp_immo_migrate_1113` (schéma OK, **0 marché**).
Mesures 109 / anomalies / volume / groupes → **à rejouer en prod** (`RESULTAT 0 NE VALIDE RIEN`).

## DÉPLOIEMENT-TEST

```bash
git pull origin main
php -d display_errors=1 tools/diag/diag_liberation_rg_1309.php
```

## LEÇON

Des colonnes « libération » sans lecteur filtrant ni écrivain = fausse piste : on croit le modèle prêt,
alors que le cumul principal ignore le statut et qu’une libération partielle ne mappe aucune ligne.
