Skip to content

feat: lab-robot Phase 0 — PEI protocol + Opentrons OT-2 driver#1

Merged
robotlearning123 merged 26 commits intomainfrom
feat/phase0-scaffold
Mar 25, 2026
Merged

feat: lab-robot Phase 0 — PEI protocol + Opentrons OT-2 driver#1
robotlearning123 merged 26 commits intomainfrom
feat/phase0-scaffold

Conversation

@robotlearning123
Copy link
Copy Markdown
Member

Summary

  • PEI (Physical Execution Interface) protocol with 4-layer action model
  • RobotDriver async Protocol + RobotExecutor
  • Opentrons OT-2 driver (simulate mode, zero hardware dependency)
  • RobotManifest schema (safety defaults to CRITICAL)
  • SafetyVerdict + WorkspaceBounds validators
  • Community robot template (_robot_template/)
  • 49 tests, 100% coverage, full OSS quality (CI, pre-commit, templates)

Test plan

  • pytest --cov-fail-under=100 passes (49 tests, 100%)
  • ruff check . clean
  • Example runs: python examples/01_opentrons_pipette.py
  • Secrets scan: none found
  • Pre-publish review: all checks pass

🤖 Generated with Claude Code

sandia777 and others added 26 commits March 23, 2026 16:38
…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>
@robotlearning123 robotlearning123 merged commit c9d90b9 into main Mar 25, 2026
1 check passed
@robotlearning123 robotlearning123 deleted the feat/phase0-scaffold branch March 25, 2026 03:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants