Skip to content

v0.17.13 — transparency gate symmetry for orchestrated DINO-object path

Choose a tag to compare

@yha9806 yha9806 released this 25 Apr 15:37

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 into compute_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 to status: \"suspect\" with quality_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_redraw alpha-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_back glue 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.