{
  "mode": "v02_no_additional_edit",
  "actions": [],
  "skipped_actions": [],
  "gates": {
    "pred_count": 3,
    "template_count": 4,
    "count_close": true,
    "assignment_mean_confidence": 0.4982639082174634,
    "assignment_min_confidence": 0.3749997934879189,
    "confident": true,
    "contact_cost_delta": 0.0,
    "contact_better": false
  },
  "assignment": {
    "mean_confidence": 0.4982639082174634,
    "min_confidence": 0.3749997934879189,
    "pairs": [
      {
        "pred_id": 0,
        "pred_name": "door",
        "template_id": 1,
        "template_name": "link_0",
        "cost": 0.45,
        "confidence": 0.3749997934879189
      },
      {
        "pred_id": 1,
        "pred_name": "base",
        "template_id": 0,
        "template_name": "base",
        "cost": 0.0,
        "confidence": 0.7447921376765525
      },
      {
        "pred_id": 2,
        "pred_name": "door",
        "template_id": 2,
        "template_name": "link_1",
        "cost": 0.45,
        "confidence": 0.3749997934879189
      }
    ],
    "cost_matrix": [
      [
        1.0,
        0.45,
        0.45,
        1.0
      ],
      [
        0.0,
        1.0,
        1.0,
        0.45
      ],
      [
        1.0,
        0.45,
        0.45,
        1.0
      ]
    ],
    "plan": [
      [
        0.0008679770521550556,
        0.12499993116175706,
        0.12499993116175706,
        0.08246549395531066
      ],
      [
        0.24826404589568984,
        1.3767648588714518e-07,
        1.3767648588714518e-07,
        0.08506901208937866
      ],
      [
        0.0008679770521550556,
        0.12499993116175706,
        0.12499993116175706,
        0.08246549395531066
      ]
    ]
  },
  "contact_assignment": {
    "baseline_cost": 0.2300089766493295,
    "contact_ot_cost": 0.2300089766493295,
    "cost_delta": 0.0,
    "selected_pairs": [
      {
        "parent_id": 1,
        "parent_name": "base",
        "child_id": 0,
        "child_name": "door",
        "template_joint_id": 1,
        "template_joint_name": "link_0",
        "template_joint_type": "revolute",
        "template_axis": [
          0.0,
          -1.0,
          0.0
        ],
        "cost": 0.1600070600826744,
        "features": {
          "gap": 0.0,
          "contact_overlap": 0.13777823294268482,
          "pivot_child_surface": 0.0,
          "pivot_parent_surface": 0.00011766804457318733,
          "pivot_contact": 5.8834022286593665e-05,
          "axis_principal_error": 0.0,
          "relation": 0.0,
          "semantic": 1.0,
          "type": 0.0,
          "axis": 0.0
        }
      },
      {
        "parent_id": 1,
        "parent_name": "base",
        "child_id": 2,
        "child_name": "door",
        "template_joint_id": 2,
        "template_joint_name": "link_1",
        "template_joint_type": "revolute",
        "template_axis": [
          0.0,
          0.0,
          1.0
        ],
        "cost": 0.3000108932159846,
        "features": {
          "gap": 0.0,
          "contact_overlap": 0.8356222976189915,
          "pivot_child_surface": 0.0,
          "pivot_parent_surface": 0.00018155359974299557,
          "pivot_contact": 9.077679987149778e-05,
          "axis_principal_error": 0.0,
          "relation": 0.0,
          "semantic": 1.0,
          "type": 0.0,
          "axis": 1.0
        }
      }
    ],
    "cost_matrix": [
      [
        0.6236238444314008,
        0.6236238444314008
      ],
      [
        0.20779470235445402,
        0.34779470235445403
      ],
      [
        0.1600070600826744,
        0.3000070600826744
      ],
      [
        0.16001089321598458,
        0.3000108932159846
      ],
      [
        0.20027413066571242,
        0.34027413066571244
      ],
      [
        0.6219162757847186,
        0.6219162757847186
      ]
    ]
  },
  "template": {
    "pm_id": "1363",
    "category": "Safe",
    "node_count": 4,
    "movable_joint_count": 2
  },
  "mode_v01": "diagnostic_only_count_or_confidence_gate",
  "actions_v01": [],
  "actions_v02": [],
  "policy_v02": {
    "root_prior": "only repairs invalid multi-root trees; picks fixed/base/large-volume root",
    "axis_repair": "normalizes finite axes; fills invalid axes from leave-one-out template or bbox",
    "range_repair": "fills missing or zero-width movable ranges with conservative defaults",
    "gt_usage": "GT is not used for artifact edits; only for scoring"
  }
}
