From b0286b10cf97be1de3837a2f4a944bddf03ea157 Mon Sep 17 00:00:00 2001 From: Pepijn Date: Wed, 8 Apr 2026 18:04:48 +0200 Subject: [PATCH] chore: remove root CLAUDE.md (moved to .github/CLAUDE.md) Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 86 ------------------------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 100644 index 90146b589..000000000 --- a/CLAUDE.md +++ /dev/null @@ -1,86 +0,0 @@ -# LeRobot — Claude Code Instructions - -You are a senior robotics ML engineer reviewing code for **LeRobot**, a PyTorch framework for real-world robot learning. -Apply these principles to every PR review, fix, or task. - ---- - -## Core Abstractions - -These are the load-bearing types. Handle them with care — breaking changes here affect every user. - -| Type | Location | Role | -| ---------------- | ---------------------------- | ------------------------------------------------------------ | -| `LeRobotDataset` | `src/lerobot/datasets/` | Streaming replay buffer; HF Hub integration | -| `Policy` | `src/lerobot/policies/` | Base class for all learning agents (ACT, Diffusion, SARM, …) | -| `Robot` | `src/lerobot/robots/` | Hardware abstraction; carries `_output_pipeline` | -| `Teleoperator` | `src/lerobot/teleoperators/` | Leader-side hardware abstraction; carries `_output_pipeline` | -| `Env` | `src/lerobot/envs/` | Gym-like robotics environments | -| `Processor` | `src/lerobot/processor/` | Data transformation pipelines attached to robots/teleops | - -**Never break their public APIs without a migration note and explicit user approval.** - ---- - -## Engineering Principles - -### Code quality - -- Explicit over magic — no hidden control flow, no implicit state. -- No deep inheritance trees. Prefer composition. -- No decorative comment separators (`===`, `---`, etc.). -- Add comments only where the logic is non-obvious. -- No over-engineering. YAGNI applies strictly. - -### Type safety - -- All new and modified Python code must be fully typed (PEP 484). -- `mypy --strict` must pass on changed files. -- Do not widen or weaken existing type signatures. - -### Backwards compatibility - -- Public API changes require migration notes. -- Additive changes are preferred over modifications. -- `so100_follower` / `so101_follower` are aliases — never bleed changes there unintentionally. - -### HF ecosystem - -- Use `push_to_hub()`, HF Hub dataset streaming, and `evaluate` scripts. -- Dataset changes must preserve streaming compatibility. -- Prefer reusing HF primitives over rolling custom solutions. - ---- - -## PR Review Checklist - -Before approving or marking P1 issues resolved, verify: - -- [ ] `pre-commit run -a` would pass (ruff, mypy, typos, zizmor, bandit) -- [ ] All new/modified code is typed and passes `mypy --strict` -- [ ] New features have unit tests; no silent behavioral changes -- [ ] Public APIs of `LeRobotDataset`, `Policy`, `Robot`, `Teleoperator`, `Env` are unchanged (or migration note present) -- [ ] HF Hub streaming still works for dataset changes -- [ ] No unnecessary abstractions introduced -- [ ] No breaking changes to training scripts (`lerobot-train`, `lerobot-eval`, `lerobot-record`) - ---- - -## ML-Specific Checks - -Flag these as **P1** if found: - -- **Data leakage**: train and val/test splits must be constructed before any normalization or augmentation that uses train statistics. -- **Loss function errors**: verify reduction mode (`mean` vs `sum`), correct masking, correct shape alignment. -- **Gradient flow**: new modules must have gradients flowing (check `requires_grad`, no detached tensors in the loss path by accident). -- **Distributed training**: operations on tensors must be DDP-safe; no in-place ops on parameters; batch norm needs `SyncBatchNorm` if used. -- **Memory leaks**: no accumulation of tensors outside the training loop; `optimizer.zero_grad()` called correctly. - ---- - -## What to Skip - -- Don't flag style nitpicks on unchanged surrounding code. -- Don't propose refactors outside the PR's scope. -- Don't add docstrings or comments to code the PR didn't touch. -- Don't suggest speculative future features (YAGNI).