Surfaced by CodeRabbit on #48 (providers/slack.rs ~L71-165). Pre-existing — engine original providers/slack.rs uses ? at the same sites before its state.save; ported unchanged.
checked_execute records billable requests and cost into SyncState before returning an error; the tick's ? returns before state.save, so the daily budget never advances. A backfill that fails repeatedly keeps calling SLACK_SEARCH_MESSAGES unaccounted.
Fix: run the body, then always save (as run_incremental_sync in orchestrator.rs already does on both paths).
Surfaced by CodeRabbit on #48 (
providers/slack.rs~L71-165). Pre-existing — engine originalproviders/slack.rsuses?at the same sites before itsstate.save; ported unchanged.checked_executerecords billable requests and cost intoSyncStatebefore returning an error; the tick's?returns beforestate.save, so the daily budget never advances. A backfill that fails repeatedly keeps callingSLACK_SEARCH_MESSAGESunaccounted.Fix: run the body, then always save (as
run_incremental_syncinorchestrator.rsalready does on both paths).