poolServiceLines function
One detail line per pool _poolServiceIsDegraded counts — the pool
named, then how this server failed it ("Sapling: this server refuses to
serve it") — and NOTHING for a pool served normally. In the core's field
order (Sapling, Orchard, Ironwood: SUBTREE_ROOT_POOLS' wire order). This
is the money fact the headline cannot carry (§4m #10): WHICH pool's funds
cannot be spent through this server, so "the balance is a floor" has a
subject. The pool names are l10n keys of their own (proper nouns a locale
may keep or transliterate), never Dart literals.
Implementation
List<String> poolServiceLines(
WalletLocalizations l10n,
PoolServiceReport report,
) => [
for (final (pool, service) in [
(l10n.walletPoolSapling, report.sapling),
(l10n.walletPoolOrchard, report.orchard),
(l10n.walletPoolIronwood, report.ironwood),
])
if (_poolServiceIsDegraded(service)) ?_poolServiceLine(l10n, pool, service),
];