Owner summary
当前 G1 walk 与 motion tracking 的 numba_acceleration 是实验性 task-owned 手写路径:term 名单、NumPy dispatch、Numba 数学和整段融合内核分散维护,配置只能有限开关,新增 term 需要同步修改多处。本 roadmap 只在现有 NpEnv 生命周期内建立最小的结构化 term 定义、配置组合和自动 Numba 融合,并以 G1WalkFlat、G1MotionTracking 为双 pilot;不涉及 mjwarp、backend contract、manager、runner 或新 lifecycle。预计 5 个聚焦 child issue / PR。
为什么现在做
src/unilab/envs/locomotion/g1/joystick.py 与 motion_tracking/common/rewards.py 已有两套字符串 key → NumPy callable dispatch。
joystick_numba.py 与 motion_tracking/common/numba.py 各自维护固定 TERM_ORDER、per-env 数学和手写融合内核。
env.numba_acceleration 已进入多个 owner YAML,但目前默认关闭;G1 walk Numba 仍不支持 observation noise。
现有局部 parity 测试证明双 pilot 可作为迁移基线,但当前测试使用明确容差,不宣称 bit parity。
最小目标
一个轻量、backend-neutral 的 term 定义与冷路径 plan:稳定 key、类别、参数、输入/output/workspace 声明和 canonical order。
NumPy Tier 1 与 Numba Tier 2 消费同一注册项和同一配置;Numba 融合由 plan 自动组装,不再手写整段 if/固定 term 列表。
配置决定已注册 term 的选择和权重;未知非零 term 在初始化/compile 边界 fail closed。
scale 保持运行时参数;零 scale 用显式运行时跳过,不声称编译期 DCE。
先跑通 G1WalkFlat 与 G1MotionTracking,再决定是否推广到其他 task。
明确不做
与 mjwarp、MuJoCo/Motrix adapter、backend capability 或 support 等级相关的改动。
恢复 src/unilab/manager、TaskCompiler、PolicyABI、typed batch/mutation 或第二套 env lifecycle。
新 runner、训练入口、checkpoint 格式、sim2sim contract 或常规 CI gate。
在本 roadmap 中新增 history、通用 event/DR manager、keyed RNG 或 motion asset fingerprint。
一次迁移全部 task,或建设可覆盖所有未来 term 形态的完整大框架。
Owner boundary
term registry/plan 只处理数组、标量参数和预绑定 workspace,不接收 env/backend 私有对象。
NpEnv.step()、autoreset、terminal observation 与 task update_state() 编排保持不变。
motion reference 获取、adaptive sampling、frame advance、clip-end teleport/truncation 继续由 MotionTrackingEnv owner 管理;term plan 只替换数值计算部分。
asset、selector 和 workspace 仅在 init/plan materialization 冷路径解析或分配。
Child issues
Work: 建立最小结构化 term plan 与 NumPy Tier 1 runtime #919 — 建立最小结构化 term plan 与 NumPy Tier 1 runtime。
Work: 将 G1WalkFlat NumPy 路径迁移到配置驱动 term plan #920 — 将 G1WalkFlat NumPy 路径迁移到配置驱动 term plan。
Work: 将 motion tracking NumPy 路径迁移到配置驱动 term plan #921 — 将 motion tracking NumPy 路径迁移到配置驱动 term plan。
Work: 自动组装 Numba 融合内核并接入 G1WalkFlat #922 — 自动组装 Numba 融合内核并接入 G1WalkFlat。
Work: 接入 motion tracking 自动 Numba 融合并完成双 pilot 收口 #923 — 接入 motion tracking 自动 Numba 融合并完成双 pilot 收口。
依赖顺序固定为 #919 → #920 → #921 → #922 → #923。前三个是近期可执行项;#922 /#923 只有在 Tier 1 contract、数值语义与维护收益得到确认后才启动。
所有 child PR 必须以 refactor/issue-902-mjwarp-squashed-delivery 为 base;不得直接向 main 提 PR。
规模与永久维护成本
5 个 child issue、5 个聚焦 PR;每个 child 默认不超过 15 个文件、800 行净手写改动。
永久代码:轻量 term registry/plan、NumPy executor、Numba assembler/cache,以及两个 pilot 的注册项。
永久测试:schema/fail-closed/canonical order、每个 term 的 NumPy↔Numba 对拍、双 pilot lifecycle parity 和局部 benchmark。
不增加专属 CI workflow、长期 raw benchmark artifact 或 issue-specific gate。
总体验收
Stop conditions
任一 child 超过 15 个文件或 800 行净手写改动。
需要修改 backend、runner、NpEnv lifecycle、训练 ABI 或常规 CI。
单一 source authoring 无法同时满足 NumPy 开发体验与 Numba 性能,且 paired implementation + 自动 parity 也不足以控制漂移。
自动融合在任一 pilot 上低于迁移前 baseline 的 90%,或编译/cache 成本不适合默认维护。
第二个 pilot 暴露的抽象需求会演变成通用 manager/compiler;此时暂停并重新确认产品方向。
Supersedes
Owner summary
当前 G1 walk 与 motion tracking 的
numba_acceleration是实验性 task-owned 手写路径:term 名单、NumPy dispatch、Numba 数学和整段融合内核分散维护,配置只能有限开关,新增 term 需要同步修改多处。本 roadmap 只在现有NpEnv生命周期内建立最小的结构化 term 定义、配置组合和自动 Numba 融合,并以G1WalkFlat、G1MotionTracking为双 pilot;不涉及 mjwarp、backend contract、manager、runner 或新 lifecycle。预计 5 个聚焦 child issue / PR。为什么现在做
src/unilab/envs/locomotion/g1/joystick.py与motion_tracking/common/rewards.py已有两套字符串 key → NumPy callable dispatch。joystick_numba.py与motion_tracking/common/numba.py各自维护固定TERM_ORDER、per-env 数学和手写融合内核。env.numba_acceleration已进入多个 owner YAML,但目前默认关闭;G1 walk Numba 仍不支持 observation noise。最小目标
if/固定 term 列表。G1WalkFlat与G1MotionTracking,再决定是否推广到其他 task。明确不做
src/unilab/manager、TaskCompiler、PolicyABI、typed batch/mutation 或第二套 env lifecycle。Owner boundary
NpEnv.step()、autoreset、terminal observation 与 taskupdate_state()编排保持不变。MotionTrackingEnvowner 管理;term plan 只替换数值计算部分。Child issues
G1WalkFlatNumPy 路径迁移到配置驱动 term plan。G1WalkFlat。依赖顺序固定为
#919 → #920 → #921 → #922 → #923。前三个是近期可执行项;#922/#923 只有在 Tier 1 contract、数值语义与维护收益得到确认后才启动。所有 child PR 必须以
refactor/issue-902-mjwarp-squashed-delivery为 base;不得直接向main提 PR。规模与永久维护成本
总体验收
make test-all后再创建/更新 PR。Stop conditions
NpEnvlifecycle、训练 ABI 或常规 CI。Supersedes