一句话问题
Go2JoystickFlat pilot 所需的 manager lifecycle、entity facade 与最小 terms 已分别具备,但仓库还没有一个 task-owned Python factory 把它们按社区 Manager-Based 配置结构组装起来;因此还无法在不接 production registry/Hydra 的前提下证明完整 pilot 表面可以被同一份 NumPy config 构造和执行。
只做什么
新增未注册的 Go2 flat Manager-Based task config factory,并用真实 MuJoCo fixture 验证:
- policy / critic observation term 顺序与维度分别为 49 / 52;
- 单个 12-D JointPositionAction、twist velocity command、default + uniform root reset;
- 当前 Go2 flat 已启用的 9 个非零 reward key、weight、tracking sigma 与 base-height target;
- time_out 与 bad_orientation termination;
- ManagerBasedRlEnv 可 reset、执行一步并返回有限的 NumPy NpEnvState。
Factory 保持 pinned mjlab 的 plain config instance、ordered dict、func + params 结构,只做 UniLab asset/entity/sensor 名称与 NumPy runtime 适配。测试 fixture 直接构造 backend/env,不注册新 task 名,不经 scripts。
不做什么
- 不修改或注册 production Go2JoystickFlat,不改现有 Go2 env、Hydra YAML、registry 或训练入口。
- 不接入现有 DomainRandomizationManager,不迁移 kp/kd、mass、COM、gravity、push 或 terrain curriculum。
- 不新增 SimBackend method、scene/entity capability、共享 lifecycle、runner、IPC 或 learner 逻辑。
- 不实现 foot drag 或扩大 reward/action/observation catalog。
- 不宣称 Motrix/Drake production support;本 child 只用已支持的真实 MuJoCo fixture 证明 config 可执行。
Owner、规模与永久维护
Env task owner;普通行为 child。预计 2–3 个文件、≤600 行净手写新增、1 PR。永久维护项是一份 Go2 task factory 与一个近风险 fixture;不形成第二套 runtime 或配置系统。
Umbrella: #1042
Depends on: #1051, #1055, #1057, #1060, #1061, #1063, #1067, #1072, #1074, #1079, #1081, #1082, #1084
Acceptance criteria
- Factory 的公共形态对应 pinned mjlab task-owned Python factory,全部数值 buffer/term 为 NumPy 路径。
- term 名称、插入顺序、参数、weights、observation/action dimensions 与当前 Go2 flat default PPO owner 逐项有测试证据。
- 真实 MuJoCo construction/reset/step 不依赖 legacy RewardContext、Go2WalkTask、runner、IPC 或 training。
- 能力、shape、NaN/Inf 缺口在现有最近 owner 边界 raise;无 warning/skip/zero/fallback。
- focused tests、ruff、mypy、pyright 与最终本地 make test-all 通过。
Stop conditions
- fixture 需要新增 backend/entity public capability、修改 ManagerBasedRlEnv lifecycle 或绕过正式 contract。
- 保持 pilot 语义必须接入共享 DR、production registry/Hydra 或修改现有 Go2 task。
- 超过 3 个文件或 600 行净手写新增。
一句话问题
Go2JoystickFlat pilot 所需的 manager lifecycle、entity facade 与最小 terms 已分别具备,但仓库还没有一个 task-owned Python factory 把它们按社区 Manager-Based 配置结构组装起来;因此还无法在不接 production registry/Hydra 的前提下证明完整 pilot 表面可以被同一份 NumPy config 构造和执行。
只做什么
新增未注册的 Go2 flat Manager-Based task config factory,并用真实 MuJoCo fixture 验证:
Factory 保持 pinned mjlab 的 plain config instance、ordered dict、func + params 结构,只做 UniLab asset/entity/sensor 名称与 NumPy runtime 适配。测试 fixture 直接构造 backend/env,不注册新 task 名,不经 scripts。
不做什么
Owner、规模与永久维护
Env task owner;普通行为 child。预计 2–3 个文件、≤600 行净手写新增、1 PR。永久维护项是一份 Go2 task factory 与一个近风险 fixture;不形成第二套 runtime 或配置系统。
Umbrella: #1042
Depends on: #1051, #1055, #1057, #1060, #1061, #1063, #1067, #1072, #1074, #1079, #1081, #1082, #1084
Acceptance criteria
Stop conditions