用途:test-ml-pipeline 是 ML 工作区中测试目录的轻量路由器,负责确定测试存放位置、实验与测试的配对关系,以及每个测试类别由哪个子技能负责。
主要能力与规则:
- 配对规则为硬性要求:journal/NN_<short_name>.md、experiments/NN_<short_name>.py、tests/<category>/test_NN_<short_name>.py 三者使用相同的 NN_<short_name> 词干。测试文件基名带 pytest 要求的 test_ 前缀。一个实验对应每个类别一个测试文件,不允许 test_<NN>v2.py 或 test_NN<short_name>_2.py,需要演进时原地编辑。
- 无已批准设计笔记则不创建测试。若 journal/NN_<short_name>.md 不存在或未达到 approved,交回 iterate-ml-experiment。
- 每轮迭代必须有一个通过的 smoke 测试,实验才能在 JOURNAL.md 中标记完成。其他类别(regression、distribution 等)为可选。
- 本技能只放置空测试文件并派发子技能,不写断言体、fixture 或测试逻辑。
使用方式:
- 每轮先输出 Pre-flight 清单,确认设计笔记、实验脚本、测试类别、子技能、测试文件词干及 pytest 依赖。
- 依据 Dispatch 表选择子技能:smoke 相关信号派发 smoke-test-ml-pipeline;regression 与 distribution 标记为未来未实现,遇到时停止,不创建目录、不写断言。
- 在 tests/<category>/test_NN_<short_name>.py 放置带 pytest 脚手架的空文件(一个 def test_*(): 空函数及 TODO 标记),已存在则不覆盖。
- 派发子技能后,由子技能负责断言与 fixture,并确认草稿后再运行测试。
适用场景:ML 工作区中实验设计笔记已批准、需要为其创建对应测试文件并路由到正确测试子技能时。
限制:不运行 pytest;不写断言体;不决定测试是否必需;不修改 tests/ 之外的文件。当前仅实现 smoke-test-ml-pipeline,regression-test-ml-pipeline 与 distribution-test-ml-pipeline 尚未实现。pytest 被 data-science-python-stack 声明为 Tier 1 强制依赖。