GeoLeaf Core API - v3.19.0
    Preparing search index...

    ⚠️ WHAT WAS REMOVED FROM HERE, AND WHAT WAS KEPT — measurement split an inventory line that announced "local images chain, 0 callers, delete".

    Removed on 08/08/2026, RESTORED on 04/09/2026 — and the removal's own motive is what restored it. getLocalImage(id) went because it was redundant with the base64 data-URL storeImageLocally also wrote into the POI's data: two read paths for one role, one never taken. That data-URL is now GONE — it was the defect, since it put the whole photo inside the feature's attribute and shipped it to the server inside the create. With the value in the attribute reduced to an opaque token, this read is no longer a second path: it is the ONLY one, and without it storeImageLocally becomes exactly the write-only store the paragraph below says must not exist.

    🛑 Kept, and the bet held — but not by the announced sprint. The motive was that the PRODUCER (storeImageLocally, repaired: the blob and uploaded: 0) is alive, and that removing its readers would do two damages:

    1. storeImageLocally would become write-only — written bytes nothing could re-read;
    2. the local_images store would have no purge left, while a live writer feeds it. Same error as removing the quota pre-check because its shell was dead, and on a field device the quota decides everything.

    ⚠️ THIS BLOCK SAID "none of the four has a production caller" and "all four are RESERVED for an upcoming batch, with addpoi/image-upload.ts → retryPendingUploads()" UNTIL 08/08/2026 — three statements, none yet true. ① The targeted batch closed on 05/08 without them: nothing had wired that chain. ② A LATER batch is what made it live, under another name and in another package — editor/persistence/image-store.ts → retryPendingImages(), armed by initImageUpload(). ③ addpoi no longer exists (merged into editor).

    State measured on 08/08/2026 — and this is where damage no. 2 had happened from the other end:

    Member Reachable through
    getPendingImages · updateImageUploadStatus editor (retryPendingImages), wired
    deleteLocalImage relayed on GeoLeaf.Storage.DB — public surface, not dead
    cleanUploadedImages 0 callers, 0 relay, 0 exposure until 08/08 — the purge existed and nobody could call it — relay added since

    The missing relay is in place, and retryPendingImages calls the purge after each acknowledgement. The bet therefore holds — but it took three sprint closures for someone to check that it did.

    interface ImagesDBInstance {
        _db: IDBDatabase | null;
        init(db: IDBDatabase): ImagesDBInstance;
        _ensureInitialized(): void;
        storeImageLocally(imageData: LocalImageData): Promise<void>;
        getLocalImage(id: string): Promise<LocalImageRecord | null>;
        getPendingImages(): Promise<LocalImageRecord[]>;
        updateImageUploadStatus(
            id: string,
            status: ImageUploadStatus,
        ): Promise<void>;
        bindLocalImage(id: string, owner: ImageOwner): Promise<void>;
        deleteLocalImage(id: string): Promise<void>;
        cleanUploadedImages(): Promise<number>;
        getImageStats(): Promise<ImageStats>;
    }
    Index
    _db: IDBDatabase | null