File size: 6,324 Bytes
cd53438
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# Validation reporting β€” staging branch

## Install the Claude Code plugin

The `simready-report` plugin ships as a Claude Code marketplace under
`validation/.claude-plugin/`. From a checkout of this repo, run inside Claude Code:

```
/plugin marketplace add <path-to-repo>/validation
/plugin install simready-report@simready-playbook
```

That registers two slash commands: `/simready-report` and `/simready-package`.
You still need a Python with the SimReady runtime deps and the foundations + sdk
checkouts on disk β€” see [To run the demo as-is](#to-run-the-demo-as-is) below.

> [!IMPORTANT]
> ## Read [`PROBLEMS.md`](PROBLEMS.md) before trusting any report
>
> Reports produced by this prototype lean on a **local patch** for
> [PROBLEMS.md P1](PROBLEMS.md): without it, every Robot-Body profile
> silently drops 4 of its 5 declared features at load time, because
> the foundation `repo usd_profiles_codegen` step doesn't read the
> JSON variant definitions next to each feature's markdown. A
> "passing" report against `Robot-Body-Runnable` would only have
> checked 1 feature out of 5.
>
> The patch lives in
> `plugins/simready-report/skills/simready-report/validate.py` and is
> loud about itself β€” every run prints a `[PATCH P1]` line. With the
> patch active, `Robot-Body-Runnable` resolves to **5/5 features, 41
> requirements** instead of 1/8.
>
> The dashboard's **Caveats** panel still surfaces the gap if anyone
> runs without the patch.
>
> [`PROBLEMS.md`](PROBLEMS.md) **P1** has the full root cause, the
> patch walkthrough, and the upstream fix path. The patch is meant to
> be temporary β€” once foundations codegen is fixed, delete
> `_patch_register_json_variant_features()` and its call site.

---

> **Status: demo / review staging.** Not part of `simready-explorer` proper yet.
>
> This directory is a verbatim copy of the prototype work currently living at
> [`loginowskid/simready-playbook`](https://github.com/loginowskid/simready-playbook),
> dropped here on the `dev/dloginowski/validation-reporting` branch so the
> SimReady team can review the artifact before we refactor it into the repo's
> existing library + skills patterns.

## What this is

A Claude-Code-driven validation reporting pipeline for SimReady customer assets.
On top of the existing `omni.asset_validator` engine and SimReady profile registry,
it adds:

- **HTML dashboard** with summary cards, per-asset feature pass/fail, an
  asset filter, and a "Other failed requirements" panel for issues outside the
  loaded profile.
- **External-dependencies provenance report** β€” walks USD composition arcs per
  asset, classifies each layer as internal/external relative to the target,
  records actions taken to obtain each.
- **Foundation doc rendering** β€” renders the markdown source for every
  feature/requirement code referenced by the report into HTML inside the output.
- **Auto-packaging convenience** β€” for a raw asset bundle under
  `assets_to_validate/<name>/`, runs `simready ingest usd` per interface USD
  before validating against the packaged tree.
- **Spec selector** β€” `--list-profiles` enumerates registered profiles so the
  user can pick a SimReady profile interactively.
- **Parallel asset validation** β€” `ProcessPoolExecutor` workers, default auto.

Two slash commands ship together as a single Claude Code plugin:

- `/simready-report` β€” validate + dashboard + provenance + docs.
- `/simready-package` β€” standalone packaging (no validation).

## Layout (mirrors the source repo)

```
validation/
β”œβ”€β”€ bootstrap.ps1                    # Windows convenience installer
β”œβ”€β”€ marketplace.json                 # Claude Code marketplace manifest
β”œβ”€β”€ plugins/simready-report/
β”‚   β”œβ”€β”€ plugin.json
β”‚   └── skills/
β”‚       β”œβ”€β”€ simready-report/         # HTML dashboard + validation
β”‚       └── simready-package/        # standalone packaging
└── playbooks/
    └── foundations-deviations.md    # observed gaps between specs and asset_validator
```

## Why it doesn't fit the repo's existing patterns yet

`simready-explorer` already ships `source/libraries/validate/` with a clean
public API (`validate_asset`, `validate_asset_list`, etc.) and three skills in
the `agentskills.io/specification` format (`validate-asset`, `validate-batch`,
`validate-metadata`). The work in this `validation/` directory:

- Reinvents a thinner version of `simready.validate.validate_asset_list` β€”
  this is duplication that should be removed during integration.
- Uses a different skill format (Claude Code marketplace plugin) β€” should be
  rewritten as `agentskills.io` skills that call into the library.
- Is a standalone-script architecture (`python validate.py …`) β€” should be
  exposed via the existing `repo.bat` / library entry points.

## Proposed integration after review

1. New skill `validate-report` under
   `source/libraries/validate/src/validate/skills/validate-report/` β€”
   instructional doc that drives a new `simready.validate.report` module.
2. New module `source/libraries/validate/src/validate/report/` containing the
   dashboard renderer, doc renderer, external-deps tracker, thumbnail mirrorer
   β€” extracted from `report.py` + `external_deps.py` and adapted to consume
   `AssetValidationResult` instead of the raw `omni.asset_validator` issue
   stream.
3. Optional new skill `validate-package` β€” thin wrapper around
   `simready ingest usd` (independent of validation).
4. Drop `bootstrap.ps1` / `marketplace.json` / Claude-Code-plugin layout β€” not
   relevant here; the team uses `repo.bat` + `_build/` flow.

## To run the demo as-is

The scripts in this directory are self-contained and need a Python with the
SimReady runtime deps installed plus the foundations + sdk checkouts on disk.
Easiest path on Windows: `& bootstrap.ps1` (creates a venv at
`%LOCALAPPDATA%\simready\` and persists `SIMREADY_PYTHON` /
`SIMREADY_FOUNDATIONS_PATH` / `SIMREADY_SDK_PATH` env vars). On other systems
or custom layouts, install the deps into your Python and set those env vars
manually.

After that:

```
python plugins/simready-report/skills/simready-report/validate.py \
    <path-to-asset-bundle> --profile Robot-Body-Isaac --version 1.0.0
```

Output lands at `<bundle>/.reports/<bundle-name>.<profile>/index.html`.