2.0 KiB
2.0 KiB
AGENTS.md
Architecture, testing, and contribution guide for OpenEnergySphere EnergiBridge MVP.
Overview
- A production-ready Python-based MVP that enables cross-domain energy planning with privacy-first primitives.
- Core concepts (OpenEnergySphere analogies): Objects (LocalProblems), Morphisms (SharedVariables), PlanDelta, and a registry of Graph-of-Contracts. Adapters implement plug-and-play data/model interfaces.
- EnergiBridge maps OpenEnergySphere primitives to canonical IR concepts and enables cross-domain adapters with offline-first capabilities.
Tech Stack (current MVP)
- Language: Python 3.10+
- Web API: FastAPI
- Data Modeling: Pydantic
- Storage: In-memory registry (extensible to SQLite/PostgreSQL)
- Packaging: pyproject.toml with setuptools build backend
- Testing: pytest
Project Structure (high level)
- energysphere/ - Python package with models, registry, sdk, adapters, and server.
- energysphere/server/ - FastAPI app exposing contract/adapter endpoints.
- energysphere/adapters/ - Starter adapters (substation_meter, der_aggregator).
- tests/ - Pytest unit tests for registry and adapters.
- test.sh - Test runner including packaging build step.
- AGENTS.md - This document.
How to run locally
- Install dependencies (in a virtualenv):
- python -m pip install --upgrade pip setuptools wheel
- pip install -r requirements.txt (if you add one later) or rely on pyproject tooling
- Run tests:
- bash test.sh
- Run the API (in dev):
- uvicorn energysphere.server.main:app --reload --port 8000
Development workflow
- Implement minimal MVP features in small, testable units.
- Add tests for all new functionality and ensure test.sh passes before merging.
- Extend registry with persistent storage and implement authentication and governance ledger in future iterations.
Contribution rules
- All changes should pass tests (pytest) and packaging build (python -m build).
- Follow existing naming conventions and keep public APIs stable where possible.
- Document any breaking changes in the changelog and update AGENTS.md accordingly.