Add typed blend range access and blend-if compositing
Add typed blend range objects, persist them on layers, and apply blend-if during compositing.
psd-tools-blend-range-api
Normalized profile
What this task asks for
Add typed blend range objects, persist them on layers, and apply blend-if during compositing. Every layer in a PSD file stores blend range data (the "Blend If" sliders in Photoshop) as raw uint16 tuples. There is no typed API to read or modify these values, and the compositing engine ignores them entirely. `Layer` gains a `blend_ranges` property that persists through save. Writing `LayerBlendingRanges` must validate that `composite_ranges` has exactly 2 pairs and each channel range has exactly 2 pairs, raising `ValueError` otherwise.
Intent
- feature implementation
- data transformation
Work surfaces
- library API
Technology
- psd-tools
Expected artifacts
- repository patch
What makes it difficult
- strict behavioral compatibility or exact-output validation
Published evidence
Model × harness outcomes
Counts are tied to these exact configurations. Harnesses are not treated as equivalent across benchmarks.
- Models
- 13
- Configurations
- 41
- Trials
- 164
Showing 41 of 41 configurations
| Model | Harness | Effort | Result | Passes |
|---|---|---|---|---|
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | low | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | medium | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| claude-fable-5vertex_ai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | low | All passed | 4/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | medium | Mixed | 3/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | high | Mixed | 3/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| claude-opus-4-8anthropic | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| claude-sonnet-4-6anthropic | mini-swe-agentpublished configuration | high | No passes | 0/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | low | Mixed | 3/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | medium | Mixed | 2/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| claude-sonnet-5anthropic | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| gemini-3-1-pro-previewvertex_ai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| gemini-3-5-flashvertex_ai | mini-swe-agentpublished configuration | medium | All passed | 4/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | high | Mixed | 3/4 |
| glm-5-2zai | mini-swe-agentpublished configuration | max | Mixed | 3/4 |
| gpt-5-4openai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | low | Mixed | 2/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | medium | All passed | 4/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| gpt-5-5openai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | medium | No passes | 0/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-6-lunaopenai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | low | No passes | 0/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | medium | Mixed | 3/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | high | Mixed | 2/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-6-solopenai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | low | Mixed | 2/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | medium | Mixed | 3/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | high | All passed | 4/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | xhigh | All passed | 4/4 |
| gpt-5-6-terraopenai | mini-swe-agentpublished configuration | max | All passed | 4/4 |
| kimi-k2-7-codeopenrouter | mini-swe-agentpublished configuration | default | Mixed | 2/4 |