34 lines
1.8 KiB
Markdown
34 lines
1.8 KiB
Markdown
# MonoidalScheduler AGENTS
|
|
|
|
Architecture overview
|
|
- Language: Python 3.x
|
|
- Core abstractions modeled as a small, type-safe DSL: Objects (resources/types) and Morphisms (data channels).
|
|
- Monoidal structure: support for tensor (parallel) composition and sequential composition of subsystems.
|
|
- Planner/optimizer layers provide hooks to reduce compositional constraints to convex/MIQP problems via a backend placeholder.
|
|
- Prototyping adapters: sensor_feed and actuator_control stubs demonstrate bidirectional data flow and fault tolerance patterns.
|
|
- Real-time guarantees: compositional bounding demo showing how latency bounds propagate through tensor/compose operations.
|
|
|
|
Tech stack
|
|
- Python 3.11+ (portable and production-friendly)
|
|
- No external heavy dependencies for the initial skeleton; ready for integration with avionics-grade solvers later.
|
|
- Packaging: pyproject.toml with setuptools build backend.
|
|
|
|
Testing and tooling
|
|
- Tests: pytest-based unit tests validating core DSL and optimizer skeleton.
|
|
- Build verification: test.sh runs pytest and python -m build to ensure packaging metadata compiles.
|
|
- Linting/formatting: basic, with room for later integration (ruff/black).
|
|
|
|
How to extend
|
|
- Implement concrete solver backends (cvxpy, or MIQP solvers) for LocalProblem optimization.
|
|
- Expand the DSL to include Limits/Colimits and a TimeMonoid for real-time bounds.
|
|
- Add a registry for adapters to plug into EnergiBridge-like registries.
|
|
|
|
Repository rules
|
|
- Do not publish until READY_TO_PUBLISH is present and all tests pass.
|
|
- Tests must pass locally before code is merged or published.
|
|
- Changes should be small and well-scoped, with accompanying tests.
|
|
|
|
Usage notes
|
|
- Run tests: ./test.sh
|
|
- Run a quick local example: python -c 'import idea41_monoidalscheduler_category_theoretic as ms; print(ms.__all__ if hasattr(ms, "__all__") else dir(ms))'
|