Metadata-Version: 2.4
Name: veron
Version: 0.0.2
Summary: Real-world calibrated articulated assets + causal-coupling compiler + DNA ledger for Isaac Lab + any recorder.
Author: Veron AI
License: Apache-2.0
Project-URL: Homepage, https://github.com/veron-ai/veron
Project-URL: Documentation, https://github.com/veron-ai/veron#readme
Project-URL: Issues, https://github.com/veron-ai/veron/issues
Keywords: robotics,isaac-lab,sim2real,calibration,causal-coupling
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic<3,>=2.6
Requires-Dist: numpy>=1.24
Requires-Dist: scipy>=1.10
Provides-Extra: coupling
Requires-Dist: torch>=2.1; extra == "coupling"
Provides-Extra: isaaclab
Provides-Extra: sim
Requires-Dist: mujoco<4,>=3.1; extra == "sim"
Provides-Extra: cli
Requires-Dist: click>=8.1; extra == "cli"
Requires-Dist: rich>=13; extra == "cli"
Provides-Extra: dna
Requires-Dist: pandas>=2; extra == "dna"
Requires-Dist: mcap>=1.1; extra == "dna"
Requires-Dist: mcap-ros2-support>=0.5; extra == "dna"
Requires-Dist: mcap-protobuf-support>=0.5; extra == "dna"
Provides-Extra: agent
Requires-Dist: anthropic>=0.40; extra == "agent"
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-cov>=4; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Requires-Dist: mypy>=1.8; extra == "dev"
Provides-Extra: all
Requires-Dist: veron[cli,coupling,dev,dna,sim]; extra == "all"
Dynamic: license-file

# veron

`pip install veron` — calibrated articulated assets + causal-coupling compiler + DNA ledger for Isaac Lab, recorder-agnostic.

**Pre-alpha — v0.0.1.** See [`memory/sdk/may27/veron_plan.md`](../memory/sdk/may27/veron_plan.md) for the 3-phase plan.

## What's in v0.0.1

- `veron.coupling` — vectorized causal-coupling compiler + `CompiledCouplingMixin` + `GateReport`. Authored couplings (`couplings.json`) fire inside Isaac Lab's batched GPU step. Proven on 3 assets; ~10,000× faster than the per-env-Python alternative at 65 k envs.
- `veron.calibrate` — typed `AffordancesLedger` + pure-python `calibrate_ledger()` + USD patcher (Isaac-Sim-deferred). Proven loop closure on coffee_maker + toilet_seat against sim-as-real proxy.
- `veron.assets` — typed asset `Bundle` + `BundleRegistry` + `load(name)`. Auto-discovers 41 bundles from the in-repo `output/`.
- `veron.dna` — DNA JSON v0.1 envelope (4 layers: asset/robot/scene/action) + CSV adapter. Robot/scene/action layers are permissive placeholders for Phase 2.
- `veron.cli` — `forge` CLI mirroring every SDK call (`ls / load / inspect / compile / gate / dna / calibrate / eval`).
- `veron.verify` — *(stub — Phase 3, parallel to demo sprint).*

## Install

```bash
pip install -e .                 # core (pydantic only)
pip install -e .[coupling]       # + torch for CouplingTerm
pip install -e .[cli]            # + click/rich for forge CLI
pip install -e .[all]            # everything except Isaac Lab (BYO)
```

## Quick start

Run the end-to-end closed-loop demo (no Isaac Sim required):

```bash
pip install -e .[cli]
python examples/getting_started.py
```

The 5-minute walkthrough discovers bundles, loads `sdk_v2_coffee_maker`,
compiles its coupling, reads the affordance ledger, simulates a real-trial
CSV, ingests it through the DNA adapter, calibrates the ledger, and shows
the before/after diff + audit trail. See [`examples/README.md`](examples/README.md)
for the narrated walkthrough and [`examples/getting_started.ipynb`](examples/getting_started.ipynb)
for the notebook form.

Or jump straight into the SDK:

```python
from veron.assets import load
from veron.dna import from_csv
from veron.calibrate import calibrate_ledger

bundle = load("sdk_v2_coffee_maker")
compiled = bundle.compiled_couplings()      # CompiledCouplings (IR)
print(compiled.summary())

dna = from_csv("real_trial.csv", affordance="open_reservoir_lid", source="franka_lab12")
ledger = bundle.affordances()
calibrate_ledger(ledger, "open_reservoir_lid", dna.asset)
ledger.save(bundle.affordances_json)
```

The Isaac Lab integration drops a 2-line mixin into any `DirectRLEnv`:

```python
from veron.coupling import CompiledCouplingMixin

class CoffeeTask(CompiledCouplingMixin, DirectRLEnv):
    def _apply_action(self):
        targets = self.policy_action(self.actions)
        self._art.set_joint_position_target(self.apply_couplings(targets))
    def _reset_idx(self, env_ids):
        super()._reset_idx(env_ids)
        self.reset_couplings(env_ids)
```

## CLI

```bash
forge ls                                          # list bundles
forge load sdk_v2_coffee_maker                    # bundle summary
forge inspect sdk_v2_coffee_maker                 # full structured view
forge dna from-csv run.csv --aff open_lid --source franka_lab12 -o run.dna.json
forge calibrate sdk_v2_coffee_maker --aff open_reservoir_lid --dna run.dna.json
forge gate sdk_v2_coffee_maker                    # prints the Isaac Sim command
```

## Status

| Phase | Scope | Status |
|---|---|---|
| 1 | SDK MVP — package + repackage compiler/calibrator/mixin/gate + DNA v0.1 + CLI + example | 🟡 In progress (Day 11-12 of 14) |
| 2 | SDK demo — real Franka FR3 closed loop, 4-layer DNA, failure router | ⏸ Pending |
| 3 | Verifier MVP — world-model rollout consistency, 1 asset, 0 corpus | ⏸ Pending |
| 4 | LLM agent + native UI + asset registry | ⏸ Later |
