cann-workbench 0.0.0-stage → 0.0.2-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +183 -2
  2. package/THIRD_PARTY_NOTICES.md +85 -0
  3. package/cordis.patch.yml +3 -0
  4. package/doctor/LICENSE +202 -0
  5. package/doctor/NOTICE +12 -0
  6. package/doctor/README.md +18 -0
  7. package/lib/client.js +94437 -0
  8. package/lib/index.d.ts +722 -0
  9. package/lib/index.js +33711 -0
  10. package/locale/en.json +6 -0
  11. package/locale/zh.json +6 -0
  12. package/package.json +171 -4
  13. package/skills/asc-tools/tool-ops-tune/INSTALL.md +52 -0
  14. package/skills/asc-tools/tool-ops-tune/LICENSE +38 -0
  15. package/skills/asc-tools/tool-ops-tune/README.md +167 -0
  16. package/skills/asc-tools/tool-ops-tune/SKILL.md +93 -0
  17. package/skills/asc-tools/tool-ops-tune/agent/AGENTS.md +195 -0
  18. package/skills/asc-tools/tool-ops-tune/agent/agents/perf-implementer.md +68 -0
  19. package/skills/asc-tools/tool-ops-tune/agent/agents/perf-reviewer.md +86 -0
  20. package/skills/asc-tools/tool-ops-tune/agent/workflows/task-prompts.md +362 -0
  21. package/skills/asc-tools/tool-ops-tune/agent/workflows/troubleshooting.md +43 -0
  22. package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.png +0 -0
  23. package/skills/asc-tools/tool-ops-tune/docs/figures/opstune-architecture.svg +253 -0
  24. package/skills/asc-tools/tool-ops-tune/docs/ops-tune-design.md +404 -0
  25. package/skills/asc-tools/tool-ops-tune/docs//347/224/250/344/276/213/346/236/204/345/273/272.md +730 -0
  26. package/skills/asc-tools/tool-ops-tune/docs//347/237/245/350/257/206/345/272/223/350/247/204/350/214/203.md +103 -0
  27. package/skills/asc-tools/tool-ops-tune/evals/evals.json +242 -0
  28. package/skills/asc-tools/tool-ops-tune/ops-collect/SKILL.md +146 -0
  29. package/skills/asc-tools/tool-ops-tune/ops-collect/references/tool-routing.md +86 -0
  30. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_board.sh +458 -0
  31. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_cases.py +368 -0
  32. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/collect_sim.sh +134 -0
  33. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/csv_to_db.py +314 -0
  34. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/db_bench.py +545 -0
  35. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/facts_bridge.py +1102 -0
  36. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/isolation_test.py +452 -0
  37. package/skills/asc-tools/tool-ops-tune/ops-collect/scripts/jsonl_to_cases.py +163 -0
  38. package/skills/asc-tools/tool-ops-tune/ops-family/SKILL.md +76 -0
  39. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/advanced_tiling.md +92 -0
  40. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/broadcast_design.md +160 -0
  41. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_kernel.cpp +126 -0
  42. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_add_tiling.cpp +144 -0
  43. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/broadcast_tiling_common.h +401 -0
  44. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_kernel.cpp +107 -0
  45. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/code/onedim_add_tiling.cpp +64 -0
  46. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/datacopypad_design.md +46 -0
  47. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/guide.md +14 -0
  48. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/nddma_design.md +53 -0
  49. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/onedim_design.md +114 -0
  50. package/skills/asc-tools/tool-ops-tune/ops-family/references/broadcast/ub_broadcast_design.md +67 -0
  51. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/datacopy_optimization_design.md +351 -0
  52. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/index.md +9 -0
  53. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/tail_block_design.md +268 -0
  54. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/index.md +38 -0
  55. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_aclrt_event.cpp +199 -0
  56. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/timing_harness/timing_harness_torch_event.py +130 -0
  57. package/skills/asc-tools/tool-ops-tune/ops-family/references/common/ub_resident_design.md +342 -0
  58. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/guide.md +69 -0
  59. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/index.md +4 -0
  60. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_base.template +81 -0
  61. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_big_dim.template +217 -0
  62. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_one_axis.template +336 -0
  63. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_cut_two_axis.template +781 -0
  64. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_n_last.template +340 -0
  65. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_small_shape.template +321 -0
  66. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_tensor_move.template +102 -0
  67. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd.template +480 -0
  68. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_transdata_5hd_021axis.template +533 -0
  69. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/dav3510/transpose_with_gather.template +688 -0
  70. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/templates/transpose_tiling_data.template +192 -0
  71. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_big_dim.md +220 -0
  72. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_one_axis.md +175 -0
  73. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_cut_two_axis.md +177 -0
  74. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_fusion_design.md +398 -0
  75. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_gather.md +191 -0
  76. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_n_last.md +276 -0
  77. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_small_shape.md +315 -0
  78. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tensor_move.md +203 -0
  79. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_tiling_data.md +176 -0
  80. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_021.md +206 -0
  81. package/skills/asc-tools/tool-ops-tune/ops-family/references/conversion/transpose_vconv_5hd.md +179 -0
  82. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/double_buffer_design.md +288 -0
  83. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/guide.md +46 -0
  84. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/index.md +10 -0
  85. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/CMakeLists.txt +131 -0
  86. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/README.md +55 -0
  87. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/add_custom_torch.cpp +80 -0
  88. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/ops.h +23 -0
  89. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_extension/register.cpp +30 -0
  90. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/add_custom.asc +149 -0
  91. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_host/data_utils.h +97 -0
  92. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_kernel.asc +136 -0
  93. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/op_kernel/add_custom_tiling.h +31 -0
  94. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/run.sh +87 -0
  95. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/gen_data.py +70 -0
  96. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/golden.py +34 -0
  97. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/test_torch.py +99 -0
  98. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/add_custom/scripts/verify_result.py +56 -0
  99. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/templates/usage_guide.md +61 -0
  100. package/skills/asc-tools/tool-ops-tune/ops-family/references/elementwise/vector_efficiency_design.md +203 -0
  101. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_mixed_kernel_design.md +174 -0
  102. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/fa_roofline_design.md +141 -0
  103. package/skills/asc-tools/tool-ops-tune/ops-family/references/fa/guide.md +87 -0
  104. package/skills/asc-tools/tool-ops-tune/ops-family/references/knowledge_gaps.json +56 -0
  105. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/best-practices-guide.md +14 -0
  106. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/fullload_design.md +344 -0
  107. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/guide.md +52 -0
  108. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/mte2_preload_design.md +320 -0
  109. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/pingpong_design.md +254 -0
  110. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/scale_coalescing_design.md +282 -0
  111. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/streamk_design.md +374 -0
  112. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/swat_design.md +423 -0
  113. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/matmul_basic_blaze.template +165 -0
  114. package/skills/asc-tools/tool-ops-tune/ops-family/references/matmul/templates/usage_guide.md +29 -0
  115. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/best-practices-guide.md +43 -0
  116. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/guide.md +42 -0
  117. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/local_matmul_design.md +130 -0
  118. package/skills/asc-tools/tool-ops-tune/ops-family/references/mc2/pipeline_balancing_design.md +502 -0
  119. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/guide.md +178 -0
  120. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/kernel_utils.template +75 -0
  121. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_full_load.template +429 -0
  122. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_recompute.template +485 -0
  123. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ar_small_r.template +348 -0
  124. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_full_load.template +574 -0
  125. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_online.template +324 -0
  126. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_ara_recompute.template +436 -0
  127. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/dav310/softmax_v2_base.template +950 -0
  128. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/fused_attention_online_softmax_design.md +428 -0
  129. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_full_load.md +137 -0
  130. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_recompute.md +135 -0
  131. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ar_small_r.md +122 -0
  132. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_full_load.md +144 -0
  133. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_online.md +185 -0
  134. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_ara_recompute.md +163 -0
  135. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling.template +460 -0
  136. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/softmax_v2_tiling_data.template +278 -0
  137. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/state_resident_design.md +337 -0
  138. package/skills/asc-tools/tool-ops-tune/ops-family/references/reduce/templates/usage_guide.md +253 -0
  139. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/coding_principles.md +476 -0
  140. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/conv_scalar.md +163 -0
  141. package/skills/asc-tools/tool-ops-tune/ops-family/references/scalar/guide.md +30 -0
  142. package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/guide.md +91 -0
  143. package/skills/asc-tools/tool-ops-tune/ops-family/references/simt/optimization-guide.md +110 -0
  144. package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/guide.md +83 -0
  145. package/skills/asc-tools/tool-ops-tune/ops-family/references/sort/radix_sort.md +354 -0
  146. package/skills/asc-tools/tool-ops-tune/ops-family/scripts/family_asset_audit.py +68 -0
  147. package/skills/asc-tools/tool-ops-tune/ops-family/scripts/tiling_candidates.py +419 -0
  148. package/skills/asc-tools/tool-ops-tune/ops-mechanism/SKILL.md +23 -0
  149. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_groupedmatmul_pipeline.md +23 -0
  150. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/ascendc/case_triton_atomic_revert.md +19 -0
  151. package/skills/asc-tools/tool-ops-tune/ops-mechanism/cases/mc2/case_mc2_fusion.md +19 -0
  152. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/api-usage.md +70 -0
  153. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-regbase-vf.md +45 -0
  154. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/ascendc-tiling.md +51 -0
  155. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/data-copy.md +67 -0
  156. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/index.md +45 -0
  157. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2-balancing.md +77 -0
  158. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/mc2.md +103 -0
  159. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/memory-hierarchy.md +40 -0
  160. package/skills/asc-tools/tool-ops-tune/ops-mechanism/references/optimize/pipeline.md +95 -0
  161. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/case_backfill.py +170 -0
  162. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/log_gap.py +145 -0
  163. package/skills/asc-tools/tool-ops-tune/ops-mechanism/scripts/mc2_search.py +367 -0
  164. package/skills/asc-tools/tool-ops-tune/ops-report/SKILL.md +77 -0
  165. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/run_evals.py +963 -0
  166. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/install-hooks.sh +65 -0
  167. package/skills/asc-tools/tool-ops-tune/ops-verdict/evals/smoke/run_smoke.sh +535 -0
  168. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/core_tail_a5.csv +25 -0
  169. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/few_cores_a5.csv +5 -0
  170. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/mte2_bound_a2.csv +17 -0
  171. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/multi_kernel_mix_a5.csv +7 -0
  172. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/no_bound_a5.csv +9 -0
  173. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/serial_no_overlap_a2.csv +9 -0
  174. package/skills/asc-tools/tool-ops-tune/ops-verdict/fixtures/vec_bound_a5.csv +9 -0
  175. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/io-contracts.md +94 -0
  176. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/rule-schema.md +130 -0
  177. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/scope-schema.md +61 -0
  178. package/skills/asc-tools/tool-ops-tune/ops-verdict/references/soc-spec.yaml +140 -0
  179. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L0-instruction.yaml +67 -0
  180. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L1-single-core.yaml +316 -0
  181. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L2-inter-core.yaml +173 -0
  182. package/skills/asc-tools/tool-ops-tune/ops-verdict/rules/L3-inter-card.yaml +156 -0
  183. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/batch_pipeline.py +466 -0
  184. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/calibrate.py +249 -0
  185. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/delta_compare.py +278 -0
  186. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/render_html.py +304 -0
  187. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/snapshot.py +200 -0
  188. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/trace_bubble.py +331 -0
  189. package/skills/asc-tools/tool-ops-tune/ops-verdict/scripts/verdict.py +1094 -0
  190. package/skills/asc-tools/tool-ops-tune/scripts/diff_audit.py +281 -0
  191. package/skills/asc-tools/tool-precision-debug/LICENSE +38 -0
  192. package/skills/asc-tools/tool-precision-debug/README.md +190 -0
  193. package/skills/asc-tools/tool-precision-debug/scripts/install.sh +475 -0
  194. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/LICENSE +38 -0
  195. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/SKILL.md +136 -0
  196. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/evals/evals.json +932 -0
  197. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/baseline.md +69 -0
  198. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/checkpoint-design.md +82 -0
  199. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/dumptensor.md +83 -0
  200. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/hypothesis-experiment.md +114 -0
  201. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/index.md +20 -0
  202. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/localization.md +85 -0
  203. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/numerical-modeling.md +94 -0
  204. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/operator-modeling.md +116 -0
  205. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/progressive-error-analysis.md +86 -0
  206. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reporting.md +140 -0
  207. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/reproducibility.md +121 -0
  208. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/semantic-bisection.md +72 -0
  209. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/diagnosis/sensitive-points.md +146 -0
  210. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fp16-promotion-boundary.md +46 -0
  211. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/fused-rmsnorm-gelu-residual.md +162 -0
  212. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/index.md +16 -0
  213. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/integer-float-collision.md +44 -0
  214. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/partial-statistics-merge.md +30 -0
  215. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/softplus-v2-grad-family.md +156 -0
  216. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/sync-dataflow-handshake.md +89 -0
  217. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/tail-valid-region-state.md +30 -0
  218. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/cases/thnn-fused-gru-bias-reduction.md +73 -0
  219. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/index.md +34 -0
  220. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/accumulation-order.md +108 -0
  221. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/algorithm-parameter-contract.md +118 -0
  222. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/buffer-lifetime-alias.md +133 -0
  223. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/cast-rounding.md +76 -0
  224. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/complex-operator-boundary.md +48 -0
  225. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/data-movement-alignment.md +104 -0
  226. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/golden-host-contract.md +84 -0
  227. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index-address-ownership.md +57 -0
  228. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/index.md +32 -0
  229. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/multicore-ownership.md +117 -0
  230. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/pipeline-sync-visibility.md +146 -0
  231. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/precision-mode-approximation.md +90 -0
  232. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/shape-boundary-contract.md +57 -0
  233. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/special-values.md +122 -0
  234. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/mechanisms/tiling-tail-state.md +146 -0
  235. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/broadcast-transpose.md +64 -0
  236. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/convolution.md +60 -0
  237. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/dynamic-quant.md +47 -0
  238. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/index.md +18 -0
  239. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/matmul-mmad.md +131 -0
  240. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/normalization.md +145 -0
  241. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/reduction.md +167 -0
  242. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/softplus-v2-grad.md +58 -0
  243. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/patterns/operators/sort-merge.md +65 -0
  244. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/index.md +18 -0
  245. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/kernel-debug-data.md +133 -0
  246. package/skills/asc-tools/tool-precision-debug/skills/tool-precision-debug/references/tools/msobjdump.md +150 -0
  247. package/skills/cann-doctor/SKILL.md +15 -0
  248. package/skills/catalog.json +79 -0
  249. package/skills/mattpocock/GLOSSARY.md +30 -0
  250. package/skills/mattpocock/LICENSE +21 -0
  251. package/skills/mattpocock/README.md +258 -0
  252. package/skills/mattpocock/SCOPE.md +35 -0
  253. package/skills/mattpocock/docs/agents/triage-labels.md +15 -0
  254. package/skills/mattpocock/docs/engineering/ask-matt.md +91 -0
  255. package/skills/mattpocock/docs/engineering/code-review.md +101 -0
  256. package/skills/mattpocock/docs/engineering/codebase-design.md +88 -0
  257. package/skills/mattpocock/docs/engineering/diagnosing-bugs.md +94 -0
  258. package/skills/mattpocock/docs/engineering/domain-modeling.md +86 -0
  259. package/skills/mattpocock/docs/engineering/grill-with-docs.md +82 -0
  260. package/skills/mattpocock/docs/engineering/implement-spec.md +86 -0
  261. package/skills/mattpocock/docs/engineering/implement.md +97 -0
  262. package/skills/mattpocock/docs/engineering/improve-codebase-architecture.md +113 -0
  263. package/skills/mattpocock/docs/engineering/pr.md +79 -0
  264. package/skills/mattpocock/docs/engineering/prototype.md +67 -0
  265. package/skills/mattpocock/docs/engineering/research.md +73 -0
  266. package/skills/mattpocock/docs/engineering/resolving-merge-conflicts.md +53 -0
  267. package/skills/mattpocock/docs/engineering/retro.md +81 -0
  268. package/skills/mattpocock/docs/engineering/setup-matt-pocock-skills.md +94 -0
  269. package/skills/mattpocock/docs/engineering/tdd.md +94 -0
  270. package/skills/mattpocock/docs/engineering/to-spec.md +81 -0
  271. package/skills/mattpocock/docs/engineering/to-tickets.md +99 -0
  272. package/skills/mattpocock/docs/engineering/triage.md +109 -0
  273. package/skills/mattpocock/docs/engineering/wayfinder.md +103 -0
  274. package/skills/mattpocock/docs/engineering/wizard.md +96 -0
  275. package/skills/mattpocock/docs/productivity/grill-me.md +76 -0
  276. package/skills/mattpocock/docs/productivity/grilling.md +87 -0
  277. package/skills/mattpocock/docs/productivity/handoff.md +76 -0
  278. package/skills/mattpocock/docs/productivity/teach.md +97 -0
  279. package/skills/mattpocock/docs/productivity/to-questionnaire.md +78 -0
  280. package/skills/mattpocock/docs/productivity/wait-what.md +36 -0
  281. package/skills/mattpocock/docs/productivity/writing-for-agents.md +70 -0
  282. package/skills/mattpocock/scripts/link-skills.sh +62 -0
  283. package/skills/mattpocock/scripts/list-skills.sh +7 -0
  284. package/skills/mattpocock/scripts/sync-plugin-version.mjs +41 -0
  285. package/skills/mattpocock/skills/deprecated/README.md +3 -0
  286. package/skills/mattpocock/skills/engineering/README.md +34 -0
  287. package/skills/mattpocock/skills/engineering/ask-matt/PHASE-BOUNDARIES.md +55 -0
  288. package/skills/mattpocock/skills/engineering/ask-matt/SKILL.md +97 -0
  289. package/skills/mattpocock/skills/engineering/ask-matt/agents/openai.yaml +5 -0
  290. package/skills/mattpocock/skills/engineering/code-review/SKILL.md +89 -0
  291. package/skills/mattpocock/skills/engineering/code-review/agents/openai.yaml +3 -0
  292. package/skills/mattpocock/skills/engineering/codebase-design/DEEPENING.md +37 -0
  293. package/skills/mattpocock/skills/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
  294. package/skills/mattpocock/skills/engineering/codebase-design/SKILL.md +114 -0
  295. package/skills/mattpocock/skills/engineering/codebase-design/agents/openai.yaml +3 -0
  296. package/skills/mattpocock/skills/engineering/diagnosing-bugs/SKILL.md +138 -0
  297. package/skills/mattpocock/skills/engineering/diagnosing-bugs/agents/openai.yaml +3 -0
  298. package/skills/mattpocock/skills/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  299. package/skills/mattpocock/skills/engineering/domain-modeling/ADR-FORMAT.md +47 -0
  300. package/skills/mattpocock/skills/engineering/domain-modeling/GLOSSARY-FORMAT.md +60 -0
  301. package/skills/mattpocock/skills/engineering/domain-modeling/SKILL.md +74 -0
  302. package/skills/mattpocock/skills/engineering/domain-modeling/agents/openai.yaml +3 -0
  303. package/skills/mattpocock/skills/engineering/grill-with-docs/SKILL.md +7 -0
  304. package/skills/mattpocock/skills/engineering/grill-with-docs/agents/openai.yaml +5 -0
  305. package/skills/mattpocock/skills/engineering/implement/SKILL.md +17 -0
  306. package/skills/mattpocock/skills/engineering/implement/agents/openai.yaml +5 -0
  307. package/skills/mattpocock/skills/engineering/implement-spec/SKILL.md +42 -0
  308. package/skills/mattpocock/skills/engineering/implement-spec/agents/openai.yaml +5 -0
  309. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
  310. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/SKILL.md +71 -0
  311. package/skills/mattpocock/skills/engineering/improve-codebase-architecture/agents/openai.yaml +5 -0
  312. package/skills/mattpocock/skills/engineering/pr/CREDITS.md +3 -0
  313. package/skills/mattpocock/skills/engineering/pr/SKILL.md +170 -0
  314. package/skills/mattpocock/skills/engineering/pr/agents/openai.yaml +3 -0
  315. package/skills/mattpocock/skills/engineering/prototype/LOGIC.md +67 -0
  316. package/skills/mattpocock/skills/engineering/prototype/SKILL.md +26 -0
  317. package/skills/mattpocock/skills/engineering/prototype/UI.md +112 -0
  318. package/skills/mattpocock/skills/engineering/prototype/agents/openai.yaml +3 -0
  319. package/skills/mattpocock/skills/engineering/research/SKILL.md +12 -0
  320. package/skills/mattpocock/skills/engineering/research/agents/openai.yaml +3 -0
  321. package/skills/mattpocock/skills/engineering/retro/SKILL.md +44 -0
  322. package/skills/mattpocock/skills/engineering/retro/agents/openai.yaml +5 -0
  323. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/SKILL.md +120 -0
  324. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  325. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/domain.md +51 -0
  326. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-github.md +50 -0
  327. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  328. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  329. package/skills/mattpocock/skills/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
  330. package/skills/mattpocock/skills/engineering/tdd/SKILL.md +38 -0
  331. package/skills/mattpocock/skills/engineering/tdd/agents/openai.yaml +3 -0
  332. package/skills/mattpocock/skills/engineering/tdd/mocking.md +59 -0
  333. package/skills/mattpocock/skills/engineering/tdd/tests.md +77 -0
  334. package/skills/mattpocock/skills/engineering/to-spec/SKILL.md +75 -0
  335. package/skills/mattpocock/skills/engineering/to-spec/agents/openai.yaml +5 -0
  336. package/skills/mattpocock/skills/engineering/to-tickets/SKILL.md +105 -0
  337. package/skills/mattpocock/skills/engineering/to-tickets/agents/openai.yaml +5 -0
  338. package/skills/mattpocock/skills/engineering/triage/AGENT-BRIEF.md +207 -0
  339. package/skills/mattpocock/skills/engineering/triage/OUT-OF-SCOPE.md +105 -0
  340. package/skills/mattpocock/skills/engineering/triage/SKILL.md +112 -0
  341. package/skills/mattpocock/skills/engineering/triage/agents/openai.yaml +5 -0
  342. package/skills/mattpocock/skills/engineering/wayfinder/SKILL.md +128 -0
  343. package/skills/mattpocock/skills/engineering/wayfinder/agents/openai.yaml +5 -0
  344. package/skills/mattpocock/skills/engineering/wizard/SKILL.md +44 -0
  345. package/skills/mattpocock/skills/engineering/wizard/agents/openai.yaml +3 -0
  346. package/skills/mattpocock/skills/engineering/wizard/template.sh +223 -0
  347. package/skills/mattpocock/skills/in-progress/README.md +17 -0
  348. package/skills/mattpocock/skills/in-progress/chief-of-staff/SKILL.md +75 -0
  349. package/skills/mattpocock/skills/in-progress/chief-of-staff/agents/openai.yaml +5 -0
  350. package/skills/mattpocock/skills/in-progress/claude-handoff/SKILL.md +18 -0
  351. package/skills/mattpocock/skills/in-progress/claude-handoff/agents/openai.yaml +5 -0
  352. package/skills/mattpocock/skills/in-progress/loop-me/SKILL.md +32 -0
  353. package/skills/mattpocock/skills/in-progress/loop-me/agents/openai.yaml +5 -0
  354. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/SKILL.md +102 -0
  355. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/agents/openai.yaml +5 -0
  356. package/skills/mattpocock/skills/in-progress/setup-ts-deep-modules/dependency-cruiser.config.cjs +95 -0
  357. package/skills/mattpocock/skills/in-progress/software-factory/EXAMPLE-TASKS.md +80 -0
  358. package/skills/mattpocock/skills/in-progress/software-factory/GIT-HOSTS.md +84 -0
  359. package/skills/mattpocock/skills/in-progress/software-factory/OBSERVABILITY-PLATFORMS.md +75 -0
  360. package/skills/mattpocock/skills/in-progress/software-factory/RUNNERS.md +94 -0
  361. package/skills/mattpocock/skills/in-progress/software-factory/SKILL.md +98 -0
  362. package/skills/mattpocock/skills/in-progress/software-factory/TICKET-TRACKERS.md +85 -0
  363. package/skills/mattpocock/skills/in-progress/writing-beats/SKILL.md +67 -0
  364. package/skills/mattpocock/skills/in-progress/writing-beats/agents/openai.yaml +5 -0
  365. package/skills/mattpocock/skills/in-progress/writing-fragments/SKILL.md +79 -0
  366. package/skills/mattpocock/skills/in-progress/writing-fragments/agents/openai.yaml +5 -0
  367. package/skills/mattpocock/skills/in-progress/writing-shape/SKILL.md +79 -0
  368. package/skills/mattpocock/skills/in-progress/writing-shape/agents/openai.yaml +5 -0
  369. package/skills/mattpocock/skills/misc/README.md +8 -0
  370. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/SKILL.md +95 -0
  371. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/agents/openai.yaml +3 -0
  372. package/skills/mattpocock/skills/misc/git-guardrails-claude-code/scripts/block-dangerous-git.sh +25 -0
  373. package/skills/mattpocock/skills/misc/migrate-to-shoehorn/SKILL.md +118 -0
  374. package/skills/mattpocock/skills/misc/migrate-to-shoehorn/agents/openai.yaml +3 -0
  375. package/skills/mattpocock/skills/misc/scaffold-exercises/SKILL.md +106 -0
  376. package/skills/mattpocock/skills/misc/scaffold-exercises/agents/openai.yaml +3 -0
  377. package/skills/mattpocock/skills/misc/setup-pre-commit/SKILL.md +91 -0
  378. package/skills/mattpocock/skills/misc/setup-pre-commit/agents/openai.yaml +3 -0
  379. package/skills/mattpocock/skills/productivity/README.md +20 -0
  380. package/skills/mattpocock/skills/productivity/grill-me/SKILL.md +7 -0
  381. package/skills/mattpocock/skills/productivity/grill-me/agents/openai.yaml +5 -0
  382. package/skills/mattpocock/skills/productivity/grilling/SKILL.md +30 -0
  383. package/skills/mattpocock/skills/productivity/grilling/agents/openai.yaml +3 -0
  384. package/skills/mattpocock/skills/productivity/handoff/SKILL.md +16 -0
  385. package/skills/mattpocock/skills/productivity/handoff/agents/openai.yaml +5 -0
  386. package/skills/mattpocock/skills/productivity/teach/GLOSSARY-FORMAT.md +35 -0
  387. package/skills/mattpocock/skills/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
  388. package/skills/mattpocock/skills/productivity/teach/MISSION-FORMAT.md +31 -0
  389. package/skills/mattpocock/skills/productivity/teach/RESOURCES-FORMAT.md +32 -0
  390. package/skills/mattpocock/skills/productivity/teach/SKILL.md +140 -0
  391. package/skills/mattpocock/skills/productivity/teach/agents/openai.yaml +5 -0
  392. package/skills/mattpocock/skills/productivity/to-questionnaire/SKILL.md +54 -0
  393. package/skills/mattpocock/skills/productivity/to-questionnaire/agents/openai.yaml +5 -0
  394. package/skills/mattpocock/skills/productivity/wait-what/SKILL.md +7 -0
  395. package/skills/mattpocock/skills/productivity/wait-what/agents/openai.yaml +5 -0
  396. package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL-MECHANICS.md +22 -0
  397. package/skills/mattpocock/skills/productivity/writing-for-agents/SKILL.md +81 -0
  398. package/skills/mattpocock/skills/productivity/writing-for-agents/agents/openai.yaml +3 -0
  399. package/skills/task-agents/operator-development/Agent.md +71 -0
  400. package/skills/task-agents/operator-development/skills.json +120 -0
  401. package/skills/task-agents/operator-development/stages.schema.json +532 -0
  402. package/skills/task-agents/performance-optimization/Agent.md +78 -0
  403. package/skills/task-agents/performance-optimization/skills.json +64 -0
  404. package/skills/task-agents/response-protocol.md +35 -0
  405. package/skills/task-agents/sidebar-contracts.schema.json +4168 -0
  406. package/skills/task-agents/sidebar-selection.schema.json +971 -0
  407. package/skills/task-agents/visuals/components.json +283 -0
  408. package/skills/task-agents/visuals/contracts.schema.json +3628 -0
