⚠️ CE QUE LA TÂCHE 3.13 A RETIRÉ D'ICI, ET CE QU'ELLE A GARDÉ — la mesure a scindé une
ligne d'inventaire qui annonçait « chaîne des images locales, 0 appelant, à supprimer ».
Retiré : getLocalImage(id). Son unique consommateur était
addpoi/image-upload.ts → getLocalImageUrl(), lui-même redondant : storeImageLocally
écrit AUSSI une data-URL base64 dans la donnée du POI, « so images display in popups/panels
without IndexedDB retrieval ». Deux chemins de lecture pour un rôle, dont un jamais pris.
🛑 Gardé, et le pari a été tenu — mais pas par le sprint annoncé. Le motif du 3.13 était
que le PRODUCTEUR (storeImageLocally, réparé à 3.6 : le blob et uploaded: 0) est vivant,
et que retirer ses lecteurs ferait deux dégâts :
storeImageLocally deviendrait write-only — des octets écrits que plus rien ne
pourrait relire, soit un compteur C2 ouvert à la place d'un C1 ;
le store local_images n'aurait plus aucune purge, alors qu'un écrivain vivant
l'alimente. C'est la même erreur que retirer le pré-contrôle de quota parce que sa
coquille était morte, et sur un appareil de terrain le quota décide de tout.
⚠️ CE BLOC A DIT « les quatre n'ont pas d'appelant de production » et « les quatre sont
RÉSERVÉS AU SPRINT 4 (4.5), avec addpoi/image-upload.ts → retryPendingUploads() »
JUSQU'AU 08/08/2026 — trois énoncés, aucun encore vrai. ① Le Sprint 4 s'est clos le
05/08 sans eux : 4.5 n'a jamais câblé cette chaîne. ② C'est le Sprint 5 qui l'a rendue
vivante, sous un autre nom et dans un autre paquet —
editor/persistence/image-store.ts → retryPendingImages(), armé par initImageUpload().
③ addpoin'existe plus (fusionné dans editor, Sprint 5).
État mesuré le 08/08/2026 — et c'est là que le dégât n° 2 s'était réalisé par l'autre bout :
Membre
Atteignable par
getPendingImages · updateImageUploadStatus
editor (retryPendingImages), câblés
deleteLocalImage
relayé sur GeoLeaf.Storage.DB — surface publique, pas du mort
cleanUploadedImages
0 appelant, 0 relais, 0 exposition jusqu'au 08/08 — la purge existait et personne ne pouvait l'appeler (B-190)
Le relais manquant est posé, et retryPendingImages appelle la purge après chaque
acquittement. Le pari du 3.13 tient donc — mais il a fallu trois clôtures de sprint pour
que quelqu'un vérifie qu'il tenait.
⚠️ CE QUE LA TÂCHE 3.13 A RETIRÉ D'ICI, ET CE QU'ELLE A GARDÉ — la mesure a scindé une ligne d'inventaire qui annonçait « chaîne des images locales, 0 appelant, à supprimer ».
Retiré :
getLocalImage(id). Son unique consommateur étaitaddpoi/image-upload.ts→getLocalImageUrl(), lui-même redondant :storeImageLocallyécrit AUSSI une data-URL base64 dans la donnée du POI, « so images display in popups/panels without IndexedDB retrieval ». Deux chemins de lecture pour un rôle, dont un jamais pris.🛑 Gardé, et le pari a été tenu — mais pas par le sprint annoncé. Le motif du 3.13 était que le PRODUCTEUR (
storeImageLocally, réparé à 3.6 : le blob etuploaded: 0) est vivant, et que retirer ses lecteurs ferait deux dégâts :storeImageLocallydeviendrait write-only — des octets écrits que plus rien ne pourrait relire, soit un compteur C2 ouvert à la place d'un C1 ;local_imagesn'aurait plus aucune purge, alors qu'un écrivain vivant l'alimente. C'est la même erreur que retirer le pré-contrôle de quota parce que sa coquille était morte, et sur un appareil de terrain le quota décide de tout.⚠️ CE BLOC A DIT « les quatre n'ont pas d'appelant de production » et « les quatre sont RÉSERVÉS AU SPRINT 4 (4.5), avec
addpoi/image-upload.ts→retryPendingUploads()» JUSQU'AU 08/08/2026 — trois énoncés, aucun encore vrai. ① Le Sprint 4 s'est clos le 05/08 sans eux : 4.5 n'a jamais câblé cette chaîne. ② C'est le Sprint 5 qui l'a rendue vivante, sous un autre nom et dans un autre paquet —editor/persistence/image-store.ts→retryPendingImages(), armé parinitImageUpload(). ③addpoin'existe plus (fusionné danseditor, Sprint 5).État mesuré le 08/08/2026 — et c'est là que le dégât n° 2 s'était réalisé par l'autre bout :
getPendingImages·updateImageUploadStatuseditor(retryPendingImages), câblésdeleteLocalImageGeoLeaf.Storage.DB— surface publique, pas du mortcleanUploadedImagesLe relais manquant est posé, et
retryPendingImagesappelle la purge après chaque acquittement. Le pari du 3.13 tient donc — mais il a fallu trois clôtures de sprint pour que quelqu'un vérifie qu'il tenait.