Summary
PR #110 marked openai.images.generate as batchCapable: true so the concurrency detector would not flag Array.from({length: n}).map(() => images.generate(...)) patterns. But this conflates two distinct API shapes:
- True batch endpoints (
/v1/batches, messages.batches.create, embedding multi-input) — accept an array of inputs in a single request.
- Inline parallelism via API parameter (
images.generate({ n: 4 })) — single request with a count parameter that produces N results.
The current batchCapable: true on images.generate is semantically loose. It works for the suppression we needed but blurs a meaningful distinction.
What to do
- Add a new
AstCallMatch field: inlineParallelCapable?: boolean.
- Reclassify
openai.images.generate from batchCapable to inlineParallelCapable in src/scanner/fingerprints/openai.json (or wherever the fingerprint lives).
- Update the concurrency detector's
BOUNDED_REPLICATION guard logic to suppress on inlineParallelCapable as well as the existing Array.from({length:N}) regex check.
- Update the batch detector to keep firing for actual batch endpoints only.
Acceptance criteria
Reference
Memory: a3_a5_pr_status.md — "batchCapable: true on images.generate is semantically loose…"
Summary
PR #110 marked
openai.images.generateasbatchCapable: trueso the concurrency detector would not flagArray.from({length: n}).map(() => images.generate(...))patterns. But this conflates two distinct API shapes:/v1/batches,messages.batches.create, embedding multi-input) — accept an array of inputs in a single request.images.generate({ n: 4 })) — single request with a count parameter that produces N results.The current
batchCapable: trueonimages.generateis semantically loose. It works for the suppression we needed but blurs a meaningful distinction.What to do
AstCallMatchfield:inlineParallelCapable?: boolean.openai.images.generatefrombatchCapabletoinlineParallelCapableinsrc/scanner/fingerprints/openai.json(or wherever the fingerprint lives).BOUNDED_REPLICATIONguard logic to suppress oninlineParallelCapableas well as the existingArray.from({length:N})regex check.Acceptance criteria
batchCapablefor real batch APIs,inlineParallelCapablefor n/count parameters).Reference
Memory:
a3_a5_pr_status.md— "batchCapable: trueonimages.generateis semantically loose…"