Parent: #1259
Depends on: #1256 (可复核插桩 PR #1264 已合入)、#1260 (7-case pinned baseline 已记录)
启动授权:maintainer 已明确要求执行 #1259 Wave 2 U1。
一句话问题
同一次 MBA update_state 中,termination、reward、command、policy/critic observation 会重复通过 EntityData 读取相同 backend state。#1256 实测 getter 占 update_state 的 5%–26%;walk/motrix 的 joint_pos/joint_vel 以及 motion tracking 的 body state 都存在重复 full-batch 读取。
最小交付结果
在 EntityData / manager env state-read boundary 内,为一次 update_state 的同一 simulation state phase 复用相同 leaf backend getter 结果;每次 physics step、实际 set_state、step/interval event mutation、partial reset 之后都必须重新读取。
In scope
EntityData 按 getter 与冷路径固定 selector 缓存 leaf backend state;作用域外保持当前逐次读取行为。
ManagerBasedRlEnv 为 update_state 打开并可靠关闭 read phase;step/interval event 后清空,ResetStateTransaction 实际提交 set_state 后清空。
保持 排查:MBA observation / update_state 路径开销定位(2.2-2.4 倍) #1256 getter timing:cache hit 不伪装成 backend getter 时间,block/term timing 仍闭合。
补 owner-level tests,锁定同相位单次读取、下一 physics step 重读、set_state/event/partial reset 失效、异常退出不泄漏 cache,以及 obs/reward/termination 数值与顺序不变。
复用现有 7-case benchmark,报告同 commit before/after 的 getter timing 与 collector throughput。
Non-goals
不融合或改写 ObservationManager / RewardManager term 与固定管线(U2/U3 边界)。
不改变 manager term 签名、执行顺序、RNG、reset/final observation、task I/O 或 sim2sim contract。
不新增 SimBackend 方法、公共 manager lifecycle、direct fallback、runner/IPC/learner 路径。
不做 backend-specific cache 或 asset/metadata 热路径探测。
Owner 与预计改动
Owner:EntityData / ManagerBasedRlEnv state-read boundary;ResetStateTransaction 只暴露内部 commit 事实用于精确失效。
预计 4–7 个文件、≤500 行净手写改动、1 个 PR,base 为 dev/issue-1042-manager-based-api。
永久维护成本是 read phase 与 physics/event/set_state/reset 失效规则及 focused parity tests。
Acceptance criteria
Stop conditions
无法在现有 update_state / ResetStateTransaction owner 内明确 physics substep、set_state、partial reset 的失效边界。
需要新增公共 lifecycle/SimBackend contract,或必须改变 term 顺序/返回数组语义才能复用。
达到 15 文件、800 行、一个 PR 上限,或实测收益无法覆盖 cache 维护成本。
Parent: #1259
Depends on: #1256(可复核插桩 PR #1264 已合入)、#1260(7-case pinned baseline 已记录)
启动授权:maintainer 已明确要求执行 #1259 Wave 2 U1。
一句话问题
同一次 MBA update_state 中,termination、reward、command、policy/critic observation 会重复通过 EntityData 读取相同 backend state。#1256 实测 getter 占 update_state 的 5%–26%;walk/motrix 的 joint_pos/joint_vel 以及 motion tracking 的 body state 都存在重复 full-batch 读取。
最小交付结果
在 EntityData / manager env state-read boundary 内,为一次 update_state 的同一 simulation state phase 复用相同 leaf backend getter 结果;每次 physics step、实际 set_state、step/interval event mutation、partial reset 之后都必须重新读取。
In scope
Non-goals
Owner 与预计改动
Acceptance criteria
Stop conditions