idea177-fedcatopt-federated.../README.md

47 lines
1.7 KiB
Markdown

# FedCatOpt
FedCatOpt is a Python SDK for federated, offline-first coordination of heterogeneous robotic fleets.
It provides:
- Typed DSL primitives for local optimization, shared state, deltas, dual variables, privacy budgets, audit logs, and policy blocks
- A deterministic Graph-of-Contracts registry for contract wiring and islanded execution
- Starter adapters for `rover_planner` and `drone_controller`
- A category-theory-inspired canonical IR that normalizes robotics-specific control payloads
- An ADMM-lite consensus solver with deterministic delta generation and optional privacy budget consumption
- A governance ledger and short-lived certificate skeleton for Phase 1 identity flows
## Project Layout
- `src/idea177_fedcatopt_federated_category/models.py`
- `src/idea177_fedcatopt_federated_category/solver.py`
- `src/idea177_fedcatopt_federated_category/registry.py`
- `src/idea177_fedcatopt_federated_category/adapters.py`
- `src/idea177_fedcatopt_federated_category/identity.py`
- `src/idea177_fedcatopt_federated_category/sdk.py`
## Example
```python
from idea177_fedcatopt_federated_category import (
ADMMliteSolver,
DRONE_CONTROLLER_ADAPTER,
ROVER_PLANNER_ADAPTER,
SharedVariables,
)
rover = ROVER_PLANNER_ADAPTER.to_local_problem({"agent_id": "rover-1", "desired_speed": 3.0, "desired_heading": 1.0})
drone = DRONE_CONTROLLER_ADAPTER.to_local_problem({"agent_id": "drone-1", "desired_thrust": 0.8, "desired_yaw_rate": 0.2})
solver = ADMMliteSolver()
result = solver.solve([rover, drone], SharedVariables(variables={"speed": 0.0, "heading": 0.0, "thrust": 0.0, "yaw_rate": 0.0}))
```
## Testing
`bash test.sh`
## Packaging
The package name is `idea177-fedcatopt-federated-category` and the source distribution metadata points to this README.