运行前完成决定

组件版本、后端 variant、插件 binding、资源 digest 与运行频率在编译阶段确定。运行时不扫描目录、不隐式下载、不根据导入顺序选择冲突项。

一份计划,多种入口

CLI、Python API 和 Server 都围绕同一 ExecutionPlan 工作。接口可以不同,但生命周期、状态、控制与错误语义不能分叉。

Core 不拥有任务语义

Core 理解物理世界、时序、观测、控制目标、取消、输出与来源;它不解释行为树、Action、Goal、抓取语义或评估规则。scenario.behaviorscenario.evaluation 被锁定并按权限交给插件。

能力必须显式声明

插件通过 Manifest 声明角色、服务和 Scenario 输入,再由 Run 与部署策略进一步收窄。无法提供的后端能力必须显式报告,不能用空结果伪装成功。

所有写入经过权威边界

场景写入和控制命令必须在合法 generation 与 tick 边界进入运行时。插件和远程接口不能持有后端对象,也不能绕过仲裁直接 step 世界。

失败也是结构化结果

配置诊断、能力缺失、控制拒绝、超时、取消和输出失败都有明确状态。调用者的等待超时不等于后端操作已取消;失败输出也不能被发布成完整成功产物。

可移植不等于抹平差异

UniRoboSim 稳定的是应用边界和能力协商。每个 Provider 仍可暴露自身真实能力与限制,FastSim 不承诺不同物理引擎的数值结果天然相同。

文档遵循同一原则

概念、指南、参考和示例分别回答“是什么/为什么”“怎样完成一类工作”“准确接口是什么”“一个可运行实例是什么”。源码中的 README 数量不会决定主导航层级。