v0.17.13 — transparency gate symmetry for orchestrated DINO-object path
Transparency fix surfaced from the same γ Scottish dogfood session as v0.17.12. Parallel superpowers:code-reviewer + Codex review of the orchestrated decompose pipeline found that the DINO-object path was missing the SAM-quality gate that the hint-entity path had. Result: low-confidence detections (sam_score < 0.70, bbox_fill < 0.30) were silently marked status: \"detected\" and overall success_rate: 1.0 — leaving calling agents with no signal to inspect the bad mask.
Real-world impact: the lanterns entity in our dogfood plan returned a mask of building structure (sam_score 0.609, bbox_fill 0.256) but reported success.
Fixed
scripts/claude_orchestrated_pipeline.py: extract DINO-object quality gate intocompute_quality_flags()helper; mirror the hint-path semantics (empty_mask,low_sam_score,low_bbox_fill,mask_outside_bbox) onto the DINO branch. Low-confidence object detections now correctly downgrade tostatus: \"suspect\"withquality_flags: [...], and the overall manifest status cascades to\"partial\"when any object is suspect.
Added
tests/test_quality_gate.py: 8 regression tests pinning the gate's threshold calibration (sam_score 0.70/bbox_fill 0.30/inside_ratio 0.60/pct 0.05) against the γ Scottish 9-entity baseline. 8 clean entities pass at sam ≥ 0.93 / fill ≥ 0.55; lanterns (sam 0.609 / fill 0.256) flips to suspect. Future refactors must update this test explicitly to change the gate.
Out of scope (deferred to v0.18)
The underlying multi-instance segmentation gap (single-bbox-per-label structural limit in detect_all_bboxes) is not fixed here — that's v0.18 scope. v0.17.13 only fixes the transparency bug so the gap is now visible to callers instead of silent.
Other v0.18 items already triaged from the same review:
inpaint_artwork(mask_path=...)mask overload — currently the tool only accepts a region-string and runs VLM bbox-detect → rectangular crop → feathered paste; cannot consume a precise mask.layers_redrawalpha-aware preprocessing — currently the prompt explicitly asks the model to fill the entire canvas, which causes hallucinated content for alpha-sparse layer inputs.layers_paste_backglue verb for "edit one layer of a foreign image, paste back preserving everything else."- Person-path quality gate (also missing — codex finding).
Install
```bash
pip install vulca==0.17.13
```
For the orchestrated decompose pipeline:
```bash
pip install "vulca[sam,mcp,layers]==0.17.13"
```
Provenance
Surfaced and reviewed in the same dogfood session as v0.17.12, by parallel superpowers:code-reviewer + Codex audit. Both reviewers independently identified the asymmetric gate as a transparency bug separate from the multi-instance architectural gap. The fix is ~30 LOC of code + 8 LOC of regression tests.