{
  "comment": "P10-07 刀具阶梯：大余量先上大刀。T号按阶梯固定映射（T20=最大刀），非阶梯刀具（钻头等）从T1起顺序分配并跳过阶梯保留号；补偿号H=T号。严禁 T0/H0/H00，无号可用报错中止。",
  "t_range": [1, 20],
  "levels": [
    {"level": 1, "tool_no": 20, "dia": 20.0, "name": "D20", "use": "开粗主力，余量>2mm 必须先用它"},
    {"level": 2, "tool_no": 19, "dia": 16.0, "name": "D16", "use": "窄区、台阶"},
    {"level": 3, "tool_no": 18, "dia": 12.0, "name": "D12", "use": "常规开粗/中区"},
    {"level": 4, "tool_no": 17, "dia": 8.0, "name": "D8", "use": "小区、清根"},
    {"level": 5, "tool_no": 16, "dia": 6.0, "name": "D6", "use": "小槽"},
    {"level": 6, "tool_no": 15, "dia": 4.0, "name": "D4", "use": "清角、窄槽"}
  ],
  "finish_rule": "精加工沿用半精那把（P10-05），不再降级",
  "selection_rules": {
    "D0": "D0 = clamp(L/20, 刀库最小, 刀库最大)，L=零件包围盒最大边长",
    "down_step": "下一级 = ceil(上一级 × 0.65)，向下取刀库已有规格",
    "stock_gate": "余量 R > 2mm → 必须先用当前最大刀",
    "degrade": "刀库无对应规格 → 取不超过目标的最大可用规格，日志标注 降级选刀：目标D12→实际D10",
    "no_repeat": "每级只切上一级进不去的区域，不重复切同一区域",
    "forbid": "严禁 T0/H0/H00；无号可用则报错中止，不许出程序"
  }
}
