feat: lab-robot Phase 0 — PEI protocol + Opentrons OT-2 driver#1
Merged
robotlearning123 merged 26 commits intomainfrom Mar 25, 2026
Merged
feat: lab-robot Phase 0 — PEI protocol + Opentrons OT-2 driver#1robotlearning123 merged 26 commits intomainfrom
robotlearning123 merged 26 commits intomainfrom
Conversation
…DE.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add robots/_robot_template/ with skill.yaml, driver stubs, SOUL/MEMORY - Add examples/01_opentrons_pipette.py async demo script - Update __init__.py with full public API exports (all types, base, safety, schema) - Fix pre-existing import sorting in test_base.py and test_safety.py - 46 tests passing, lint clean Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Layer model (Motion, Lab-Ops, Perception, System) - RobotDriver protocol definition and method contracts - ActionResult contract with error-on-failure invariant - Safety requirements (CRITICAL default, SafetyVerdict) - Integration boundaries with labclaw orchestrator - Opentrons OT-2 as reference implementation - Directory convention for new robots Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix example to use correct OT2 model imports (PipetteConfig, LabwareConfig) - Add coverage tests for validate_workspace_bounds non-move path (safety.py:37) - Add coverage test for empty-name validator (schema.py:68) - 48 tests, 100% coverage, lint clean Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
OT2Driver requires a deck_config argument — the previous example would raise TypeError at construction time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Standard Python ignores: __pycache__, .venv, .coverage, .pytest_cache, .ruff_cache, .mypy_cache, *.egg-info, dist, build. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Runs ruff check and pytest (100% coverage gate) on Python 3.11/3.12/3.13. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dev setup, robot template instructions, code style, and commit conventions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- __version__ reads from package metadata (falls back to 0.1.0) - _SUPPORTED_ACTIONS changed from list to tuple (immutable) - OT2Driver exported from robots.opentrons_ot2 package __init__ - CLAUDE.md: RobotSafetyGuard marked as planned Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add subprocess test verifying PackageNotFoundError fallback produces "0.1.0". Mark except branch with pragma no-cover since it can't be hit in-process when the package is installed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Contributor Covenant v2.1 with conduct@labclaw.org contact. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- dependabot.yml: weekly pip dependency updates - CODEOWNERS: core-team for root, robot-drivers for opentrons - FUNDING.yml: GitHub Sponsors link - py.typed: PEP 561 inline type marker Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
_robot_template/)Test plan
pytest --cov-fail-under=100passes (49 tests, 100%)ruff check .cleanpython examples/01_opentrons_pipette.py🤖 Generated with Claude Code