一句话问题
#1086 的 Go2 Manager-Based factory 仍省略 legacy 默认启用的 kp/kd reset randomization;#1092 已交付正式 mdp.pd_gains,但当前真实 backend 证据仍靠测试临时注入 term,factory 本身尚未闭合。
最小结果
将 pd_gains 作为 factory-owned reset event 写入未注册 Go2 pilot,并删除测试侧注入。Go2 模型冷路径默认 gain 为 kp=35, kd=0,而 legacy 运行时基线为 35/0.5;因此使用社区 operation="abs" 与 kp_range=(31.5, 38.5)、kd_range=(0.45, 0.55),精确表达 legacy ±10% 数值范围,避免 scale 静默把 kd 保持为 0。
In scope
更新 Go2 Manager-Based factory 的 reset event 顺序与参数。
config contract test 固定 term/function/mode/ranges/operation。
真实 MuJoCo/Motrix reset test 直接消费 factory,不再修改 config。
Non-goals
不注册 production Go2,不改 registry、Hydra owner YAML、sim2sim、legacy DR 或 task class。
不新增 backend/config/public gain-default contract,不修改 XML/model 默认 gain。
不扩展其他 DR catalog、runner、IPC 或 lifecycle。
Owner 与规模
Go2 task config owner;普通行为 child。预计 2 个文件、≤120 行净手写改动、1 PR。
Umbrella: #1042
Depends on: #1086 , #1092
Acceptance
factory 自身包含 pinned community pd_gains surface,且 Go2 数值范围与 legacy 基线一致。
reset state 与 gains 保持一次 set_state;真实 MuJoCo/Motrix evidence 不依赖测试注入。
focused、ruff、mypy、pyright 与最终本地 make test-all 通过;按 Roadmap: 将 UniLab 迁移为社区通用的 Manager-Based API #1042 策略不运行远程 CI。
Stop conditions
需要 production 注册/Hydra、修改 model 默认 gain、新公共 contract 或超过 2 文件/120 行。
一句话问题
#1086 的 Go2 Manager-Based factory 仍省略 legacy 默认启用的 kp/kd reset randomization;#1092 已交付正式
mdp.pd_gains,但当前真实 backend 证据仍靠测试临时注入 term,factory 本身尚未闭合。最小结果
将
pd_gains作为 factory-owned reset event 写入未注册 Go2 pilot,并删除测试侧注入。Go2 模型冷路径默认 gain 为kp=35, kd=0,而 legacy 运行时基线为35/0.5;因此使用社区operation="abs"与kp_range=(31.5, 38.5)、kd_range=(0.45, 0.55),精确表达 legacy ±10% 数值范围,避免scale静默把 kd 保持为 0。In scope
Non-goals
Owner 与规模
Go2 task config owner;普通行为 child。预计 2 个文件、≤120 行净手写改动、1 PR。
Umbrella: #1042
Depends on: #1086, #1092
Acceptance
pd_gainssurface,且 Go2 数值范围与 legacy 基线一致。set_state;真实 MuJoCo/Motrix evidence 不依赖测试注入。make test-all通过;按 Roadmap: 将 UniLab 迁移为社区通用的 Manager-Based API #1042 策略不运行远程 CI。Stop conditions
需要 production 注册/Hydra、修改 model 默认 gain、新公共 contract 或超过 2 文件/120 行。