diff --git a/scripts/repair-apple-health-distance.ts b/scripts/repair-apple-health-distance.ts index be77a3b8f..1843f5362 100644 --- a/scripts/repair-apple-health-distance.ts +++ b/scripts/repair-apple-health-distance.ts @@ -84,6 +84,7 @@ async function main(): Promise { let totalUpdated = 0; let totalSkipped = 0; let refused = 0; + let wouldRefuse = 0; let rollupsPending = 0; for (const plan of plans) { @@ -104,7 +105,11 @@ async function main(): Promise { continue; } - totalRepairable += plan.repairable.length; + // An account with one out-of-range candidate is refused whole, so its + // rows are not "would be repaired" — counting them promised work the + // --apply run then declined to do. + if (plan.outOfRange.length > 0) wouldRefuse += 1; + else totalRepairable += plan.repairable.length; const first = plan.repairable[0]; const last = plan.repairable[plan.repairable.length - 1]; console.log( @@ -130,7 +135,8 @@ async function main(): Promise { } if (plan.outOfRange.length > 0) { console.log( - " ! this account will be REFUSED — see the reason under --apply", + " ! this account will be REFUSED whole — its rows are not in " + + "the count below; see the reason under --apply", ); } @@ -166,9 +172,13 @@ async function main(): Promise { apply ? `\nDone. ${totalUpdated} row(s) repaired, ${totalSkipped} skipped, ` + `${refused} account(s) refused.` - : `\nDry run: ${totalRepairable} row(s) would be repaired. ` + - "Read the worked examples above and decide before re-running with " + - "--apply.", + : `\nDry run: ${totalRepairable} row(s) would be repaired` + + (wouldRefuse > 0 + ? `, ${wouldRefuse} account(s) would be refused (their rows are ` + + "not in that number)" + : "") + + ". Read the worked examples above and decide before re-running " + + "with --apply.", ); if (rollupsPending > 0) { diff --git a/src/lib/measurements/repair-apple-health-distance.ts b/src/lib/measurements/repair-apple-health-distance.ts index bd2947586..19cc9364c 100644 --- a/src/lib/measurements/repair-apple-health-distance.ts +++ b/src/lib/measurements/repair-apple-health-distance.ts @@ -259,8 +259,9 @@ function outOfRangeRefusal(plan: AccountRepairPlan, factor: number): string { `leave the plausible range after x${factor}, so these rows are not the ` + "1000x class — the account was most likely re-imported on the fixed " + "build, or its archive was never in the affected unit. Nothing written. " + - "Check the dry run's worked examples against the account's Health app " + - "before forcing anything." + "There is no override: check the dry run's worked examples against the " + + "account's Health app, and if the archive really was in another unit, " + + "re-run with the matching --unit." ); }