Left open by #226, which made boolmesh's declared scratch an upper bound for single booleans: `ScratchRequirement::Affine` = base + per-triangle × n + per-worker × workers. Two batch cases aren't covered by measurement yet:
- Parallel batch: with both `parallel` and `parallel-batch`, a worker waiting in a join can steal another pair's boolean, so more booleans can be in flight than there are workers. The per-worker term (base + 16 KiB) is reasoned, not measured.
- `union_many` intermediates: intermediate results can have more triangles than the original inputs, so a bound in input triangles may not hold.
Also: a one-thread `CpuExecution` installs no pool, so the provider runs on the ambient pool. #226's provider-side re-check catches this, but only when a budget is set.
Done when
Left open by #226, which made boolmesh's declared scratch an upper bound for single booleans: `ScratchRequirement::Affine` = base + per-triangle × n + per-worker × workers. Two batch cases aren't covered by measurement yet:
Also: a one-thread `CpuExecution` installs no pool, so the provider runs on the ambient pool. #226's provider-side re-check catches this, but only when a budget is set.
Done when