Parent: #983
Integration base: dev/issue-983-code-cleanup(不得向 main 提 PR)
Work type: infra · Area: benchmark/config · Scope: Small
Owner summary
本 child 只修正 benchmark/env/benchmark_env_step.py 的任务配置入口:所有任务(包括 Go2W rough)从对应 owner YAML compose,env.* / reward.* CLI 覆盖也进入 Hydra compose,并拒绝用 training.sim_backend= 单独切 backend。不会改变 benchmark 计时、绘图、matrix、backend 实现或 owner YAML 内容。永久维护成本是少量 compose/CLI contract 测试;收益是 benchmark 不再维护第二份 reward/config 真相源。
一句话问题
Go2W rough benchmark 手写了已与 owner YAML 漂移的 reward,通用 CLI 又通过 dataclass setattr 绕过 Hydra,并接受主入口明确禁止的 training.sim_backend=<backend> 切换方式。
最小交付结果
benchmark 的任务选择、backend 身份和 env/reward override 与正式 Hydra owner 入口使用同一配置语义。
In scope
- Go2W rough 改为 compose
conf/ppo/task/go2w_joystick_rough/<backend>.yaml,删除手写 reward 镜像。
- 将 benchmark 接受的
env.* / reward.* overrides 直接交给 Hydra compose,再由既有 BackendAdapter 构造 env cfg。
- 对
training.sim_backend= fail closed,并诊断应使用 task=<task>/<backend> owner 选择。
- 保持 mjwarp benchmark 使用已声明的 owner alias 规则,但不得把
training.sim_backend 当切换入口。
- 增加 Go2W rough reward/scene 与 owner 一致、Hydra override 插值/类型、非法 backend override 的测试。
Non-goals
- 不改变 owner YAML、reward 数值、benchmark timing loop、输出 schema 或图表。
- 不新增 benchmark 专用 config schema,不修改正式 train/play CLI。
- 不 production 化 mjwarp benchmark adapter,不扩大任务/backend 支持矩阵。
Owner 与预计改动
1 个 benchmark 文件及 1-2 个测试文件,预计净改动 <300 行,1 PR。
Acceptance criteria
go2w_rough 不再构造硬编码 RewardConfig,compose 后的 reward key/value 与 owner YAML 一致。
- CLI
env.* / reward.* 由 Hydra 解析并保留类型/插值/未知键 fail-closed 语义,不再递归 setattr。
training.sim_backend=<backend> 返回明确错误;backend 只能随 task=.../<backend> owner 选择。
- matrix 与单任务 smoke、定向 config tests、
make test-all、精确 head CI 全绿。
Stop conditions
若需要改变正式 owner YAML、benchmark 输出格式、生产 backend contract 或超过 5 个文件,暂停并回到 #983。
Owner summary
本 child 只修正
benchmark/env/benchmark_env_step.py的任务配置入口:所有任务(包括 Go2W rough)从对应 owner YAML compose,env.*/reward.*CLI 覆盖也进入 Hydra compose,并拒绝用training.sim_backend=单独切 backend。不会改变 benchmark 计时、绘图、matrix、backend 实现或 owner YAML 内容。永久维护成本是少量 compose/CLI contract 测试;收益是 benchmark 不再维护第二份 reward/config 真相源。一句话问题
Go2W rough benchmark 手写了已与 owner YAML 漂移的 reward,通用 CLI 又通过 dataclass
setattr绕过 Hydra,并接受主入口明确禁止的training.sim_backend=<backend>切换方式。最小交付结果
benchmark 的任务选择、backend 身份和 env/reward override 与正式 Hydra owner 入口使用同一配置语义。
In scope
conf/ppo/task/go2w_joystick_rough/<backend>.yaml,删除手写 reward 镜像。env.*/reward.*overrides 直接交给 Hydra compose,再由既有BackendAdapter构造 env cfg。training.sim_backend=fail closed,并诊断应使用task=<task>/<backend>owner 选择。training.sim_backend当切换入口。Non-goals
Owner 与预计改动
1 个 benchmark 文件及 1-2 个测试文件,预计净改动 <300 行,1 PR。
Acceptance criteria
go2w_rough不再构造硬编码RewardConfig,compose 后的 reward key/value 与 owner YAML 一致。env.*/reward.*由 Hydra 解析并保留类型/插值/未知键 fail-closed 语义,不再递归setattr。training.sim_backend=<backend>返回明确错误;backend 只能随task=.../<backend>owner 选择。make test-all、精确 head CI 全绿。Stop conditions
若需要改变正式 owner YAML、benchmark 输出格式、生产 backend contract 或超过 5 个文件,暂停并回到 #983。