Harden update 10011: empty-chunk guard and NULL-only backfill
## Problem
Follow-up to:
#3586294+s
Parent:
#3586310+s
_**This issue should be verified prior to working on it to make sure it is valid.**_
This should be fixed here:
#3586218+s
Two robustness issues in `ai_context_update_10011()`:
- If items are deleted while the update runs, the batch query eventually returns `[]` while `$sandbox['progress'] < $sandbox['max']`, so `#finished` never reaches 1 — an infinite update loop.
- The backfill re-infers over explicit values rather than restricting to NULL rows, so a re-run would flip an explicitly-FALSE, no-custom-scope child back to TRUE (the idempotency test only covers the TRUE case).
## Proposed resolution
Inside the batch, add `if ($ids === []) { $sandbox['#finished'] = 1; return ...; }`, and restrict the backfill query to rows where `inherit_parent_scope` is NULL. Extend the idempotency test to cover the explicit-FALSE case.
## AI usage
- [x] AI assisted issue
issue