wallet costs calls storage.prepare() without a context, which falls back to smart provider selection and pings endorsed providers — so the command hard-fails with StorageContext smartSelect failed: No endorsed provider available whenever none is reachable, even though cost estimation needs no new provider at all.
It also undercounted: datasets sharing a provider were collapsed, but every dataset has its own rail and lockup. Live check on Calibration: 1 GiB / 1 month showed 0.1058 USDFC/month; per-dataset costing gives the correct 0.1322.
Fix: build contexts from the wallet's own live, managed, non-terminating datasets (one createContext per dataset — the plural createContexts rejects same-provider datasets) and fall back to default selection only when the wallet has none.
wallet costscallsstorage.prepare()without a context, which falls back to smart provider selection and pings endorsed providers — so the command hard-fails withStorageContext smartSelect failed: No endorsed provider availablewhenever none is reachable, even though cost estimation needs no new provider at all.It also undercounted: datasets sharing a provider were collapsed, but every dataset has its own rail and lockup. Live check on Calibration: 1 GiB / 1 month showed 0.1058 USDFC/month; per-dataset costing gives the correct 0.1322.
Fix: build contexts from the wallet's own live, managed, non-terminating datasets (one
createContextper dataset — the pluralcreateContextsrejects same-provider datasets) and fall back to default selection only when the wallet has none.