@@ -0,0 +1,730 @@
1
+ # 算子调优 AGENT 用例构建(评测体系设计)
2
+
3
+ > **文档定位**:OpsTune 调优 Agent 的用例(评测)体系设计——把「性能用例怎么分层构建、
4
+ > evals 怎么写、端到端怎么断言、CANNBench L1-L4 怎么复用、代码合入怎么自动触发执行」
5
+ > 五个问题一次讲清。规划文档中的 U2/U3 在本文正式化,并前置补齐 U0/U1 两层。
6
+ >
7
+ > 版本:V1.3 | 日期:2026-10-27 | 状态:设计定稿(U1 现状 38/38 全绿:判定 E1-E26 + 门禁脚本 S1-S12;U0 冒烟 13 段已落地——第 11-13 段随 DB 格式通道交付;U2/U3 分期落地)
8
+ >
9
+ > 配套文档:套件根 [SKILL.md](../SKILL.md)(子域路由)| [知识库规范](知识库规范.md)(知识分类与标准化)
10
+ >
11
+ > 上游依赖:CANNBench(gitcode.com/cann/cann-bench,tasks L1-L4 共 53 算子 +
12
+ > metadata t_hw/baseline + HAP 评分 + staged eval 框架)
13
+
14
+ ---
15
+
16
+ ## 目录
17
+
18
+ 1. [定位与设计原则](#1-定位与设计原则)
19
+ 2. [分层用例体系总览(U0-U3)](#2-分层用例体系总览u0-u3)
20
+ 3. [U0 离线冒烟与单元回归](#3-u0-离线冒烟与单元回归)
21
+ 4. [U1 判定回归(evals)](#4-u1-判定回归evals)
22
+ 5. [U2 端到端用例](#5-u2-端到端用例)
23
+ 6. [U3 场景矩阵](#6-u3-场景矩阵)
24
+ 7. [复用 CANNBench L1-L4](#7-复用-cannbench-l1-l4)
25
+ 8. [代码合入触发用例执行](#8-代码合入触发用例执行)
26
+ 9. [用例治理与生命周期](#9-用例治理与生命周期)
27
+
28
+ ---
29
+
30
+ # 1. 定位与设计原则
31
+
32
+ ## 1.1 为什么用例必须分层
33
+
34
+ 检视意见(§7 根因)已经给出实证:**三个 P0 崩溃和大部分 P1 共享同一根因——「写了但从未
35
+ 在真实调用路径上运行过」+「evals 只测了设计者想到的路径」**。10 条 evals 全部由规则作者
36
+ 构造,天然绕开多包瀑布、反证指标解析、死指标路径、区间边界、
37
+ 路由副作用。判定质量的回归网眼,恰好都织在 bug 所在之外。
38
+
39
+ 结论:单一层级的用例(无论多少条)都无法同时满足「快反馈」与「全覆盖」——分层不是组织
40
+ 美学,是把三类风险分给三类成本结构不同的用例:
41
+
42
+ | 风险 | 例子 | 承接层 |
43
+ |------|------|--------|
44
+ | 确定性 bug(脚本崩溃/死代码/区间重叠) | F1/F2/F3/F5/F6/F7/F18 | U0(无卡,秒级)+ U1(无卡,分钟级) |
45
+ | 门禁与流程失效(口径/精度/噪声带/路由) | F9/F10/F11/F12 | U1 + U2 |
46
+ | 调优能力退化(判定错/收益没了/精度劣化) | 判定误报率、geomean 回归 | U2(真机)+ U3(矩阵) |
47
+
48
+ ## 1.2 六条设计原则
49
+
50
+ | # | 原则 | 含义 | 反例 |
51
+ |---|------|------|------|
52
+ | C1 | **断言进脚本** | 用例 = fixture + 断言器 + 退出码,不做文本评测 | 「让 LLM 看输出打分」(业界现状,判定质量零守护) |
53
+ | C2 | **已知答案** | 每条用例的期望输出事先固化(真机标定 / 官方 PR 收益 / 机制卡区间),禁止事后追认 | 先跑一遍把输出抄下来当答案 |
54
+ | C3 | **断言分级** | 机制断言(环境无关,CI 阻断)/ 锚定断言(随环境校准)/ 过程断言(无同型案例时断言降级策略合规)——见 §2.2 | 对一切用例硬编绝对加速比阈值(环境一换全红) |
55
+ | C4 | **复用不重做** | 用例取材复用 CANNBench(P3),本仓只做适配层与断言器,不 fork 任务集 | 把 cann-bench 的 cases 拷贝进本仓散养 |
56
+ | C5 | **门禁机械化** | 触发由变更路径驱动、退出码即 CI 动作,「跑不跑用例」不依赖自觉 | evals 存在但无自动触发点(现状) |
57
+ | C6 | **一次采集多处沉淀** | 一次真机采集同时产出:阈值回写(thresholds.md)+ fixture 入库(U1)+ E 级案例候选(知识回流) | 上板一次只为写一个数字 |
58
+
59
+ ## 1.3 与既有资产的对应
60
+
61
+ | 既有资产 | 在本体系中的位置 |
62
+ |---------|----------------|
63
+ | `skills/ops-verdict/evals/run_evals.py`(36 条,exit 1 阻断;CI + pre-push 双挂) | U1 主体(已达 30+ 目标) |
64
+ | `skills/ops-verdict/fixtures/`(3 个 CSV) | U1 fixture,补生成脚本与标注 |
65
+ | Roadmap「测试用例框架 / U3 矩阵」 | 本文 §5 / §6 正式化 |
66
+ | 离线干跑框架 | 本文 U0 + U2 干跑模式 |
67
+ | Roadmap「算子仓 CI 回归门禁」 | 本文 §8.5(算子仓侧) |
68
+ | CANNBench tasks/metadata/staged eval | 本文 §7(取材与框架复用) |
69
+
70
+ ---
71
+
72
+ # 2. 分层用例体系总览(U0-U3)
73
+
74
+ ## 2.1 四层金字塔
75
+
76
+ ```
77
+ ┌──────────────────┐
78
+ │ U3 场景矩阵 │ 真机 · 小时-天级
79
+ │ 覆盖率断言 │ 夜间 / 发版
80
+ ┌─┴────────────────┴─┐
81
+ │ U2 端到端用例 │ 干跑(无卡)+ 真机
82
+ │ 五阶段全链断言 │ PR 定向 / 每日
83
+ ┌─┴────────────────────┴─┐
84
+ │ U1 判定回归(evals) │ 无卡 · 分钟级
85
+ │ fixture → 断言 verdict │ 每次 PR(阻断)
86
+ ┌─┴────────────────────────┴─┐
87
+ │ U0 离线冒烟 + 单元回归 │ 无卡 · 秒级
88
+ │ 脚本可跑 / 引擎语义 / 校验器 │ 每次推送
89
+ └────────────────────────────┘
90
+ 成本/时延递增 ▼ 反馈速度/执行频次递增 ▲
91
+ ```
92
+
93
+ | 层 | 名称 | 断言对象 | 环境 | 典型时长 | 触发时机 | 现状 |
94
+ |----|------|---------|------|---------|---------|------|
95
+ | **U0** | 离线冒烟与单元回归 | 脚本可运行性(shim 干跑)/ 引擎函数语义 / 规则包加载校验 / 契约互锁单元 | 无卡(PyYAML) | <2 min | 每次推送(含 pre-push) | 🔴 待建(~5 人日) |
96
+ | **U1** | 判定回归(evals) | verdict / snapshot / delta_compare 对 fixture 的输出 == 已知答案 | 无卡 | <5 min | 每次 PR,**阻断**;安装自检(install.sh) | 🟢 38/38(E1-E26 判定 + S1-S12 门禁脚本;新规则必须带断言用例的纪律已多次兑现) |
97
+ | **U2** | 端到端用例 | 五阶段全链:精度门禁 / 判定正确性 / 加速比 / 报告六要素 / 口径纪律 / 路由副作用 | 干跑无卡 + 真机 | 干跑 <30 min;真机 30-90 min/算子 | 干跑:PR 定向(阻断);真机:每日 | 🟡 设计定稿(先行试点 3 算子) |
98
+ | **U3** | 场景矩阵 | 维度覆盖率(族 × 等级 × 卡规模 × 采集模式 × soc × 场景)≥80% | 真机为主 | 小时-天级 | 夜间 / 发版出口 | 🔴 待建 |
99
+
100
+ > 分层判断标准:**换一层环境才测得到的 bug,必须在那一层有用例**。U0/U1 无卡可跑是硬要求
101
+ > ——CI 的快门禁不允许依赖 NPU 资源(历史事故已证明:全部 P0 均可用无卡干跑发现)。
102
+
103
+ ## 2.2 断言分级(用例稳定性的关键设计)
104
+
105
+ 对一条用例写断言时,先归类再写阈值——三类断言的稳定性完全不同,混用会让 CI 要么全红要么假绿:
106
+
107
+ | 级别 | 断言什么 | 例子 | 稳定性 | CI 语义 |
108
+ |------|---------|------|--------|---------|
109
+ | **M 机制断言** | 门禁执行 / 路由 / 产物链 / 精度——流程是否按契约发生 | precision≠pass 的轮次数字不出现在 REPORT;HARD_KEYS 漂移 → exit 2;E8 污染命中后 L1_MTE2_BOUND 进 skipped | 环境无关,**永真** | 阻断 |
110
+ | **A 锚定断言** | 与外部锚点比较的**区间**断言 | geomean speedup ≥1.1;HAP ≥0.5;target_rule 转 NOT_HIT 或降档 | 随环境/soc 漂移,阈值进用例卡并带校准来源 | 阻断(阈值随里程碑校准) |
111
+ | **P 过程断言** | 无同型案例 / 无已知收益时,断言**降级策略合规** | FA 类用例:报告标注「无同型案例」、E 级候选生成、提高验证强度(多轮稳态) | 环境无关 | 阻断 |
112
+
113
+ 原则:**能用 M 不用 A,能用 A 不用 P**;A 类阈值禁止硬编码在断言器里,必须落在用例卡
114
+ `goal.threshold`(带锚点来源),阈值进化走 §9.2 变更流程。
115
+
116
+ ## 2.3 统一退出码契约
117
+
118
+ 三层用例共用一个退出码契约(CI 只认码不认文本)——沿用并扩展现有先例
119
+ (run_evals exit 1 = 阻断;delta_compare exit 2 = 门禁拒绝):
120
+
121
+ | 退出码 | 语义 | 先例 | CI 动作 |
122
+ |-------|------|------|--------|
123
+ | 0 | 全绿放行 | run_evals | 放行 |
124
+ | 1 | 用例失败(断言不中 / 脚本崩溃) | run_evals「阈值纪律」 | **阻断合入** |
125
+ | 2 | 门禁拒绝(口径漂移 / 精度失败) | delta_compare | **阻断合入** + 门禁标签 |
126
+ | 3 | 环境不满足(无 NPU / shim 失败 / 上游取材失败) | 新增 | 跳过标记——**不计绿**,夜间补跑 |
127
+
128
+ > 退出码 3 的设计动机:U2 真机层在无卡 CI 上必须能「体面地跳过」而不是假成功;但跳过
129
+ > 不得静默——汇总报告必须显式列出 skipped-by-env 清单,防止「全绿」掩盖「根本没跑」。
130
+
131
+ ---
132
+
133
+ # 3. U0 离线冒烟与单元回归
134
+
135
+ **定位**:无 NPU 的前置门禁——历史事故证明全部 P0 崩溃(`local` 函数外使用、env 丢失)
136
+ 都无需真机即可发现。U0 是性价比最高的一层(估算 ~5 人日),M1.5 第一优先级。
137
+
138
+ ## 3.1 四类内容
139
+
140
+ | # | 内容 | 断言 | 守护的缺口 |
141
+ |---|------|------|-----------|
142
+ | U0-1 脚本冒烟 | msprof **shim**(按参数产出预置 CSV 目录的假可执行)+ shellcheck + `collect_board.sh` 三模式干跑 + `isolation_test.py` env 模式干跑 | 退出码 0、manifest 结构合法、产物目录形态正确 | F1 / F2 / F17 / F23 |
143
+ | U0-2 引擎单元回归 | `verdict.py` 以库形式 import,构造 facts 直接断言:severity 分档、routing 副作用、counter_evidence 求值、非数值 scalar 降级、全瀑布 facts 分包累积 | 函数级输出 == 期望 | F4 / F5 / F6 / F18 |
144
+ | U0-3 规则包加载校验(负向用例) | 引擎加载时校验:condition/反证/severity 引用的指标必须在词汇表;`routing.on_hit` 目标规则存在;同层区间无重叠;derived 声明必须有计算实现。U0 用「坏规则包必须报错退出」守护校验器本身 | 非法包 → 加载失败 | 区间重叠 / 引用缺失 / 死分支类问题**合入即拦截** |
145
+ | U0-4 契约互锁单元 | snapshot/delta_compare 的 HARD_KEYS 比对、MECHANISM_KEYS WARN、±5% 三段结论、exit 2 路径 | 构造快照对 → 断言结论与退出码 | F9 / F10 |
146
+
147
+ > U0-3 是「产品代码 + 用例」双重形态:加载校验写进 verdict.py(合入非法规则包时直接报错),
148
+ > U0 负责守护校验器自身不退化——纪律变机制,机制本身也要有回归。
149
+
150
+ ## 3.2 目录与入口
151
+
152
+ **规划目录形态(U2/U3 分期落地时创建;当前未建)**——现状入口见段尾对照表:
153
+
154
+ ```
155
+ tests/ # 规划(U2/U3 落地时创建;当前仓库无此目录)
156
+ ├── smoke/ # U0-1
157
+ │ ├── shim/msprof # 假 msprof(--help 探测 / 参数回放 → 预置 CSV)
158
+ │ ├── run_smoke.sh
159
+ │ └── cases/ # 三模式干跑参数化用例
160
+ ├── unit/ # U0-2 / U0-4(pytest 或自研 runner,依赖仅 PyYAML)
161
+ ├── e2e/ # U2(见 §5)
162
+ ├── matrix/ # U3(见 §6)
163
+ ├── adapters/ # CANNBench 取材适配层(见 §7)
164
+ └── run_all.py # 统一入口:--layer U0,U1[,U2,U3] --mode dryrun|board
165
+ ```
166
+
167
+ **现状对照(已存在,截至 U1 全绿态)**:
168
+
169
+ | 规划路径 | 现状实现 |
170
+ |---------|---------|
171
+ | `tests/smoke/run_smoke.sh` | `ops-verdict/evals/smoke/run_smoke.sh`(SKILL 自包含,13+ 段) |
172
+ | `tests/unit/`(U0-4 契约互锁) | 并入 `ops-verdict/evals/run_evals.py` 的 S 系用例 |
173
+ | `tests/run_all.py --layer U0,U1` | `ops-verdict/evals/run_evals.py` + `ops-verdict/evals/smoke/run_smoke.sh` 两条命令 |
174
+ | `tests/install_hooks.sh` | `ops-verdict/evals/smoke/install-hooks.sh`(pre-push 门禁) |
175
+ | `tests/e2e/`、`tests/matrix/`、`tests/adapters/` | 未建(U2/U3 分期,见 §5/§6) |
176
+
177
+ U1(`ops-verdict/evals/`)**留在 SKILL 内不迁移**——它属于 SKILL 的自包含回归
178
+ (P4:SKILL 独立可用 + install.sh 安装自检都依赖它在原地);未来 `tests/run_all.py`
179
+ 落地后以子进程方式调用它,退出码透传。
180
+
181
+ ---
182
+
183
+ # 4. U1 判定回归(evals)
184
+
185
+ **定位**:判定知识的执行式回归——fixture(已知答案的 CSV/标量)断言 verdict 输出。
186
+ 规则/阈值/引擎任何变更必须全绿才可合入(D8,CI 阻断语义)。这是四层中唯一已运行的一层。
187
+
188
+ ## 4.1 现状解剖(10 条)
189
+
190
+ ```
191
+ run_evals.py = CASES[](用例定义:args + assert) + run_case()(求值器) + main()(退出码)
192
+ fixture:3 个真机脱敏 CSV(mte2_bound_a2 / core_tail_a5 / serial_no_overlap_a2)+ 标量注入
193
+ 断言键:hit / not_hit / hit_either / hit_or_insufficient / skipped_contains / verdict
194
+ ```
195
+
196
+ | # | 用例 | 断言要点 |
197
+ |---|------|---------|
198
+ | E1 | MTE2 占比 78% 且主导 pipe | L1_MTE2_BOUND 命中、NEEDS_OPTIMIZATION |
199
+ | E2 | E1 + active_bw=85% 峰值 | 反证「真带宽饱和」触发(优化方向改变仍 HIT) |
200
+ | E3 | cube+mte2+mte1 求和≈1 | 串行无重叠指纹命中、单 pipe BOUND 不命中 |
201
+ | E4 | 均值 93us 峰值 185us | 核间长尾 + 离散度严重双命中 |
202
+ | E5 | 仅 8 个 block(A5 48 核) | 切核不足命中 |
203
+ | E6 | R=2.10 | 强计算 bound 命中 |
204
+ | E7 | R=1.01 | 完美平衡命中 |
205
+ | E8 | full=62 / pure=41 | 污染命中 + 路由副作用生效 |
206
+ | E9 | 无 CSV 无标量 | 全 SKIPPED + INSUFFICIENT_DATA(绑定契约兜底) |
207
+ | E10 | 全 pipe <50% | LATENCY/SYNC 可疑命中而非「无 bound」 |
208
+
209
+ ## 4.2 用例编写规范(六条,新增/修改用例必守)
210
+
211
+ 1. **已知答案必须标来源**:fixture 源自真机调优案例的,用例 `desc` 标注案例指纹
212
+ (算子/soc/口径);首期手工构造的标 🟡,M1.5 标定后替换——与阈值溯源同一纪律。
213
+ 2. **正例 + 至少一个反例/边界**(rule-schema.md 扩展流程第 2 条):只测命中的用例
214
+ 防不住误报,反例防误报、边界防区间错位(E11/E12 即为此补)。
215
+ 3. **断言键白名单**:求值器必须消费用例声明的每一个断言键,**未知键报错**(未知键
216
+ 静默通过 = 死断言)。已知缺口:`counter_evidence` 键在 E2 声明但 `run_case()`
217
+ 无对应分支——E2 的反证断言实际从未生效,修复以本条规范为准。
218
+ 4. **三态覆盖**:每条规则至少被三条用例覆盖 HIT / NOT_HIT(或 watch)/ SKIPPED(或
219
+ INSUFFICIENT_DATA)——对应规则状态机全分支,缺态即盲区(E9 是目前唯一的 SKIPPED 态用例)。
220
+ 5. **fixture 可复现**:CSV 用脚本生成(种子固定)或标注脱敏来源 commit,禁止手搓数字;
221
+ fixture 与阈值联动——改规则 YAML 必须检查关联 fixture 是否仍成立。
222
+ 6. **一用例一场景**:用例只断言一个判定场景(可多规则同命中,但必须是同一场景的自然结果),
223
+ 禁止为凑覆盖把不相关标量拼进一个用例。
224
+
225
+ ## 4.3 已知缺口与修复(用例侧)
226
+
227
+ | 缺口 | 现状 | 修复 |
228
+ |------|------|------|
229
+ | E2 反证死断言 | `counter_evidence` 键无求值分支 | 求值器补该键 + 白名单校验(规范 3) |
230
+ | E8 路由副作用未断言 | 只断言污染命中,未断言 L1_MTE2_BOUND 被禁用 | E15(§4.4) |
231
+ | 门禁脚本零回归 | snapshot / delta_compare 无任何用例 | E16-E19(§4.4) |
232
+ | R 值边界盲区 | E7 只测 1.01,恰好避开 [0.9,1.0) 重叠区 | E11/E12 |
233
+ | fixture 无生成脚本 | 3 个 CSV 为手工产物 | `fixtures/gen/` 脚本化 + 来源标注 |
234
+
235
+ ## 4.4 扩充清单:10 → 20(M1.5-5)
236
+
237
+ E1-E10 保留,新增 E11-E20(每条映射既有回归缺口,全绿后 🟡 阈值项可回写):
238
+
239
+ | # | 用例 | 断言要点 | 对应缺口 |
240
+ |---|------|---------|---------|
241
+ | E11 | R=0.95 | 区间收窄后仅 COMM_BOUND 命中、BALANCED 不命中 | F3 |
242
+ | E12 | R ∈ {0.5, 0.9, 1.1, 2.0} 逐点 | between 闭开区间语义精确无重叠 | F3 |
243
+ | E13 | MTE2 占比 55% | NOT_HIT 且 watch 档提示存在于 verdict.json 与终端摘要 | watch 档 / F29 |
244
+ | E14 | VEC 占比 85% / 60% | severity 三档分档正确(critical / light) | 死分档类 |
245
+ | E15 | E8 强化 | `L1_MTE2_BOUND` 出现在 skipped 且 reason 含 disabled;reroute 目标正确 | F10 |
246
+ | E16 | 快照对口径漂移 | HARD_KEYS 任一不一致 → delta_compare exit 2 | F10 |
247
+ | E17 | 快照对精度门禁 | 任一侧 precision≠pass → exit 2 | F10 |
248
+ | E18 | 噪声带边界 1.05 / 0.95 / 带内 | 三段结论正确 + 带内复测处置提示(含 repeat 重建基线提示,F9) | F9/F10 |
249
+ | E19 | 机制变量变化 | block_dim / tiling_key 变化 → WARN 非 exit 2(--strict 恢复禁比) | D4 语义 |
250
+ | E20 | L0 层 | icache_miss>15% 命中 / l2_hit<50% 命中 | L0 覆盖 |
251
+
252
+ > E16-E19 使 U1 覆盖面从 verdict.py 扩展到三脚本;M1.5 验收「每条
253
+ > L1/L2/L3 规则至少 1 正 1 反」在 E1-E20 基础上按规则清单核对补齐(23 条规则 → 全覆盖时
254
+ > 用例数自然超过 20,20 是 M1.5 下限不是上限)。
255
+
256
+ ---
257
+
258
+ # 5. U2 端到端用例
259
+
260
+ **定位**:以「一个真实算子工程 + 全量 cases + 目标」为输入,跑完 OpsTuningAgent 五阶段
261
+ 闭环,断言**全链行为**——判定对不对、精度有没有劣化、收益达没达锚点、报告全不全、口径
262
+ 纪律有没有被绕过。U2 是唯一能发现「编排层退化」的层(U1 只测 SKILL 不测 Agent)。
263
+
264
+ ## 5.1 断言维度:六维
265
+
266
+ U2 断言器 = `agent/workflows/task-prompts.md` 各 Step「完成验证」的机器化 + 门禁纪律
267
+ (A1-A5 铁律)的执行证据检查 + 调优结果锚定。六维缺一即用例不完整:
268
+
269
+ | 维度 | 断言内容 | 类型 | 数据源 |
270
+ |------|---------|------|--------|
271
+ | ① 精度零劣化 | Phase 0 全集 pass 才进入;每轮先精度后性能;fail 轮数字不进报告 | M | 逐 case PASS/FAIL 明细 vs golden |
272
+ | ② 判定正确性 | verdict 与已知 bound 形态一致;优化后 target_rule 转 NOT_HIT 或 severity 降档 | A/M | verdict.json(前后两份) |
273
+ | ③ 加速比锚定 | geomean speedup ∈ 用例卡区间;REVERT 轮处置正确(回滚 + 复跑确认) | A | round-*/result.json + comparison.md |
274
+ | ④ 报告六要素 | 环境指纹 / 逐 case 全量表 / Bound 前后对照 / 保留回滚清单 / 预估 vs 实测 / 适用边界——六节齐且逐 case 行数 == cases 总数 | M | REPORT.md 结构化解析 |
275
+ | ⑤ 口径纪律 | 基线与轮次 HARD_KEYS 全等;机制变量差异仅 WARN;噪声带内不宣称收益 | M | snapshot 对 + delta_compare |
276
+ | ⑥ 路由与仲裁 | MC² 类:污染命中 → 单核访存机制不在 candidates;多 KEEP 仲裁规则执行 | M | candidates.json × verdict.json 交叉 |
277
+
278
+ > ④ 的「逐 case 行数 == cases 总数」是 A1 全量铁律的机器化——人读报告很难发现少了一个
279
+ > case,断言器数行数即可。⑥ 的交叉断言(candidates 的 target_rule ⊆ verdict findings、
280
+ > 污染禁用规则 ∉ candidates)把 Step 3 的两条「完成验证」也机器化了。
281
+
282
+ ## 5.2 三种用例形态(按已知答案的强度分)
283
+
284
+ | 形态 | 已知什么 | 断言什么 | 用例来源 |
285
+ |------|---------|---------|---------|
286
+ | **A 已知答案** | 基线工程的 bound 形态(fixture 先行标定) | 判定书命中预期规则;实施后转 NOT_HIT/降档 | 种子工程(§5.3)+ CANNBench L1/L2 |
287
+ | **B 已知收益** | 官方仓已合并优化 PR 的实测收益(A 级证据) | Agent 达到该收益区间,或报告给出可信解释(不达标本身不FAIL,**无解释才 FAIL**) | 官方算子仓 PR(ops-nn / ops-transformer…) |
288
+ | **C 能力边界** | 无同型案例(FA 类已知缺口) | 降级策略合规:报告标注「无同型案例」、候选卡证据链完整、E 级候选生成、验证强度提高(P 类断言) | CANNBench L4 + bench_lab FA 变体 |
289
+
290
+ > B 形态的「不达标不 FAIL、无解释才 FAIL」是刻意设计:绝对收益随环境漂移(A 级案例的
291
+ > speedup 绑定当时的口径指纹,禁止外推——案例卡纪律),但「解释义务」是机制性的。
292
+
293
+ ## 5.3 被测工程从哪来(种子工程机制)
294
+
295
+ U2 需要一个「可运行、精度通过、bound 已知」的被测工程,三种来源:
296
+
297
+ 1. **种子工程(自建,首选)**:用 ops-family 模板货架**反向构造**——从模板的「优化后」
298
+ 形态回退掉已知机制(去掉 Double Buffer → 串行指纹;单核大 block → 切核不足),得到
299
+ bound 可预测的基线实现。优点:自包含、bound 由构造决定(U1 fixture 同源标定)、
300
+ 不依赖外部仓节奏;
301
+ 2. **CANNBench 取材**:L1-L4 任务的 golden 参考实现 / 示例工程作为基线(见 §7);
302
+ 3. **官方仓历史版本**:优化 PR 的父 commit 作为基线(B 形态专用)。
303
+
304
+ 种子工程入 `tests/e2e/seed_projects/`(规划路径,U2 落地时创建),每个种子附 `bound_manifest.yaml`(预期 bound +
305
+ 构造说明 + 回退 diff),实现「U1 fixture 与 U2 种子同源」(C6 原则)。
306
+
307
+ ## 5.4 用例卡 schema 与示例
308
+
309
+ ```yaml
310
+ id: U2-GELU-A2-001
311
+ title: 单算子·elementwise·GELU 种子工程调优
312
+ scenario: single_op # single_op | fusion | regression | qa
313
+ soc: a2 # a2=910b2 / a5=950pr|950dt
314
+ source:
315
+ bench_ref: adapters/cann_bench_ref.yaml@<锁定 commit>
316
+ task: tasks/level1/gelu # CANNBench 取材任务(cases/golden/proto)
317
+ project: seed:elementwise/naive_gelu # 被测工程(seed / official-pr:<repo>#<pr> / bench:example)
318
+ timing: # 口径适配(§7.6):与 CANNBench baseline 采集口径对齐
319
+ method: event # snapshot --timing-method 五选一
320
+ warmup: 5
321
+ repeat: 20
322
+ goal:
323
+ metric: geomean_speedup # geomean_speedup | hap | verdict_only
324
+ threshold: [1.10, 2.0] # A 锚定断言区间(来源:机制卡 speedup_range / A 级案例)
325
+ anchor: metadata/910b2.json # t_hw/baseline 锚点(HAP 备用)
326
+ expect:
327
+ form: A # A | B | C(§5.2)
328
+ verdict_known: [L1_SERIAL_NO_OVERLAP] # A 形态:基线 bound 已知
329
+ verdict_after: not_hit_or_downgrade
330
+ precision: zero_regression # 20/20 case 零劣化
331
+ report_six_elements: true
332
+ full_case_rows: 20 # 逐 case 表行数 == case 总数(A1 铁律机器化)
333
+ noise_band_policy: enforced
334
+ routing_expect: [] # fusion 类填:pollution_hit → 单核访存 ∉ candidates
335
+ holdout: level1/gelu@internal # 泛化集引用(§5.6,防特判)
336
+ budget: {dryrun_minutes: 15, board_minutes: 40}
337
+ runner: [dryrun, board-910b2] # 干跑 + 真机两模式
338
+ ```
339
+
340
+ ## 5.5 干跑模式与真机模式
341
+
342
+ 同一张用例卡两种执行模式——这是 U2 能进 PR 门禁的关键(无卡 CI 跑干跑,真机留给夜间):
343
+
344
+ | | 干跑(dryrun) | 真机(board) |
345
+ |---|---------------|--------------|
346
+ | 环境 | 无 NPU;msprof shim + 预置 PROF 目录 | 910B2 / 950 runner 池 |
347
+ | 跑什么 | 五阶段全链:隔离测试走 from-prof 模式(目录预置)、采集走 shim、性能数字取预置样本 | 真实采集与计时 |
348
+ | 断言什么 | 产物链完整(scope→manifest→verdict→candidates→round→comparison→REPORT)、六维中 ①④⑤⑥ 全部 + ②判定正确 | 全部六维 + ③加速比锚定 |
349
+ | 价值 | 编排层退化、契约断链在 PR 即暴露 | 调优能力真实水平、阈值标定数据、E 级案例产出 |
350
+
351
+ > 干跑模式的性能数字是预置的,**只断言流程与判定,不断言收益**——收益断言(③)只在
352
+ > 真机模式生效。断言器按 `runner` 字段自动裁剪断言集。
353
+
354
+ ## 5.6 防过拟合与反特判
355
+
356
+ 调优 Agent 可能「记住」用例而非「会调优」,两条防线(对齐 CANNBench 反作弊边界与
357
+ 「内部泛化验证集 80 条不公开」的机制):
358
+
359
+ 1. **泛化 hold-out**:用例卡的 `holdout` 引用一份不随仓公开的泛化 case 集(shape/dtype
360
+ 扰动生成,种子由评测方掌握)。A 类用例终检时在 holdout 上复跑精度与抽查性能——
361
+ 特判了公开 case 的实现(按 shape 硬编码快路径)会在扰动 shape 上现形;
362
+ 2. **判定只出自脚本**(架构性防线):收益与 bound 结论全部来自 verdict/snapshot/
363
+ delta_compare 契约文件,REPORT 六要素机器校验——Agent 无法「写出」一个不存在于
364
+ 契约里的好数字。
365
+
366
+ ## 5.7 产物回灌:U2 是自进化回路的取材口
367
+
368
+ U2 真机跑完的产物不白跑(C6 原则的体系级延伸):
369
+
370
+ ```
371
+ U2 真机执行
372
+ ├─ REPORT.md / verdict.json / calibration_data.json
373
+ │ ├─▶ E 级案例候选 → cases/(入库评审后)→ 又成为后续 B 形态用例的收益锚点
374
+ │ ├─▶ speedup_est vs 实测 → 校准回路(27-2)→ 机制卡 speedup_range 回写
375
+ │ └─▶ 阈值命中率/误报率统计 → 阈值进化建议(27-3,人审 + U1 全绿才生效)
376
+ └─ 判定盲区(INSUFFICIENT_DATA 高发 / 规则未覆盖形态)
377
+ └─▶ 缺口感知回路(27-4)→ U3 矩阵空白格排产
378
+ ```
379
+
380
+ 评测体系与知识体系共用同一批契约文件——**用例资产与知识资产互相喂数**,这是「经验可回流」
381
+ 在评测侧的落点。
382
+
383
+ ---
384
+
385
+ # 6. U3 场景矩阵
386
+
387
+ **定位**:覆盖率层——回答「这套 Agent 在哪些场景被验证过」。不新增断言类型,复用 U2
388
+ 断言器;U3 的产出是**覆盖报告**(矩阵格 → 用例卡 ID → 最近一次全绿时间)。
389
+
390
+ ## 6.1 维度设计
391
+
392
+ | 维度 | 取值(首期) | 来源 |
393
+ |------|------------|------|
394
+ | 算子族 | matmul / mc2 / reduce / elementwise / broadcast / conversion / sort / scalar / simt / fa | ops-family 十族 |
395
+ | 难度等级 | L1 / L2 / L3 / L4 | CANNBench 等级(族 × 等级映射见 §7.3) |
396
+ | 卡规模 | 1 卡 / 2 卡 / 8 卡(mc2 采集模式必测多 rank) | 融合算子场景 |
397
+ | 采集模式 | standard / quick / mc2 / cannsim | ops-collect 三模式 + 仿真 |
398
+ | 芯片域 | a2(910B2)/ a5(950PR、950DT) | 规则包 soc 域(a3 待上游 metadata,见 §7.6) |
399
+ | 调优场景 | single_op / fusion / regression / qa | Agent 场景路由四类 |
400
+
401
+ 覆盖判定:格内至少一张 U2 用例卡**最近 30 天内真机全绿**计「已覆盖」;有用例卡但未真机
402
+ 计「设计覆盖」;无卡计「空白格」。26 年出口验收 ≥80%(融合算子格优先),27 年验收 100% 已知格
403
+ (与缺口感知看板同源——矩阵空白格就是 27-4 的排产输入)。
404
+
405
+ ## 6.2 取材与规模估算
406
+
407
+ | 来源 | 可取格 |
408
+ |------|--------|
409
+ | CANNBench tasks L1-L4(53 算子 × 每算子 20 case) | 单算子场景主力:族 × 等级 × soc × standard 模式 |
410
+ | bench_lab/cv_agent_fa_bench(25 个 attention 变体) | fa 族 × L4 格 + 26-2 FA 专项案例来源 |
411
+ | 种子工程(§5.3) | 采集模式 quick / cannsim 格 + 「反向构造」的确定性 bound 格 |
412
+ | 内部 MC² 工程(自建,cann-bench 主集合无 fork 多 rank 任务) | mc2 采集模式 × 多卡格——**已知取材缺口**,配平搜索专项联建 |
413
+
414
+ > 25 attention 变体与 53 主集任务不重复建设 U2 断言器——U3 只是 U2 用例卡的**编目维度**,
415
+ > 一张卡可占多格(如 `U2-MLA-A5-017` 同时占 fa × L4 × 1 卡 × standard × a5 × fusion)。
416
+
417
+ ---
418
+
419
+ # 7. 复用 CANNBench L1-L4
420
+
421
+ **定位**:CANNBench 是上游真源(P3 复用不重做),OpsTune 建适配层取材,不 fork 任务集、
422
+ 不自建评测框架。复用分四类资产 + 一条回写通道。
423
+
424
+ ## 7.1 复用三原则
425
+
426
+ 1. **不 fork 任务集**:cases / golden / proto / metadata 始终从 cann-bench 仓取,
427
+ 本仓只存「引用清单」(锁定 commit + 任务路径列表),适配层拉取;
428
+ 2. **版本锁定**:`adapters/cann_bench_ref.yaml` 记录 cann-bench commit 与
429
+ `tasks/metadata/VERSION`(当前 1.0.0);上游 bump → 适配层回归(U2 干跑全量)
430
+ → 更新锁定的 commit。禁止「永远跟 main」;
431
+ 3. **口径适配显式化**:cann-bench 与 OpsTune 的计时/口径参数差异必须在适配层覆写并
432
+ 写进 HARD_KEYS(§7.6)——跨口径数字禁止混比是本仓铁律,复用不能破例。
433
+
434
+ ## 7.2 资产映射表(CANNBench → OpsTune 契约)
435
+
436
+ | CANNBench 资产 | 内容 | OpsTune 消费点 | 落点 |
437
+ |----------------|------|---------------|------|
438
+ | `tasks/levelN/<op>/cases.csv`(每算子 20 开放用例) | shape/dtype/attrs/value_range | Agent 调优输入 cases——**每算子恰好 20 case,与 A1 铁律「>20 取前 20」天然对齐** | scope.json / 逐 case 对比表 |
439
+ | `tasks/levelN/<op>/golden.py` | PyTorch 参考实现 | Phase 0 精度门禁预检的比对基准 + 每轮精度验证 | 精度指纹(snapshot precision) |
440
+ | `tasks/levelN/<op>/proto.yaml` | 算子原型(dtype/shape_support/attrs/schema) | D2 算子元数据契约 → scope.json 口径字段 | scope.json |
441
+ | `tasks/levelN/<op>/desc.md` | 算子说明 | 场景分类辅助(单算子 vs 融合识别) | Phase 0 |
442
+ | `tasks/metadata/<hw>.json` | 逐 case `baseline_perf_us` / `t_hw_us` | Phase 1 理论标尺「还差多远」读数;U2 A 锚定断言;HAP 计算 | snapshot 锚点 / 用例卡 goal.anchor |
443
+ | `scripts/run_evaluation.sh` + `staged_eval` | 编译→精度→性能三阶段评测 + HAP 评分 + 非零退出码 | U2 真机模式的精度/性能采集执行器(§7.5) | tests/e2e runner |
444
+ | `bench_lab/`(25 attention 变体等) | 孵化区任务 | U3 矩阵 FA 格 + 26-2 FA 案例来源 | U3 编目 |
445
+ | 内部泛化验证集(80 条,不公开) | 防特判 hold-out | U2 `holdout` 引用(§5.6) | 评测方掌握 |
446
+
447
+ ## 7.3 等级 × 用途映射(L1-L4 各取什么)
448
+
449
+ | 等级 | 规模 | 代表算子 | 在本用例体系中的用途 |
450
+ |------|-----|---------|---------------------|
451
+ | **L1 基础**(elementwise/activation) | 8 | gelu / sigmoid / mish / swi_glu | U1 fixture 取材(VEC bound、latency 场景)+ U2 首批试点(调优周期短、bound 形态简单、性价比最高)+ M1.5-2 阈值标定数据源 |
452
+ | **L2 中级**(norm/reduce/gather) | 16 | softmax / rms_norm / gather / group_norm | U2 单算子主力 + reduce/broadcast 族模板链路验证 + L2 层规则(长尾/离散度)正反例 fixture |
453
+ | **L3 高级**(conv/MoE/matmul) | 21 | grouped_matmul / quant_matmul / conv_2d / top_k | matmul 六策略互斥判定树验证 + U3 主力格 + MC² 类种子工程母体(cann-bench 无现成 MC² 任务,见 §6.2) |
454
+ | **L4 复杂**(attention/RNN) | 8 | mha / mla / gqa / sparse_flash_attention / lstm | C 形态用例(FA 降级策略断言)+ 路由副作用真机验证 + bench_lab 25 变体扩展 U3 fa 格 |
455
+
456
+ > 试点顺序建议(M1.5 → 26 框架期):L1 gelu(A 形态跑通断言器)→ L2 softmax(模板链路)→
457
+ > L3 grouped_matmul(策略判定树)→ L4 mla(C 形态 + 降级策略)——与 M1.5-1「真机 3 算子
458
+ > 全流程」的前三步重合,一次投入两处验收。
459
+
460
+ ## 7.4 metadata 标尺接入
461
+
462
+ `tasks/metadata/{910b2,950pr}.json`(950dt 规划中,R8)提供逐 case 双锚点,接入三处:
463
+
464
+ ```
465
+ t_hw_us(硬件理论下界)────▶ Phase 1「还差多远」读数(达上限百分比,SOL 语义)
466
+ │ U2 A 锚定断言的物理上界(speedup 物理上限 = baseline/t_hw)
467
+ baseline_perf_us(PyTorch 基线,实测封顶口径 max(10×t_hw, 10us))
468
+ └──────────────────────▶ HAP = (T_baseline−T_HW)/((T_cand−T_HW)+(T_baseline−T_HW))
469
+ U2 goal.metric=hap 时的评分锚点(饱和型,防「基线很慢→speedup 虚高」)
470
+ ```
471
+
472
+ 两个指标的分工:**speedup 管 KEEP/REVERT 决策**(OpsTune 内部,±5% 噪声带三段结论),
473
+ **HAP 管跨系统可比性**(CANNBench 榜单口径,27-10 回写)。U2 用例卡二选一或并用
474
+ (`goal.metric`),禁止把 HAP 当 speedup 用(HAP>0.5 只说明优于基线,不说明快了多少倍)。
475
+
476
+ ## 7.5 评测框架复用:staged eval 与 OpsTune 门禁链同构
477
+
478
+ CANNBench 的三阶段评测与本仓门禁链结构同构,U2 真机模式直接外挂调用、不重写采集:
479
+
480
+ | CANNBench staged eval | OpsTune 对应门禁 | U2 复用方式 |
481
+ |----------------------|-----------------|------------|
482
+ | compile(build.sh;失败**整批 0 分 + 非零退出码**) | implementer Release 编译门禁(禁 -O0) | 干跑模式复用其「编译失败即阻断 + 错误摘要」语义;真机模式直接调 |
483
+ | correctness(cases + golden.py 精度比对) | Phase 0 精度预检 / 每轮门禁② | 直接调 `run_evaluation.sh --no-perf`(等价 correctness-only) |
484
+ | performance(profiler 采集 + HAP) | Phase 4b 统一采集 + snapshot + delta_compare | 性能样本取其 profiler 口径 → OpsTune 侧落 snapshot(同口径铁律由主 agent 垄断不变) |
485
+
486
+ 调用形态(U2 真机 runner 内部,Docker 镜像复用 cann-bench `docker/eval`):
487
+
488
+ ```bash
489
+ # 精度阶段(Phase 0 预检 / 每轮门禁②)
490
+ bash <cann-bench>/scripts/run_evaluation.sh --source-dir <被测工程> \
491
+ --task-dir tasks/level1/gelu --no-perf --device-id <id>
492
+ # 性能阶段样本(喂 snapshot.py → delta_compare.py,判定与对比仍出自本仓脚本)
493
+ bash <cann-bench>/docker/eval/run.sh <被测工程> --operator Gelu
494
+ ```
495
+
496
+ ## 7.6 口径适配细节(复用最容易翻车的地方)
497
+
498
+ | 差异项 | CANNBench | OpsTune | 适配规则 |
499
+ |--------|-----------|---------|---------|
500
+ | warmup/repeat | run_evaluation 默认 3/5;**baseline 采集口径 5/20** | 示例口径 5/20 | 适配层显式 `--warmup 5 --repeat 20`,与 metadata baseline 采集口径一致——否则 snapshot HARD_KEYS `repeat` 不一致,delta_compare exit 2 |
501
+ | 计时口径 | profiler / TorchNPU | 五选一(event 为默认首选) | 用 cann-bench 采集时 snapshot 记 `profiler_summary` 或 `msprof_task_duration` 并在报告注明;**禁止与 event 口径的基线混比** |
502
+ | soc ↔ hardware 命名 | 910b2 / 950pr(metadata 键) | a2 / a3 / a5(规则包 soc 域) | 映射表见下;a3 无上游 metadata,该域 U2 用内部案例标定(R4 跨芯片风险的评测侧对策) |
503
+ | 泛化集 | 内部 80 条不公开 | — | 以 `holdout` 引用接入评测方环境,不进本仓 |
504
+
505
+ **soc ↔ hardware 映射表**(适配层唯一真源):
506
+
507
+ | OpsTune soc | CANNBench hardware | 架构 | metadata 现状 |
508
+ |-------------|-------------------|------|--------------|
509
+ | a2 | 910b2 | DAV_2201 | ✅ tasks/metadata/910b2.json |
510
+ | a5 | 950pr | DAV_3510 | ✅ tasks/metadata/950pr.json |
511
+ | a5 | 950dt | DAV_3510 | ⏳ 上游规划(R8:静态 JSON 先离线接入) |
512
+ | a3 | —(待上游扩展) | — | 🔴 无 metadata;U3 该域暂以内部案例标定 |
513
+
514
+ ## 7.7 回写通道(27-10)
515
+
516
+ 复用是双向的:U2 真机跑出的调优结果,经基线库回写 CANNBench——调优前后 HAP 对比进榜单
517
+ (「调优维度评分」),最优实现可反哺 baseline。回写走 PR(cann-bench 侧评审),不走
518
+ 自动覆盖——与自进化四纪律一致(进化只产生建议,人审才生效)。
519
+
520
+ ---
521
+
522
+ # 8. 代码合入触发用例执行
523
+
524
+ **定位**:把「跑用例」从自觉变成机制(C5)。触发分两个方向:**本仓**(ops-tune 的规则/
525
+ 脚本/知识/编排变更)与**算子仓**(被调优算子的 PR 性能回归,27-5)。
526
+
527
+ ## 8.1 本仓触发矩阵(变更路径 → 用例层级 → 阻断性)
528
+
529
+ CI 按变更路径(diff filter)决定跑哪层——**全量跑一切变更**既慢又浪费 NPU:
530
+
531
+ | 变更路径 | U0 | U1 | U2 | U3 | 阻断性 |
532
+ |---------|----|----|----|----|--------|
533
+ | `skills/ops-verdict/rules/**` | ✅ 加载校验(负向用例) | ✅ 全量 | ✅ 涉及机制卡/阈值时定向(用例卡 `expect.verdict_known` 引用了被改规则的) | — | **U0+U1 红即不合入** |
534
+ | `skills/ops-verdict/scripts/**` | ✅ 冒烟+单元 | ✅ 全量 | ✅ 定向 | — | U0+U1 |
535
+ | `skills/ops-collect/scripts/**` | ✅ shim 冒烟(三模式 + isolation env/from-prof) | — | ✅ mc2 类定向 | — | U0 |
536
+ | `skills/ops-mechanism/**`、`skills/ops-family/**` | schema/链接/引用一致性校验(mechanism_refs 可达、模板路径存在) | — | ✅ 对应族定向 | — | 校验红即不合入 |
537
+ | `agent/**`(AGENTS / task-prompts / agents) | — | — | ✅ 干跑联调用例(编排层唯一守护层) | — | 干跑红即不合入 |
538
+ | `tests/**` | ✅ 自身回归 | ✅ | — | — | 自身 |
539
+ | 发版 tag / 里程碑出口 | ✅ | ✅ | ✅ 全量真机 | ✅ 全矩阵 | 出口判定数据(门禁纪律第 4 条:验收数据留痕进 `tuning_artifacts/`) |
540
+
541
+ > 「定向」的实现:U2 用例卡声明 `triggers`(其断言所依赖的规则 ID / 脚本 / 机制卡路径),
542
+ > CI 由 diff ∩ triggers 计算受影响用例集——与 verdict 的「规则-指标绑定契约」同构
543
+ > (**用例-变更绑定契约**:用例声明自己守护什么,变更反向找到该跑的用例)。
544
+
545
+ ## 8.2 三级触发机制
546
+
547
+ ```
548
+ ① pre-push hook(开发者本地,<8 min;现状已落地)
549
+ ops-verdict/evals/smoke/install-hooks.sh 一键安装
550
+ └─ evals/run_evals.py + evals/smoke/run_smoke.sh # 快反馈,秒级-分钟级
551
+ ② 平台流水线(GitCode 流水线 / Jenkins,PR 必过)
552
+ ├─ fast-gate(无卡 runner):U0 + U1 # 阻断
553
+ └─ targeted-e2e(无卡 runner):U2 --mode dryrun --filter-by-diff # 阻断
554
+ ③ 定时(夜间 / 发版)
555
+ ├─ nightly-board(NPU runner 池):U2 真机全量 # 非阻断:告警 + 趋势看板
556
+ └─ release-matrix(NPU runner 池):U3 全矩阵 # 阻断(出口判定)
557
+ ```
558
+
559
+ 要点:
560
+
561
+ - **门禁必须平台侧执行**:pre-push 只是快反馈,不能作为唯一门禁(可被 `--no-verify`
562
+ 绕过)——阻断语义只认平台流水线的退出码(§8.3);
563
+ - **夜间真机非阻断、发版矩阵阻断**:真机层受设备排队/环境噪声影响,失败当日修复、
564
+ 连续两晚红自动升级为阻断(防「夜夜红没人管」);发版出口按里程碑门禁纪律「只降范围
565
+ 不放水」,矩阵红线即不放行;
566
+ - 流水线描述的通用形态(触发 + 退出码契约是稳定内核,YAML 形态随平台能力落地):
567
+
568
+ ```yaml
569
+ # 示意(GitCode 流水线 / Jenkins 通用形态)
570
+ fast-gate: { run: "python3 tests/run_all.py --layer U0,U1", blocking: true, runner: cpu }
571
+ targeted-e2e: { run: "python3 tests/run_all.py --layer U2 --mode dryrun --filter-by-diff",
572
+ blocking: true, runner: cpu }
573
+ nightly-board: { run: "python3 tests/run_all.py --layer U2 --mode board", blocking: false, runner: npu-pool, cron: daily }
574
+ release-matrix: { run: "python3 tests/run_all.py --layer U3 --matrix full", blocking: true, runner: npu-pool, on: tag }
575
+ ```
576
+
577
+ ## 8.3 统一 runner 与退出码
578
+
579
+ > `tests/run_all.py` 为**规划态**统一入口(U2 落地时创建,见 §3.2 现状对照表);当前
580
+ > U0+U1 无 runner——两条命令直跑(`ops-verdict/evals/run_evals.py` +
581
+ > `ops-verdict/evals/smoke/run_smoke.sh`),退出码即门禁语义。
582
+
583
+ 落地后 `tests/run_all.py` 是唯一 CI 入口,职责:按 `--layer`/`--filter-by-diff` 选层选集 →
584
+ 调度(U0/U1 串行快跑;U2 干跑并行,受影响集内按用例卡 `budget` 控时)→ 汇总
585
+ (绿/红/skip-by-env 三态清单 + 各层耗时)→ 按 §2.3 契约退出。退出码透传子 runner
586
+ (U1 即 `skills/ops-verdict/evals/run_evals.py` 的 0/1)。
587
+
588
+ **skip-by-env 必须显式**:汇总报告列出因环境跳过的用例(退出码 3),PR 界面显示
589
+ 「U2-dryrun 42/42 绿,U2-board 0/42 环境跳过(夜间补跑)」——防「全绿」掩盖「没跑」。
590
+
591
+ ## 8.4 NPU runner 池与镜像
592
+
593
+ | 池 | 用途 | 镜像 |
594
+ |----|------|------|
595
+ | cpu(无卡) | U0/U1/U2-dryrun | 轻量:Python 3.8+ + PyYAML |
596
+ | npu-910b2 | U2-board / U3(a2 域) | 复用 cann-bench `docker/eval`(toolkit 冻结镜像)+ 本仓 tests/ 注入 |
597
+ | npu-950 | U2-board / U3(a5 域) | 同上 |
598
+
599
+ 镜像复用的关键收益:**CANN 版本一致性护栏**(cann-bench staged_eval 已内置「构建与运行
600
+ CANN 版本错配 → 按编译失败终止」的 2026-08 incident 防线)直接继承,不必在本仓重造;
601
+ snapshot 的 `cann_version` HARD_KEY 与镜像内 CANN 版本由 runner 注入对齐。
602
+
603
+ ## 8.5 算子仓侧门禁(27-5:被调优算子的 PR 性能回归)
604
+
605
+ 第二个方向:算子仓(ops-nn / ops-transformer / …)合入代码时,用本套件做「批量回归」
606
+ 场景的自动体检(对应 Agent 场景路由的第三类——Phase 1 简化 + 重跑判定 + 对比门禁,
607
+ **不做机制迭代**):
608
+
609
+ ```
610
+ 算子仓 PR
611
+ → CI job: opstune-regression(本仓套件以依赖形式接入)
612
+ ① 基线直取:基线库按 HARD_KEYS 匹配(op/soc/cann_version/device/shape/dtype/format/warmup/repeat)
613
+ 匹配不到 → 该 PR 标记 baseline-rebuild,先重建基线
614
+ ② PR 分支同口径采集(cases = 仓内用例,或 CANNBench 取材适配)
615
+ 精度比对(golden 或仓内基准)→ 任一 case fail:阻断
616
+ ③ snapshot → delta_compare(口径漂移/精度失败 exit 2;±5% 噪声带三段结论)
617
+ ④ verdict 复跑:出现新的 critical finding(bound 恶化)→ 告警
618
+ ⑤ 输出:回归体检报告(逐 case KEEP/劣化/噪声带 + verdict 前后对照)
619
+ ```
620
+
621
+ 阻断 vs 告警的边界(防 CI 噪声杀死贡献):
622
+
623
+ | 信号 | 动作 | 依据 |
624
+ |------|------|------|
625
+ | 精度回归(任一 case fail) | **阻断** | 精度三道门禁,零妥协 |
626
+ | 口径漂移 / 无法比较 | **阻断**(exit 2) | 跨口径比较禁令 |
627
+ | speedup < 0.95(性能劣化超噪声带) | 默认**告警**(阈值 per 仓可配升为阻断) | 批量回归场景语义:差异算子转单算子调优处理,不直接杀 PR |
628
+ | 新增 critical finding | 告警 + 建议转调优域 | 判定是解释性信号 |
629
+
630
+ 27 年验收:≥1 个算子仓运行此门禁、拦截案例 ≥1;报告数据进校准与缺口
631
+ 感知回路(U2 产物回灌同机制,§5.7)。
632
+
633
+ ## 8.6 知识贡献通道共用门禁(27-6)
634
+
635
+ 外部/合作贡献的规则、机制卡、案例走**同一触发矩阵**(§8.1)——「门禁不豁免」的机制化:
636
+ 贡献 PR 的路径命中哪行就跑哪层,evals 全绿 + 人审才合入。首个外部贡献(27-6 验收)
637
+ 即以本矩阵为验证载体。
638
+
639
+ ---
640
+
641
+ # 9. 用例治理与生命周期
642
+
643
+ ## 9.1 编号与命名规范
644
+
645
+ | 层 | 规范 | 例子 |
646
+ |----|------|------|
647
+ | U0 | `S<nn>-<主题>`(smoke)/ `UT-<模块>-<nn>`(unit) | S01-collect-mc2-dryrun / UT-verdict-routing |
648
+ | U1 | `E<nn>-<主题>`(沿用现有) | E11-r-boundary-095 |
649
+ | U2 | `U2-<OP>-<SOC>-<nnn>` + scenario 标签 | U2-GELU-A2-001 / U2-MLA-A5-017(fusion) |
650
+ | U3 | 矩阵坐标 `<family>:<level>:<cards>:<mode>:<soc>:<scenario>` | fa:L4:1:standard:a5:fusion |
651
+
652
+ ## 9.2 新增 / 变更 / 废弃流程
653
+
654
+ ```
655
+ 新增:用例卡(含已知答案来源 + triggers 绑定)→ 评审(断言分级是否恰当 / A 类阈值锚点
656
+ 是否有源 / 正反例是否齐)→ 入库 → 纳入触发矩阵
657
+ 变更:改断言阈值(A 类)= 改锚点 → 标注校准来源与日期;改期望输出 = 必须先证明被测对象
658
+ 错了或知识更新了(阈值进化纪律:人审 + U1 全绿)——禁止「跑不过就改答案」
659
+ 废弃:标 superseded_by 与原因,不删除(历史可追溯:某版本起不再守护 = 知识)
660
+ ```
661
+
662
+ 评审四问(U1 规范 §4.2 的体系级版):① 已知答案哪来的?② 反例在哪?③ 断言分级对吗?
663
+ ④ 这个用例守护的变更路径(triggers)是什么?
664
+
665
+ ## 9.3 与 Roadmap 对应及验收指标
666
+
667
+ | Roadmap 项 | 本文落点 | 验收 |
668
+ |-----------|---------|------|
669
+ | M1.5-5 evals 10→20 | §4.4(E11-E20 清单) | 全绿(CI 阻断语义不变);每条 L1/L2/L3 规则 ≥1 正 1 反 |
670
+ | 离线干跑框架 | §3(U0)+ §5.5(U2 干跑) | 语法/路由/区间/死代码类问题合入即拦截 |
671
+ | 26-8 测试用例框架 / 27-4 U3 矩阵 | §5 / §6 + §7 取材 | 场景矩阵 ≥80%(26 出口);100% 已知格(27) |
672
+ | 26-4 CANNBench 标尺 | §7.4 | U2 用例卡含硬件锚定读数;HAP 备用锚点可用 |
673
+ | 27-5 算子仓 CI 门禁 | §8.5 | ≥1 算子仓运行;拦截 ≥1 |
674
+ | 27-6 贡献通道 | §8.6 | 首个外部贡献走完整门禁 |
675
+ | 27-4 缺口感知 | §6.1 空白格 = 排产输入 | 看板周更 |
676
+
677
+ **体系级北极星联动**:U2 真机用例的执行耗时数据直接支撑 TTFI 度量(用例计时 ≠ TTFI——
678
+ TTFI 是真人打点,但 U2 执行时长是其上界参考);U2 判定误报统计(findings 与已知 bound
679
+ 不符的比例)是 27 年「误报率 <10% 🟡」验收的唯一数据源。
680
+
681
+ ---
682
+
683
+ ## 附录 A:用例卡字段速查(U2)
684
+
685
+ | 字段 | 必填 | 说明 |
686
+ |------|------|------|
687
+ | `id` / `title` / `scenario` / `soc` | ✅ | 编号见 §9.1;scenario ∈ single_op/fusion/regression/qa |
688
+ | `source.bench_ref` / `source.task` / `source.project` | ✅ | CANNBench 引用(锁定 commit)/ 取材任务 / 被测工程(seed、official-pr、bench:example) |
689
+ | `timing.method/warmup/repeat` | ✅ | 口径适配(§7.6),进 HARD_KEYS |
690
+ | `goal.metric/threshold/anchor` | A 类 ✅ | geomean_speedup / hap / verdict_only;区间 + 锚点来源 |
691
+ | `expect.form` | ✅ | A 已知答案 / B 已知收益 / C 能力边界(§5.2) |
692
+ | `expect.verdict_known/verdict_after` | A 类 ✅ | 基线 bound 与优化后期望 |
693
+ | `expect.precision/report_six_elements/full_case_rows/noise_band_policy` | ✅ | M 类断言开关 |
694
+ | `routing_expect` | fusion ✅ | 污染 → 禁用机制的交叉断言 |
695
+ | `holdout` | 建议 | 泛化集引用(防特判) |
696
+ | `triggers` | ✅ | 用例-变更绑定(§8.1 定向触发) |
697
+ | `budget` / `runner` | ✅ | 干跑/真机时长预算与执行域 |
698
+
699
+ ## 附录 B:触发矩阵速查
700
+
701
+ ```
702
+ rules/** → U0(加载校验) + U1(全量) + U2(定向) 阻断
703
+ scripts/** → U0(冒烟+单元) + U1(全量) + U2(定向) 阻断
704
+ collect/** → U0(shim 冒烟) + U2(mc2 定向) 阻断
705
+ mechanism|family/** → schema/链接校验 + U2(定向) 阻断
706
+ agent/** → U2(dryrun 联调) 阻断
707
+ 任意 + 发版 tag → U0 + U1 + U2(全量真机) + U3(全矩阵) 阻断(出口)
708
+ 夜间定时 → U2(board 全量) 告警(连续两晚红→升级阻断)
709
+ ```
710
+
711
+ ## 附录 C:CANNBench 引用清单示例(`adapters/cann_bench_ref.yaml`)
712
+
713
+ ```yaml
714
+ schema: opstune.benchref/1.0
715
+ upstream: https://gitcode.com/cann/cann-bench.git
716
+ commit: <锁定 commit sha> # 上游 bump 须过 U2 干跑全量回归
717
+ tasks_metadata_version: "1.0.0" # tasks/metadata/VERSION
718
+ hardware: {a2: 910b2, a5: [950pr, 950dt-planned]}
719
+ tasks: # 本仓取材的任务清单(路径 + 取材目的)
720
+ - {path: tasks/level1/gelu, for: [U2-A, fixture-VEC]}
721
+ - {path: tasks/level2/softmax, for: [U2-A, reduce 族]}
722
+ - {path: tasks/level3/grouped_matmul, for: [U2-A, matmul 策略树]}
723
+ - {path: tasks/level4/mla, for: [U2-C, FA 降级]}
724
+ - {path: bench_lab/cv_agent_fa_bench, for: [U3-fa 格]}
725
+ timing_override: {warmup: 5, repeat: 20} # §7.6 口径适配,与 baseline 采集口径一致
726
+ ```
727
+
728
+ ---
729
+
730
+ *OpsTune 用例构建设计 · 2026-10 · V1.0 | 断言进脚本 · 已知答案 · 门禁机械化*