E6 验证与交付范围#
任务:MuJoCo #7,B6扩展机制与B7源码综合追踪。MuJoCo3.15.0固定源码9ea3cdfcae93bf2cc4dc0e1a1627c5a39a1e06e5;JAX0.7.2固定源码94233144f5469af28c065aa4263a6849338eeaa1仅用于语言/自动微分规则阅读,不是已验证的运行依赖锁。
基于干净main f09c994f69325f0ef40dc8005572aa3ff85f91c4建立docs/e6-extensions-boundaries;E3前置实际已交付,Issue开放且无未关闭PR。仅读取远端状态;本地课程/静态验收与主审发布是不同阶段,本记录不把本地提交当远端交付。
Issue 验收映射#
范围 |
交付 |
边界 |
|---|---|---|
回调/插件 |
扩展生命周期:全局注册、Python GIL、定义/实例/Data、init/reset/compute/advance/copy/destroy、PID/cable/SDF、decoder/resource |
不把plugin注册成功当能力/线程安全/设备支持;没有加载动态库 |
可变形机制 |
flex与弹性:顶点归属、Jacobian/虚功、边/约束/连续体、StVK/SNH、壳厚度、插值、有效metric |
当前mjSpec/XML与积分/solver组合分别核对;无形变或材料辨识实验 |
IPC |
IPC模式:barrier-free AL、临时rows/内层CG、merit/CCD、活动集合、尺度/限额/partial advance、日志/力/状态 |
frictionless、2D/附着/几何覆盖限制;不宣称防穿透实测或论文复现 |
后端与可微 |
后端/导数:CPU FD、原生/JAX/Warp执行结构、mask/top_k、CG/Newton循环、公开AD调用链、history |
有字段/可JIT不等于整条反向链;没有JIT、设备执行、梯度或性能测量 |
多物理/B7 |
多物理与综合追踪:被动力账本、fluid假设/单位/frame、真实added-mass分支、自建物理记忆、flex从字段到观测/恢复 |
自建热方程标为接口设计示例,不冒充原生求解模块;DexLab证据索引留E7 |
原创片段与练习 |
flex片段,五篇共40道带答案练习;1段完整Python回调示意 |
原创XML/布局读取代码仅AST/XML结构/源码核对,未编译或forward |
课程与来源 |
中英文入口、curriculum/roadmap、source map与两份manifest更新 |
A0完整安装、全路线审校和DexLab复用入口明确仍为E7 |
实际静态检查#
git diff --check
git diff --cached --check
python scripts/check_docs.py
python scripts/check_examples.py
文档/语法检查在Python3.10.12与CI对应的Python3.12.12通过:全仓相对Markdown链接、7个Python文件、7个文档Python片段、6个XML文件。XML只使用ElementTree解析,未进行MJCF schema或物理语义验收。全仓Markdown无TAB及其他非换行控制字符;E6的显示公式独立双美元分隔行、代码围栏、章节编号和40道练习逐项检查通过。
source manifest从62扩至86个MuJoCo官方文件,新增24个实际引用文件;全仓611个MuJoCo blob链接固定同一SHA、路径均入manifest,行锚有序且在实际文件范围内。另有external manifest的6个JAX文件、16个固定blob链接,本轮新增control_flow/loops.py。所有文件按Git blob算法计算身份,与固定官方tree/manifest核对一致;不把vendored Warp换成未读的外部最新版,也不把JAX归入MuJoCo的提交身份。身份/行号验证不替代逐段语义阅读。
第一轮来源检查发现plugin/elasticity/register.cc与cable.cc的结束行各超出文件一行,已将23/319分别修正为实际22/318并重跑全部检查。早期第五篇生成时漏了docs目录前缀,已移动到与导航一致的目录;标题跳号及XML属性表初始锚点过于宽泛也在主审预读后修正。固定源码下载曾出现SSL连接中断,限定重试后重新核对Git blob身份,没有采用不明缓存或跳过验证。
未做:原生MuJoCo/JAX/Warp import、动态库加载、模型编译、forward/step、回调执行、形变/接触/IPC求解、JIT、图捕获、渲染、CPU/GPU传输、导数计算、训练、benchmark或任何实验。片段若以后执行将有其README声明的原生行为,本轮只解析文本。
审查中特别保留的结论#
发现 |
课程处理 |
|---|---|
全局callback与每Data插件状态不同 |
shared model/Data隔离不自动隔离闭包;Python getter也不承诺保存外部裸C指针 |
注册与生命周期 |
header契约与实际空指针保护分别说明;旧文档resource.getdir及Solid/Membrane不能当当前可调用接口 |
材料与XML |
elastic3d是mjSpec-only;插值壳bending有真实编译/计算分支,旧否定句不沿用 |
IPC的名称与算法 |
实际是无log barrier的AL+CCD;一般附着、摩擦与初始非正gap边界逐项解释 |
partial advance |
运动部分接受仍time+=h;mju_warning为日志,不由rollout的Data warning检测完整覆盖 |
回调重复评估 |
有2D flex时sensorAcc可先free-flight再IPC重算;回调次数不能当物理步数 |
FD矩阵 |
nx=2nv+na;nu是原始ctrl标量宽度、nactuator是数量;不自动给出SO3三维控制切空间Jacobian或plugin_state列 |
JAX反向边界 |
公开step→forward→solver无自定义导数包装;进入约束solver且iterations≠1时外层while限制普通reverse-mode,结论不外推全部模型/后端 |
Warp历史缓冲 |
vendored后端有delay/interval;MJX make_data_warp跳过history复制,与直接vendored初始化不同,标为源码差异而非已复现故障 |
fluid模型 |
ρ和η可单独起效,frame/全长半长分别核对;常规added-mass调用传NULL加速度,不宣称完整附加惯量已进入M |
自审、未决项与下一阶段#
实现者按字段→编译→执行→观测→恢复→后端的链条自审了五篇课程,核对公式假设/量纲、数组地址、状态所有权、重复求值、实际终止与日志、源码文档差异。主agent已参与预读,最终独立验收与远端发布仍由主agent执行。
知识主线已按本阶段范围交付,运行证据仍未生成:动态库ABI、模型编译、柔性响应、IPC可行推进/日志、后端时序差异、实际AD支持组合和物理精度均须在后续明示工况下检验。源码发现不据此改写DexLab历史配置或给引擎排名。
下一项建议E7:在E2–E6经主审发布后,补齐A0完整安装/构建课程、全路线交叉审校与DexLab版本/工况证据入口。保留当前静态验收边界;不因安装专题而启动用户已推迟的实验。执行者本阶段完成本地提交后停止,等待主审另行派发。