AeroFTP classifies each supported provider with a Coverage Class (A, B, C, D) and a numeric score out of 100. The rubric is deterministic, speed-independent, and designed to reflect the end-to-end experience of running production workloads on AeroFTP + provider.
| Class | Label | Score | Meaning |
|---|---|---|---|
| A | Primary | 90-100 | Full matrix green, ready for critical workloads |
| B | Extended | 70-89 | Core operations solid, minor gaps on advanced features |
| C | Compatible | 50-69 | Base works, known non-blocking limitations |
| D | Observer | < 50 | Partially covered, not recommended for production |
| Dimension | Weight | What it measures |
|---|---|---|
| Core Operations | 30 | connect, ls, put, get, stat, mkdir, rm, mv |
| Data Integrity | 20 | SHA-256 end-to-end + hashsum parity |
| Navigation & Discovery | 15 | tree, find, head, cat, recursive stat |
| Advanced Features | 15 | share links, trash/restore, versions, server-side copy, quota detail |
| Encoding Robustness | 10 | unicode, spaces, special characters in file names |
| Reconciliation | 10 | check, sync-doctor, reconcile post-sync matches |
Speed is deliberately excluded: throughput depends on distance from the provider endpoint and on local network conditions, not on the client implementation.
Scores below reflect a full encoding sweep completed 2026-04-18 on live accounts for each provider, with SHA-256 end-to-end verification on 1 MB round-trip. Matrix refresh 2026-04-19:
cmd_check, cmd_reconcile, and cmd_sync now delegate to sync_core::scan_remote_tree + compare_trees, which track relative paths via the scan queue state instead of stripping the remote prefix from provider-returned absolute paths.⏳ pending to ✅ after tree --depth 2 and find returned the expected structure on live accounts.not exposed by API / not applicable entries use - instead of ⚠️ to avoid confusion with real partial-pass warnings.| Provider | Protocol | Class | Score | Integrity | Navigation | Advanced | Encoding | Reconcile |
|---|---|---|---|---|---|---|---|---|
| Dropbox API | A | 95 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Infomaniak API | A | 93 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Native API | A | 92 | ✅ | ✅ | ✅ | ✅ 10/10 | ✅ | |
| Native API | A | 92 | ✅ | ✅ | ✅ | ✅ 9/10 | ✅ | |
| WebDAV (Nextcloud) | A | 90 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| SFTP (NAS) | A | 90 | ✅ | ✅ | ✅ | ✅ | ✅ | |
| S3 | A | 90 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | A | 90 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 Gateway | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 89 | ✅ | ✅ | ✅ | ◑ 6/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 (S5) | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| S3 | B | 88 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| WebDAV | B | 86 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ | |
| WebDAV | B | 85 | ✅ | ✅ | ✅ | ◑ 8/10 | ✅ | |
| WebDAV | B | 83 | ✅ | ✅ | ✅ | ◑ 7/10 | ✅ | |
| WebDAV (seafdav) | B | 78 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| WebDAV | B | 77 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| WebDAV | B | 76 | ✅ | ✅ | ⏳ | ⏳ | ✅ | |
| S3 | B | 73 | ✅ | ✅ | ✅ | ◑ 5/10 | ✅ |
Legend: ✅ full pass · ◑ partial pass · ⏳ pending benchmark · ❌ fail · - not applicable
& ' # % ( ) +.???? in the listing (server-side transliteration).% signature mismatch, + reject, & / ' XML split in listing, # URL fragment truncation). These are AeroFTP client issues, not provider issues, and are tracked for fix.⚠️ requires explicit path note referred to a client-side scan bug that has been eliminated; integrity of the transferred data was never affected.tree + find validated the full recursive surface.s3.rs debug preview now uses char-aware truncation instead of a raw byte slice). It retains the S3-family encoding gaps on %, &, ', # which affect the whole S3 column and are tracked separately.◑ (partial) is used for real partial passes (e.g. encoding 5-9/10). - is used for N/A / not exposed by API / not applicable structural gaps - these are not errors and should not be read as warnings.Several additional providers (pCloud, Filen, Internxt, MEGA, 4shared, Zoho WorkDrive, Drime, FileLu WebDAV, Box, OneDrive, Google Drive, Jottacloud) are covered in internal test runs with mixed status. They will enter the public matrix once their scoring stabilizes across the full rubric.
2026-04-19 note — the internal sweep validated ls / on 25 of 31 vault profiles post-fix batch. Jottacloud is now fully re-runnable (grant_type=refresh_token lowercase fix) but not yet scored on the full rubric.
The matrix is revisited after every significant test run consolidation. Scores may change when:
See methodology for the reproducibility protocol.