# Segmentation Return Spec

每个 case 的返回文件建议放在原 case 的 `segmentation_return/` 或对应 handoff pack 的 `returned/` 目录下。

## Required

```text
segmentation_return/
  reviewed_mask.png
  review.json
  overlay_review.png
```

## `review.json`

```json
{
  "case_id": "uav_road_debris_fallen_cargo_0006_single_source_day",
  "review_status": "pass_to_final_truth | needs_manual_fix | reject_for_segmentation",
  "mask_type": "binary_instance_mask | semantic_mask | empty_negative_mask",
  "class_name": "road_debris",
  "source_image": "../outputs/generated_candidate.png",
  "reviewed_mask": "reviewed_mask.png",
  "overlay_review": "overlay_review.png",
  "checks": {
    "mask_matches_image_size": true,
    "target_visible": true,
    "mask_boundary_reasonable": true,
    "no_major_leakage": true,
    "no_unrelated_objects_included": true
  },
  "notes": "Short human-readable notes."
}
```

## Rules

- Mask must match the generated image resolution exactly.
- Use white foreground on black background for binary masks unless the specific tool requires another format.
- Do not change the source image.
- Do not invent labels not visible in the image.
- Do not mark display-only / rejected / visual-gate-failed cases.
- If a case fails, return `review_status=reject_for_segmentation` with reason.

## After Return

SVGE side will rebuild:

1. `final_json.json`
2. YOLO labels
3. QA overlay / crop
4. batch export
5. validation report

Segmentation return alone is not `training_ready_v0`.
