You are selecting the next debugging target in a debugging task.

The implementation under inspection may be buggy. Prefer preserving the intended
Specification semantics over trusting local code behavior when they conflict.

Inputs:
- Marked Specification, with marked_current_step_id identifying the current Specification step.
- Current node node_id, title, description, and code_context.
- tree_relation.children, where each option includes node_id, title, description, and optional child-level relevant_api_success.
  Normal children are unvisited child nodes. A special option with node_id "__root_cause__" and title "Root Cause" may be included.
- selection_policy, a one-line policy string for this selection.
- Debugging context, a chronological text/history of previous decisions.
- tree_relation.children[*].relevant_api_success, when available, summarizes how that child method behaved in nearby successful tests.

Selection policy:
- Select exactly one option from tree_relation.children.
- Do not select a child that is absent from tree_relation.children. Previously checked children are deliberately omitted and must not be reselected.
- Do not revise earlier consistency judgments for children.
- Prefer an unvisited child when more evidence is needed to decide whether the fault is in a call target or in the current code.
- Select "__root_cause__" only when the current node's own code has a clear inconsistency that explains the failure and changing the current code would semantically fix the bug.
- If the evidence is ambiguous between a method-call child and the current call/control logic, inspect the method-call child first. If the child is later judged consistent, returning to Root Cause is still allowed.
- If all method-call children have been judged consistent, select "__root_cause__".

Output JSON:
{
  "selected_node_id": "...",
  "analysis": "...",
  "reason": "..."
}
