# Rosclaw Simforge

> Safely install, validate, diagnose, and optimize ROSClaw simulation workflows across MuJoCo/MJWarp, ROS 2 rosbridge, turtlesim, Gazebo, Isaac Sim, Isaac Lab multi-GPU training, MCP, and the signed ROSClaw Hub. Use for evidence-backed physical-AI smoke tests, 4-GPU validation, simulator integration, Hub upload/download tests, or ROSClaw verification reports without a real robot.

- Skill: `ros-claw/rosclaw-simforge` (Agent Skill, multi-file: 7 files)
- Install (CLI): `npx skillmds@latest add ros-claw/rosclaw-simforge`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ros-claw/rosclaw-simforge/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ros-claw (https://skillmd.com/u/ros-claw)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ros-claw/rosclaw-simforge

---


# ROSClaw SimForge

Validate the full software loop from CLI and safety gates through simulators,
MCP, evidence receipts, and asset distribution. Treat real hardware as out of
scope unless the user separately authorizes it.

## Safety boundary

- Use the exact `rosclaw` CLI from the checkout's `.venv/bin`; report a stale
  global CLI before changing it.
- Use a temporary `ROSCLAW_HOME` for smoke tests and Hub operations.
- Write raw trajectories, logs, receipts, and reports to an evidence directory
  outside the source checkout. Commit only reproducible code and tests.
- ROS graph discovery, subscription, and simulation are allowed. Never publish
  actuator commands directly, call a motion service, or send an action goal.
- Route any action request through `rosclawd request_action` / ROSClaw MCP so
  the daemon, sandbox, and firewall remain in the path.
- Do not stop unrelated GPU processes or containers. Inspect available memory
  and choose the smallest useful workload.
- A dependency failure is a failure to diagnose and install around, not a
  passing skip. Keep unsupported real-robot checks explicitly out of scope.

## Workflow

### 1. Establish provenance

Read the repository `AGENTS.md` and the task's verification document. Record:

```bash
git rev-parse HEAD
git status --short
nvidia-smi --query-gpu=index,name,memory.used,memory.free --format=csv
```

Fetch or compare upstream before claiming the checkout is current. Preserve
all pre-existing user changes.

### 2. Validate the ROSClaw core

Prepend the repository environment to `PATH`, use a temporary home, and run
doctor, status, the deterministic demo, receipt explanation, and the universal
agent/MCP probe. Then run the repository test groups requested by the project
verification document.

Do not claim a simulator pass from import-only evidence. Require a physics
step, a bounded task outcome, and a receipt or other machine-readable result.

### 3. Validate ROS 2 and Gazebo

Run `scripts/verify_ros2.sh` from this skill directory. It builds the Humble
rosbridge/turtlesim image, deploys the stack, discovers the live graph,
subscribes to pose, and proves direct velocity requests are blocked.

For Gazebo, run `scripts/verify_gazebo.sh`. Humble's recommended pairing is
Gazebo Fortress. The script now runs the Phase 3 GuardedBase world with real
diff-drive, odometry, laser, independent ROS bridges, and a deadman under
`launch_testing`. It injects actual process signals and requires bounded stop,
observation-loss fail-closed behavior, cancellation/recovery, and no old-action
replay. For the full MCP → rosclawd path and rosbridge-loss recovery, run:

```bash
rosclaw chaos run gazebo-guarded-base \
  --faults agent-kill,rosbridge-loss,odom-stale,worker-crash \
  --output-dir /an/external/evidence/directory
```

Raw evidence must remain outside the checkout. A `/clock` sample alone is not
enough to claim GuardedBase integration.

### 4. Validate Isaac Lab and four GPUs

Read `references/verified-stack.md`, then run
`scripts/verify_isaaclab.sh`. The script performs bounded single-GPU and
multi-GPU Cartpole training with Newton/MJWarp. Four visible devices must map
to four ranks, synchronize gradients, advance physics, and exit zero.

An Isaac Sim container that advances physics but aborts during shutdown is a
partial pass with a lifecycle defect, not a clean pass.

### 5. Validate G1 GoalForge

Use an external checkout of RoboNaldo's G1 deployment assets and keep all
episode trajectories outside ROSClaw. The backend must qualify the exact
29-joint Unitree `hg` order, ONNX shape, motion tensors, body hash, and prior
hash before physics starts.

Run the product surface from the checkout:

```bash
.venv/bin/python -m rosclaw.entrypoint simforge doctor g1-goalforge --all \
  --output /evidence/doctor/goalforge-doctor.json
.venv/bin/python -m rosclaw.entrypoint simforge validate g1-goalforge \
  --pairs 100 --output /an/external/recovery-100.json
.venv/bin/python -m rosclaw.entrypoint simforge validate g1-goalforge \
  --profile nominal-success --workers 4 \
  --output /an/external/nominal-success-30.json
.venv/bin/python -m rosclaw.entrypoint demo run g1-goalforge \
  --target-zone random --failure-to-success --live-dashboard \
  --output-dir /an/external/new/evidence/directory
.venv/bin/python -m rosclaw.entrypoint practice start \
  --task g1_penalty_kick --generation 3 \
  --output-dir /an/external/new/practice/directory
.venv/bin/python -m rosclaw.entrypoint evolution run \
  --task g1_penalty_kick --generation 10 --gpus 0,1,2,3 \
  --output-dir /an/external/new/evolution/directory
.venv/bin/python -m rosclaw.entrypoint chaos run g1-goalforge \
  --faults agent-kill,worker-crash,dds-loss,state-stale \
  --output-dir /an/external/new/chaos/directory
MUJOCO_GL=egl \
.venv/bin/python -m rosclaw.entrypoint evolution export \
  /an/external/new/evidence/directory \
  --format video \
  --output /an/external/new/video/g1-goalforge.mp4
```

The four-GPU screen is a prioritizer. Require a disjoint, balanced CPU MuJoCo
label-agreement run before accepting its labels, preserve mismatches as
counterexamples, and use CPU MuJoCo strict replay for final physical truth.
Private Holdout case rows must not enter candidate generation or public output.

Build E5 proofs only from passing source reports, then independently replay
their bundle hash and primitive causal/fault/replay fields:

```bash
.venv/bin/python -m rosclaw.entrypoint proof build g1-goalforge \
  --demo /evidence/demo/goalforge-demo.json \
  --recovery /evidence/recovery/recovery-100.json \
  --flywheel /evidence/practice/goalforge-flywheel.json \
  --memory /evidence/evolution/memory-ablation-100.json \
  --four-gpu /evidence/evolution \
  --agreement /evidence/evolution/cpu-gpu-label-agreement.json \
  --continual /evidence/evolution/continual-g0-g10.json \
  --chaos /evidence/chaos/goalforge-chaos.json \
  --output-dir /evidence/proofs
.venv/bin/python -m rosclaw.entrypoint proof replay /evidence/proofs \
  --modules body,provider,failure_router,sandbox,practice,memory,know,how,auto,darwin,registry,rosclawd
.venv/bin/python -m rosclaw.entrypoint promotion evaluate g1-goalforge \
  --doctor /evidence/doctor/goalforge-doctor.json \
  --recovery /evidence/recovery/recovery-100.json \
  --flywheel /evidence/practice/goalforge-flywheel.json \
  --four-gpu /evidence/evolution \
  --continual /evidence/evolution/continual-g0-g10.json \
  --chaos /evidence/chaos/goalforge-chaos.json \
  --proofs /evidence/proofs \
  --output /evidence/promotion-v4.json
```

The Promotion command requires a fresh simulation-only Doctor report. Treat a
Doctor/Champion/Proof Body or kick-prior hash mismatch as a hard failure, and
require all twelve GoalForge module proofs rather than only the four learning
modules.

Unitree DDS tests must use loopback, a non-default isolated domain, canonical
`rt/lowcmd` and `rt/lowstate`, simulation-only permits, and
`hardware_authorized=false`. Never start a physical G1 transport.

GoalForge video export must consume strict-replay trajectory artifacts outside
the checkout and write the MP4 and manifest outside the checkout. It is
visualization-only: never use rendered pixels or subtitles as Promotion truth.

For success-rate optimization, use `--profile nominal-success` as the CPU
MuJoCo acceptance surface. Require all 30 balanced nominal cases, at least 95%
success, a gain of at least 30 percentage points over the fixed prior, 100%
safe selection, 100% independent verification, and 100% strict replay. Keep
the two-attempt runtime recovery budget separate from the at-most-32-candidate
offline simulation search. Do not generalize that result to moving balls,
randomized mass/friction/latency/noise/disturbance, or the 0.90 m target unless
those cases pass a separately declared validation profile.

### 6. Validate MCP

First probe ROSClaw's built-in MCP server and list its tools. For the community
Isaac Sim MCP adapter, isolate installation, start its extension only in a
simulator, perform an MCP initialize/list-tools/call-tool round trip, and state
that it is community-maintained rather than an NVIDIA-official MCP.

Never expose `execute_script` or scene mutation tools to real hardware.

### 7. Validate Hub upload/download

Run `scripts/verify_hub.sh`. It uses the repository fixture key and an isolated
local HTTP registry to exercise validation, signature verification, login,
signed publish, catalog sync/search, remote dry-run download, install, list,
uninstall, and empty final state. Never reuse the fixture key for production.

### 8. Report the evidence ceiling

Separate `PASS`, `PARTIAL`, `FAIL`, and `OUT OF SCOPE`. Include exact commit,
versions, commands, exit codes, test counts, GPU mapping, and artifact paths.
The maximum claim must match the strongest verified evidence domain. Simulation
evidence can promote only from baseline to SIM and never proves real-robot safety.

## Resources

- `scripts/verify_ros2.sh` — live ROS 2/turtlesim safety loop.
- `scripts/verify_gazebo.sh` — Fortress diff-drive, odometry, laser, deadman,
  and real `launch_testing` process faults.
- `scripts/verify_isaaclab.sh` — bounded one- and multi-GPU Isaac Lab loop.
- `scripts/verify_hub.sh` — signed local Hub upload/download loop.
- `references/verified-stack.md` — tested versions, expected evidence, and
  known compatibility limits.

