附录 C. 诊断分类体系

C.1 范围

本附录定义 PTO 虚拟 ISA 工具链的诊断分类与稳定性要求。

C.2 诊断质量契约

所有诊断 SHOULD 满足:

  • 确定性错误类别
  • 确定性主消息形态
  • 可执行上下文(期望 vs 实际)
  • 在可用时提供源码定位

C.3 主诊断类别

C.3.1 解析诊断(PARSE_*

用于 PTO-AS 文本错误:

  • token 形态错误
  • 文法违规
  • 字面量/属性语法非法

C.3.2 结构诊断(STRUCT_*

用于 IR 结构违规:

  • 操作数/结果元数错误
  • 必需属性缺失
  • 类型类别不兼容

用于后端/画像合法性失败:

  • 不支持的 dtype/layout/location/shape 组合
  • 不支持的模式组合
  • 选定画像中不支持的指令变体

C.3.4 顺序诊断(ORDER_*

用于同步/顺序错误:

  • 缺失必需依赖边
  • 非法同步形式
  • 顺序契约违反

C.3.5 字节码诊断(BCODE_*

用于交换/序列化失败:

  • 不支持的字节码版本
  • section/record 畸形
  • 未知必需字段/操作码

C.4 推荐消息字段

诊断 SHOULD 包含:

  • 错误类别(稳定标识)
  • 操作名与操作数位置(如适用)
  • 期望契约摘要
  • 实际违规值/形状/类型/模式
  • 定位信息或来源上下文

C.5 稳定性策略

  • 错误类别标识在补丁版本内 MUST 稳定。
  • 消息文案在 CI 快照中 SHOULD 尽量稳定。
  • 若文案发生实质变化,发布说明 SHOULD 记录该变化。

C.6 示例格式

LEGAL_UNSUPPORTED_TUPLE: tmatmul operand src1 has unsupported tuple
  expected: layout in {fractal_a, fractal_b}, dtype in {fp16, bf16}
  actual: layout=row_major, dtype=int8
  context: backend_profile=A3, op_loc=line 42