0.1.0a36

  • 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.