Make the existing public checkpoint service available during plugin contract
compilation, so an installed Mission plugin can request it conditionally.
Capture pure numeric observations as one globally ordered snapshot per simulation
tick instead of one queue item per channel; camera RGB and calibration streams keep
their independent channel records.
Keep public Run configuration, observation query, camera recording, and FSR schemas
unchanged.
0.1.0a35
Align the Isaac Lab backend alias with UniRoboSim Isaac Lab 0.10.16, whose
pose-preserving FixedJoint implementation no longer mixes USD rigid-body Prim
frames with PhysX center-of-mass frames.
Keep the public scene.command.attachment@1 API and configuration unchanged.
0.1.0a34
Add the plugin-facing checkpoint service with opaque in-memory handles,
atomic .fsc persistence, repeated restore, and fastsim run --checkpoint.
Stage startup checkpoints before the first committed WorldState and Observation;
runtime restores preserve the live clock and invalidate planning caches.
Record checkpoint lineage in the globally ordered lifecycle stream so Replay can
select and retime the final continuous successful branch while retaining failed
attempts in the source FSR.
Align the built-in backend aliases with UniRoboSim Core 0.10.5, Isaac Lab 0.10.15,
MuJoCo 0.9.4, and PyBullet 0.9.4.
0.1.0a33
Add one producer-computed portable byte-size fact to lifecycle and plugin-event
envelopes without changing their stored FSR payload schema.
Let lossless Record queues account for actual bounded event bytes instead of the
1 MiB per-item service ceiling, preventing false overload after large-geometry
startup history.
Preserve subscription item limits, global record ordering and genuine critical
queue overload failure behavior.
0.1.0a32
Add strictly optional per-user deployment settings. With no settings file,
FastSim creates no state and preserves every 0.1.0a31 default.
Add full fastsim settings lifecycle commands and wire output, cache, Registry,
network, CLI, compute, Server and Viewer preferences to their operator consumers.
Add bounded fastsim outputs discovery, statistics, FSR inspection, validation,
Viewer launch and confirmed cleanup, plus fastsim server status.
Keep user preferences outside Run authoring, immutable ExecutionPlans and locks;
remote Registry credentials remain environment references and are origin-scoped.
0.1.0a31
Let the local fastsim run deployment create and inject the trusted
RunOutputPolicy required by enabled output-producing plugins.
Default CLI-owned artifacts to ./outputs and add --output-root for an
explicit local destination.
Keep Run documents and immutable ExecutionPlans free of deployment-owned
filesystem authority.
0.1.0a30
Revalidate static planning captures from planner-consumed configurations rather
than raw PhysX constraint/drive correction velocities.
Admit bounded sub-millimetre and sub-milliradian settling while still rejecting
collision-relevant pose, joint, topology, attachment and reset changes.
Preserve public configuration, planning, plugin and control APIs unchanged.
0.1.0a29
Align the Isaac Lab backend alias with UniRoboSim Isaac Lab 0.10.14.
Keep Scenario/WorldSpec poses in the entity Prim frame while the adapter
converts initial state to Isaac Lab's physical-root frame.
Preserve public configuration, application, plugin and service APIs unchanged.
0.1.0a28
Align the Isaac Lab backend alias with UniRoboSim Isaac Lab 0.10.13.
Preserve the asset-root EntityState.pose contract for scaled USD entities while
the adapter removes scale and shear before extracting a normalized rotation.
Keep public FastSim configuration and plugin service APIs unchanged.
0.1.0a27
Define EntityState.pose as the imported asset/model root; for USD assets it is
the spawned entity Prim and never an inferred articulation root link.
Apply scene pose commands to rigid and articulated entities through that same
contract while keeping explicit physical link states separate.
Pin UniRoboSim Core 0.10.4 so runtime state and command semantics cannot be mixed
with an older Core.
0.1.0a26
Add public builders and runtime transport for immutable visualization mesh
resources plus batched mesh instances.
Cache mesh topology by digest per Run generation; repeated visualization updates
send only lightweight instance transforms and appearance.
Preserve the existing primitive-only publish call shape for current plugins.
0.1.0a25
Accept positive XYZ scale on fastsim-composite-scene/1 environments and preserve
it through the immutable ExecutionPlan into UniRoboSim Core 0.10.2.
Require the Provider-owned entity.scale.composite_scene@1 capability instead of
silently ignoring scale; Isaac Lab conformance is supplied by Adapter 0.10.10.
Keep all existing rigid/static scene and standalone articulation scale behavior.
0.1.0a24
Align the Isaac Lab alias with UniRoboSim Isaac Lab 0.10.9. Planning geometry now
retains effective entity/ancestor scale, so scaled USD rigid objects expose the
same collision size to plugins, FSR geometry and the simulator.
0.1.0a23
Add bounded, non-nested when.any conditions to Plugin service and recording-source
declarations. A shared service can now activate when either of two explicit config
switches is enabled without becoming an unconditional runtime source.
Preserve exact lock verification and deterministic condition ordering for the new
declaration. Record 0.3.9 uses it so optional FSR geometry has zero source activation
when both geometry and render-state capture are disabled.
0.1.0a22
Align the Isaac Lab alias with UniRoboSim Isaac Lab 0.10.8. Render-capable
headless runs support native debug overlays in offscreen scene-camera images;
physics-only runs report the unsupported boundary before touching Isaac's
debug-draw plugin.
Extend the official Visualizer acceptance program with an explicit launch-profile
selector so the same scene-camera evidence can verify visible and headless modes.
0.1.0a21
Add the pay-for-play fastsim.fluid.audit@1 service and compact immutable
emission-batch contract. Core publishes only after a non-empty native batch is
accepted, shares the ordered Record allocator, and exposes the exact terminal
fluid sequence fence without copying active particle state.
Add the startup-only fastsim.fluid.replay@1 service for validated immutable
schedules. Replay suppresses configured live emitters, reconstructs the original
batch indices, positions, and velocities, and injects them before physics at the
recorded tick; empty schedules are valid and idempotent.
Restrict fluid audit to data_consumer plugins and fluid replay to
control_producer plugins. Record 0.3.8 and Replay 0.2.15 use these additive Core
services; replay remains explicitly single-generation.
0.1.0a20
Materialize the public scene.command plugin service when the selected backend's
locked capabilities declare pose, drag, or attachment commands. Optional requests
are pruned when no matching capability exists; required requests fail compilation
with PLUGIN_REQUIRED_SERVICE_UNAVAILABLE.
Carry the selected service through the immutable Plan into a revocable
ServiceBroker grant, allowing plugins to issue backend-neutral pose, drag,
attach, and detach commands without simulator handles.
Preserve granular backend enforcement after the grant: each command kind still
requires its corresponding public capability, so a backend advertising only
attachment support does not implicitly gain pose or drag support.
0.1.0a19
Add scenario.scene.environment.static, defaulting to true. Composite USD
environments keep authored floor, wall, table, and furniture collision while
undeclared bodies become true static colliders; explicit embedded entities remain
interactive and static: false preserves authored dynamics.
Register only articulation observations demanded by the locked Plan, cache immutable
WorldState schemas/provenance, and reuse already validated internal state envelopes.
The real Scene005 + G2 Mission/Record workload improves 12.28% without cameras,
15.08% with one 720p camera, and 14.40% with three 720p cameras, with complete FSRs
and zero gaps.
Do not cache a kinematics result after caller cancellation, even when a cooperative
provider returns a canonical cancelled response before its worker exits.
Add the optional fastsim.visualization@1 service and direct Application
visualization client for simulator-native points, lines, frames, paths, labels,
boxes, metrics, and events. Layer visibility, bounded lifetimes, upsert, clear,
reset, and generation fences are part of the public contract.
Bridge the portable API to UniRoboSim without exposing simulator handles. Mission,
model, teleoperation, MCP, and user plugins can publish the same primitives on
Isaac Lab, MuJoCo, and PyBullet when the selected provider accepts them.
Add public visualization snapshots and Server/MCP routes so browser workstations
and Agents can inspect, edit, capture, and clear the same live debug state.
Keep the feature pay-for-play: no service lookup, subscription, callback, polling,
or geometry capture is installed unless a selected plugin or application requests
visualization. Planning geometry remains a separate opt-in read.
Add a visible Isaac Lab acceptance demo covering native overlays, planning
geometry, layer control, metrics, events, cameras, lifecycle operation, interactive
debugging, MCP workflows, and visualization budgets.
0.1.0a18
Lower procedural surface-grid deformables into UniRoboSim, expose immutable
on-demand node position/velocity snapshots through Runtime and Application APIs,
and keep soft nodes out of rigid planning geometry.
Preserve pay-for-play behavior: no deformable state is copied until a caller asks,
while unsupported volume forms and backend mixed-matter constraints fail closed.
Add ChunkTicket.wait_for_applied_frames(...) and its async counterpart. The
event wakes at the requested threshold or any terminal result, does not mutate
execution, and only notifies while a real waiter exists; current Model Host can
schedule receding-horizon inference without a one-millisecond polling loop.
Add the optional, solve-only fastsim.kinematics.solve@1 Application service
and beginner simulation.kinematics.solve(...) API. It atomically captures the
current ordered joint state, runs a selected provider outside the owner loop, and
never sends a control command.
Reuse the independently distributed fastsim-kinematics-solver-spi and portable
URDF provider through exact entry-point and distribution provenance checks. A
compiled role: kinematics URDF may accompany a backend simulation USD; public
requests cannot supply host paths.
Fence results before and after provider work, cancel old-generation requests on
reset, bound active/orphan work and idempotency history, propagate timeout and
cancellation, and verify locked URDF size, identity, SHA-256, and UTF-8 content.
Keep the feature strictly optional and pay-for-play. Base installation and
ordinary Runs do not import a solver package, discover providers, create an
executor, or register a tick hook.
0.1.0a17
Make run.output structural integrity the default. It preserves closed readback
validation, validated byte counts, FSR structural validation, pinned file
identity, required synchronization, atomic publication, and failure cleanup
without computing a full-payload SHA-256 digest.
Keep strict content authentication as an explicit
RunOutputPolicy(..., integrity="sha256") option. This profile retains the
writer, validator, and pre-publication digest checks, including detection of
same-size content changes after validation.
Publish integrity explicitly in validation and commit receipt schema v2. Digest
fields are None in structural mode and real lowercase SHA-256 values in
sha256 mode; an empty string is never used as a sentinel.
0.1.0a16
Add backend-neutral rigid-object pose and explicit kinematic-drag commands to
FastSimApplication.scene. Every mutation is serialized through Runtime
authority and is available to direct applications without simulator handles.
Fence commands by Run generation, preserve deterministic command/drag identity
across retries, reject conflicting command-ID reuse, and invalidate same-tick
planning reads at the authority linearization point.
Keep the feature pay-for-play: no tick participant or polling is installed when
unused. Entity paths are indexed lazily, and ordinary native idempotence IDs avoid
hashing; only overlong portable IDs use bounded deterministic compaction.
Existing Run configuration and control APIs remain compatible. Backends that do
not declare the required scene-command capability return an explicit rejection.
0.1.0a15
Add the public planning-geometry batch capture and changed-scene update
contracts, together with a UniRoboSim batch bridge and bounded canonical
catalog cache. Repeated reads of the validated 4,247-resource acceptance
scene improved from 442.752 ms to 0.0993 ms while returning byte-identical
results.
Move resource identity, SHA-256 and span validation to cold admission
boundaries; warm reads reuse the validated immutable representation without
repeating authority calls.
Pin the built-in Isaac Lab provider to 0.10.6. The adapter now enables
Isaac Sim 6's RTX Real-Time implementation at Kit startup before selecting
RaytracedLighting, preventing the renderer selection from failing closed.
Existing planning and configuration contracts remain compatible; the batch
and changed-scene APIs are additive.
0.1.0a14
Pin the built-in Isaac Lab provider to 0.10.5. The adapter now selects
RaytracedLighting for ordinary camera worlds, retains explicit
RealTimePathTracing for fluid-isosurface rendering, and verifies the selected
renderer after Isaac Lab presets load.
Provider identity, entry point, the UniRoboSim v0alpha6 contract, and FastSim
public APIs and configuration contracts remain unchanged. Discovery continues to
reject every other distribution version.
0.1.0a13
Pin the built-in Isaac Lab provider to 0.10.4. Provider identity, entry point,
and the UniRoboSim v0alpha6 contract remain unchanged; discovery continues to
reject every other distribution version.
No FastSim public API or configuration contract changed.
0.1.0a12
Pin the built-in Isaac Lab provider to 0.10.3 for its startup-stage protocol.
Provider identity, entry point, and UniRoboSim v0alpha6 contract remain
unchanged; discovery continues to fail closed for every other distribution
version.
No FastSim public API changed. Existing Run Manifest provenance remains exact,
including recordings made with the previous provider release.
Align the official Record 0.3.3 and managed Replay 0.2.10 release train with
the a12 observation, terminal-cut, and output-readback contracts.
0.1.0a11
Pin the built-in Isaac Lab provider to 0.10.2. The adapter bounds native Kit
startup to 30 seconds and retries once only when a live isolated worker returns
no startup reply; deterministic startup errors still fail immediately.
Keep the provider identity and UniRoboSim v0alpha6 contract unchanged. The
previous 0.10.1 distribution is rejected by the exact release matrix rather
than being silently substituted.
Publish each immutable WorldState/Observation pair atomically with its committed
Runtime tick. Concurrent FastSimApplication.state() reads can no longer combine
the next world snapshot with the preceding sparse observation snapshot.
Preserve the last fully committed pair during reset, terminal cleanup, and a
failed partial collection. State reads perform one bounded lock acquisition and
do not depend on bounded snapshot history or retry loops.
0.1.0a10
Separate live channel delivery from ordered recording. channel_sequence
orders every due live channel item; optional capture_sequence orders only
captured items and is the terminal observation fence. The channel envelope
and barrier schemas are versioned as v2.
Continue publishing uncaptured but demanded channels to live subscribers while
allocating no global Record sequence and retaining no ordered history for them.
Add mixed-consumer regression coverage proving that enabling Record neither
changes another consumer's values nor introduces gaps in the capture sequence.
Require the sole ordered-capture owner to declare Manifest
recording_sources; ordinary data consumers no longer allocate a sequencer or
capture history. Record and Evaluation can coexist with channel filtering
applied before each subscriber queue.
0.1.0a9
Added an opt-in, independently stamped observation-channel stream while
preserving the existing snapshot query and subscription API.
Lower locked runtime.sensor_hz with exact or accumulating cadence, reset
tick-zero capture, sparse due-channel snapshots, and a separate latest cache.
Register camera RGB and calibration providers only from locked observation
demand. RGB is immutable CPU uint8 [H,W,3]; one camera/tick performs at most
one native RGB read.
Publish pinhole intrinsics, OpenCV optical-frame extrinsics, and one shared
calibration digest through generic observation provenance and the Run Manifest.
Keep snapshot and channel ordered-capture lanes mutually exclusive. The terminal
observation fence names whichever lane is active, avoiding unconsumed global
recording sequence gaps.
0.1.0a8
Added a component-owned, backend-specific articulation_drive profile for
MuJoCo position stiffness/damping and PyBullet position/velocity gains.
Validate and canonicalize drive profiles at compile and lock boundaries, then
project only the typed profile to UniRoboSim; arbitrary native parameters remain
rejected.
Keep native calibration in the locked Plan and provenance while excluding it
from the portable Replay compatibility digest only after fail-closed validation.
Pin the built-in MuJoCo and PyBullet providers to 0.9.3; Isaac Lab remains
pinned to 0.10.1.
0.1.0a7
Coupled the terminal Control admission fence and Runtime pause barrier at one
linearization point. A completion boundary can no longer be stamped at the
previous committed tick while one additional physics tick becomes terminal.
Kept the strict completion receipt == Runtime committed boundary invariant;
no Control, backend-adapter, or public plugin API contract changed.
0.1.0a6
Updated the exact built-in MuJoCo and PyBullet provider pins from 0.9.1 to
0.9.2; distribution names, entry-point values, provider identities, and
UniRoboSim contract versions remain unchanged.
Kept the Isaac Lab provider pin at 0.10.1 and UniRoboSim Core at 0.10.0.
Preserved fail-closed adapter discovery: the previous 0.9.1 MuJoCo and PyBullet
distributions are rejected rather than silently loaded under the new aliases.
0.1.0a5
Made simulation_contract_digest portable across simulator backends when only an
observation provider's identity or implementation version differs.
Kept provider and provider_version in the public Run Manifest so a recording
retains exact provenance.
Kept logical observation fields—including identity, schema, shape, dtype, unit,
frame, required/failure policy, and maximum age—inside the compatibility digest.
Confirmed that backend alias, selected component variant, and backend resource URI
remain outside the portable simulation contract.
0.1.0a4
Preserved plugin preset provenance through configuration locking.
Added the application recording/lifecycle service contracts used by installable
Record and Replay plugins.