estimateBytes

The same size arithmetic writeInternal trusts for its size gate, computed without touching disk -- and, for ExportScope.Evidence, without reading a single attachment's bytes: attachment size comes from EvidenceBundleAttachment.sizeBytes alone. Safe to call from any thread (including Android's main thread) since it never writes a file and never opens an attachment.