Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.11] - 2026-09-11¶
Added¶
- Embodied AI & Agentic Benchmark Suite (
effero.evaluation): - Implemented
BenchmarkRunner,BenchmarkScenario,BenchmarkReport,EvaluationMetric, andScenarioResultfor deterministic regression testing and continuous agent evaluation. - Added comprehensive benchmark scenarios in
effero.evaluation.scenarios:warehouse_pallet_pick_place: Multi-stage mobile manipulation verifying Cartesian bounds, pick-and-place accuracy, and zero collision violations.office_waypoint_transit: Differential drive mobile base navigation and target coordinate convergence.smart_climate_regulation: Autonomous telemetry-driven thermostat regulation triggered by room occupancy.
- Implemented automated report generation with pass rates, execution durations, total estimated token costs, tool call distributions, and Markdown export (
report.to_markdown()). - Frontier LLM Unit Economics & Token Pricing (
core.callbacks.telemetry): - Expanded
TelemetryCallback._estimate_costto track unit economics across modern frontier models:gpt-4.5,o1-mini,o3-mini,claude-3-7-sonnet, andgemini-2.0-flash. - Continuous calculation of cost-per-scenario and aggregate evaluation spend during benchmark runs.
- Adaptive Planner Execution Loop & Deliberative Reflection (
core.planner): - Added dynamic execution modes in
Planner:- Fast-path execution with automatic temperature reduction during consecutive successful tool invocations.
- Automatic deliberative self-healing reflection prompt injection upon encountering tool execution errors.
- Desktop UI Element Inspection & Tree Enumeration (
skills.computer_use.backends): - Added
UIElementInfodataclass capturing handle, parent handle, window class name, text, and bounding geometry. - Added
DesktopBackend.list_elements(hwnd)with native Win32 child window traversal (EnumChildWindows,GetClassNameW) and virtual simulation support inHeadlessDesktopBackendandLinuxDesktopBackend.
Fixed¶
- Eager Skill Loading on Offline Evaluation Agents (
core.agent): - Configured
Agent.__init__to eagerly populate built-in skills into the local registry so evaluation and benchmark agents function offline without requiring full network or daemon startup. - Robotics Skill Registry Public Export (
skills.robotics): - Added
set_velocitytoeffero.skills.robotics.__all__, achieving 100% compliance inscripts/lint_skills.py.
[0.1.10] - 2026-09-11¶
Added¶
- ROS 2 Adapter Live Integration with Robotics Skills (
adapters.ros2,skills.robotics): - Implemented OMG Common Data Representation (CDR) wire serialization and deserialization for
geometry_msgs/TwistandVector3. - Added
publish_cmd_veltoROS2Bridgesupporting length-prefixed TCP streaming and in-memory CDR packet framing. - Wired
ArmControllerto automatically publishtrajectory_msgs/JointTrajectoryandActuatorCommandto active ROS 2 bridge. - Wired
NavigationControllerto automatically publishgeometry_msgs/Twistcmd_vel during transit, DWA obstacle avoidance, and emergency stops. - Added
@skillentry pointrobotics.navigate.set_velocityfor continuous planar velocity control. - Added
RoboticsConfigandROS2ConfigtoEfferoConfigwith automatic bridge initialization and clean shutdown inAgent.start()andAgent.stop(). - Mobile Manipulator End-to-End Example (
examples/mobile-manipulator/): - Created runnable mobile manipulation application coordinating base navigation, visual target localization, and arm pick-and-place with live ROS 2 telemetry.
- Added
main.pysupporting both autonomous--scenariomission execution and interactive natural language REPL. - Added architecture documentation and quickstart in
examples/mobile-manipulator/README.md. - Robotics & Agent Performance Benchmark Suite (
benchmarks/): - Added
bench_planner.py: Agent planner step latency with tool dispatch and prompt generation. - Added
bench_a_star.py: A* grid path planning benchmark over 100x100 map with barrier obstacles and line-of-sight smoothing. - Added
bench_dwa.py: Dynamic Window Approach velocity search and candidate obstacle checking. - Added
bench_cdr.py: OMG CDR serialization and deserialization throughput (50-point trajectories, joint states, and twist messages). - Added fallback benchmark fixture in
benchmarks/conftest.pyensuring benchmarks execute reliably across all test runners. - Hardware Compatibility Matrix Verification (
docs/compatibility.md): - Measured and published verified footprint metrics for Python 3.13 on x86-64 desktop (~1.6s warm start, 45.9 MB idle RAM).
[0.1.9] - 2026-09-10¶
Added¶
- Linux & Headless Desktop Automation Backend (
computer_use.desktop): - Implemented
LinuxDesktopBackendleveragingxdotoolandwmctrlfor native Linux X11 window management and mouse/keyboard event dispatch. - Implemented
HeadlessDesktopBackendfor deterministic virtual testing and headless CI/Docker test execution. - Added OS-aware dynamic backend selection (
get_default_desktop_backend()). - Openpilot-Inspired Safety Watchdog & Heartbeat Monitor (
safety.watchdog): - Embedded high-frequency daemon watchdog into the Rust Safety Kernel with strict configurable timeout triggers.
- Added
Watchdogmonitoring, auto-tripping emergency e-stop upon missed agent heartbeat deadlines. - Added heartbeat loop in Python
Agentexecution cycle. - Isaac Lab-Style Closed-Loop Policy Evaluation Runner (
robotics.policy): - Added
PolicyRunnerandBasePolicywith fixed step sizes, observation normalization, action clipping, and trajectory recording. - Registered
@skillentry pointsrobotics.policy.stepandrobotics.policy.run_trajectory. - Deterministic Sensor & Event Replay Harness (
core.replay): - Added JSONL-based recording and playback for sensor telemetry and skill interactions.
- Implemented CLI subcommands
effero recordandeffero replay.
Fixed¶
- Virtual Key Validation on Non-Windows / Headless Backends:
- Enforced canonical virtual key validation across
HeadlessDesktopBackendandLinuxDesktopBackend, ensuring unrecognized key strings consistently raiseValueError("Unsupported virtual key ...")across all operating systems. - Mypy Static Typing Cleanliness:
- Fixed parameter type annotations on
Agent.__init__,ReplayRecorder, and test planners for 100% clean type checks across 164 source files.
[0.1.8] - 2026-09-09¶
Added¶
- Safety Kernel Live Telemetry & Environment Facts Wiring:
- Connected
Planner._execute_skill()andAgentto feed live robot telemetry (robot_x,robot_y,robot_linear_velocity,robot_emergency_stopped), battery levels, nearest person proximity metrics, and invocation parameters intoSafetyClient.check_action(). - Enabled dynamic safety rule enforcement based on actual physical runtime state.
- REST & WebSocket API Server Authentication:
- Implemented token authentication (
Authorization: Bearer <key>orX-API-Key: <key>) across sensitive endpoints (/v1/chat,/v1/skills/invoke,/v1/approvals/*,/v1/memory/*,/v1/tasks/*, and/ws/*). - Hardened Human-In-The-Loop approval resolution to prevent unauthorized confirmation of restricted physical/digital actions.
- Spec-Compliant CORS Hardening:
- Enforced CORS specification compliance (disallowed
allow_credentials=Truewith wildcard*origins; enabled credentialed requests only for explicit configured origins). - Shell Command Guardrails (
computer_use.shell): - Added pattern detection against destructive system commands (recursive root deletion, fork bombs, disk wiping, reboot/shutdown commands).
- Added command prefix allowlist filtering via argument and
EFFERO_SHELL_ALLOWLISTenvironment variable. - IoT MQTT TLS Encryption Support (
adapters.mqtt_matter): - Added native
ssl.SSLContextnegotiation, custom CA certificate loading, and mutual TLS certificate support toMQTTAdapter. - Exposed TLS configuration in
IoTConfigandeffero.yaml. - Configuration Security Auditing:
- Added
EfferoConfig.validate_security()to audit configurations and log security warnings for missing API keys, plaintext MQTT, or unverified certificates. - Enforced
0o600restrictive file permissions when saving config files. - Python 3.13 CI Support:
- Added Python 3.13 to the GitHub Actions CI matrix alongside Python 3.11 and 3.12.
Fixed¶
- Fixed hanging condition in MQTT connection test under Python 3.11/3.13 by verifying SSL context creation deterministically without orphan background reader tasks.
- Cleaned up formatting and import ordering across the codebase with
ruff format.
[0.1.7] - 2026-09-09¶
Added¶
- Graduated Human-In-The-Loop (HITL) Mode (
safety.approval): - Enhanced
AutoApprovalHandler(graduated=True)to autonomously permitREAD_ONLYandACT_AUTONOMOUSskills while strictly gatingACT_WITH_APPROVALandACT_RESTRICTEDactions for interactive human confirmation. - Added async approval resolution support to
Agentexecution cycle. - Unified Example Runner Architecture (
examples/runner.py): - Consolidated duplicate example launchers (
examples/local-smart-home/main.pyandexamples/desktop-copilot/main.py) into a reusablerun_agent_loop(config_path)helper with full CLI argument support. - CI Dependency Lock Freshness Enforcement (
scripts/check_lock_freshness.py): - Added automated verification in CI ensuring
requirements-dev.lockstays strictly synchronized with root dependencies inpyproject.toml. - Rust Edge MCP Toolchain Verification:
- Documented and verified Rust 1.85+ toolchain requirement (
rust-version = "1.85"incrates/effero-edge-mcp/Cargo.toml). - Test Hardening & Zero-Mock Coverage Expansion (87% total coverage, 370 passing tests):
- Replaced unlisted external mock dependency
respxwith nativehttpx.MockTransportintests/test_cloud_api.py. - Added full test coverage for LLM backends (
test_router_anthropic.py,test_router_google.py,test_router_openai.py), voice perception, desktop automation, browser skills, IoT sensors/thermostats, and CLI commands.
Fixed¶
- Eliminated B904 exception-chaining suppressions and E501 over-length line ignores across codebase (
ignore = []). - Cleaned up stale scaffold documentation and comments across safety policies, example configs, and
README.md.
[0.1.6] - 2026-09-09¶
Added¶
- On-Device Inference & Confidence-Based Hybrid Cloud Handoff (Cactus Integration):
- Native
cactusprovider support inModelRouterpointing to local high-performance runtime (http://127.0.0.1:8080/v1). - Added
min_confidenceandhybrid_cloud_fallbackoptions toModelConfigfor sub-100ms on-device reasoning with automatic escalation to cloud frontier models (GPT-4o, Claude) when local confidence falls below threshold. - Documented INT4/INT8 quantization footprints and latency profiles in
docs/compatibility.md. - Google AI Edge LiteRT-LM In-Process Backend:
- In-process
LiteRTLMBackendexecuting.litertlmcontainer models vialitert-lm-apiwith zero daemon overhead. - Direct hardware accelerator selection (
device: auto | cpu | gpu | npu) supporting Raspberry Pi 5 AI HAT (Hailo-8/Coral), Jetson, and mobile edge NPUs. - Optional dependency extra:
pip install effero[litert]. - Contract-Compliant Test Infrastructure & Code Quality:
- Replaced ad-hoc mock classes and aliases with
ScriptedBackendsupporting sequential responses, dynamic generators, failure modes, and availability tracking. - Hardened
MCPClientprotocol handling: catchesisError: True, preserves JSON-RPC error details on HTTP failures, and avoids leaking pending futures. - Dynamic
__version__propagation in MCP handshake payloads.
[0.1.5] - 2026-09-08¶
Added¶
- Documentation & Professional Engineering Suite:
- Full MkDocs Material documentation site published to GitHub Pages.
- Auto-generated Skill Catalog indexing all 45 registered skills across robotics, IoT, perception, and computer use.
- Public API contract specification (
VERSIONING.md) and Single-Maintainer Transparency & Governance policy (GOVERNANCE.md). - AI contribution disclosure rules and human review guidelines (
AI_POLICY.md). - Real-world hardware compatibility matrix (
docs/compatibility.md) for robotics and edge platforms. - Reproducible development environment lockfile (
requirements-dev.lock) and Dependabot automated updates. - Skill Registry validation linter (
scripts/lint_skills.py) integrated into CI. - Real-time robotics benchmarks (
benchmarks/) covering EKF state estimation and SE(2)/SE(3) transform compounding. - Fixed dead ROADMAP documentation references and added CI/coverage/PyPI release badges.
[0.1.4] - 2026-09-08¶
Added¶
- Extended Kalman Filter (EKF) Localization (
skills.robotics.localization.ekf): - Full $4 \times 4$ covariance propagation fusing kinematic dead-reckoning motion model with sensor observations.
- Non-linear range and bearing landmark updates with $J_H$ measurement Jacobian and innovation residual processing.
- Absolute Cartesian position fix fusion (GPS, UWB, or vision fiducials) with dynamic sensor variance weighting.
- Continuous 2-sigma spatial uncertainty radius computation reported via real-time telemetry.
- Exposed via
@skill(name="robotics.navigate.localize_predict"),@skill(name="robotics.navigate.localize_landmark"), and@skill(name="robotics.navigate.localize_position_fix"). - Pandas-Inspired Time-Series Buffers & Rolling Window Analytics (
core.memory.timeseries): TimeSeriesRingBuffer: fixed-capacity chronological buffer with linear numeric interpolation.RollingWindowView:.mean(),.min(),.max(),.std(), and.rate_of_change()over configurable trailing time windows.- Seamlessly integrated into
WorkingMemory.rolling_metric(name, seconds). - Keras & PyTorch-Inspired Lifecycle Callbacks (
core.callbacks): AgentCallbackbase class with default no-op hooks andCallbackListmanaging event dispatch with exception isolation.TelemetryCallbackcomputing latency distributions, execution counts, and safety approval tallies.AuditLogCallbackproducing an immutable, append-only audit trail of prompts, planning decisions, safety checks, and tool invocations.- Integrated directly into
Agent.run()andPlanner. - Scikit-learn-Inspired Composable Pipelines (
pipelines): - Typed
PipelineStageandPipelinewith UNIX-style pipe chaining operator|(pipeline = stage1 | stage2 | stage3). - Pre-built stages:
FunctionStage(sync/async callables),FilterStage(predicate filtering),MapStage(item transformations), andParallelBranchStage(concurrent async execution). - NumPy Robotics-Inspired Spatial Transformation Algebra (
skills.robotics.transforms): Transform2D($SE(2)$) andTransform3D($SE(3)$) with matrix multiplication@composition.- Analytical matrix inversion ($R^T, -R^T t$) with zero numerical drift.
- Bidirectional point transformations, Euclidean distance, angular distance, and unit quaternion conversions.
Fixed & Optimized¶
- ModelRouter Availability Check Latency (#1):
- Added TTL availability caching (
availability_cache_ttl=300.0s) inModelRouter, eliminating redundant network health checks on every completion. - EventBus History Trimming (#2):
- Replaced
list.pop(0)withcollections.deque(maxlen=max_history)for bounded $O(1)$ auto-eviction without list reallocations. - EventBus Subscriber Pattern Dispatch (#3):
- Separated exact topic subscriptions ($O(1)$ hash table lookup) and pre-compiled wildcard subscriptions (
re.Pattern), eliminating per-publishfnmatch()overhead. - SemanticMemory Vector Search (#4):
- Added spatial inverted dimension indexing to prune orthogonal vectors across large knowledge bases.
- Replaced $O(N \log N)$ sorting with
heapq.nlargestfor $O(N \log k)$ top-k extraction. - Optimized cosine similarity dot product avoiding intermediate
zip()allocations. - EpisodicMemory Load History (#5):
- Replaced full file
readlines()with reverse binary chunk reading (seek(0, 2)with 8KB buffers) to bound memory footprint to $O(\text{limit})$. - WorkingMemory Trimming Allocations (#6):
- Optimized
_trim()by reverse-scanning to collect non-system messages up tonum_to_keep, eliminating 3 intermediate list allocations and applying in-place slice mutation.
[0.1.3] - 2026-09-08¶
Added¶
- 2D Occupancy Grid Map (
skills.robotics.grid_map): - Discrete spatial rasterization supporting points, bounding boxes, circles, and walls via Bresenham line raycasting.
- Radial obstacle inflation based on robot physical radius for conservative point-mass navigation clearance.
- Bidirectional continuous-to-grid coordinate transforms and line-of-sight collision checks.
- A* 2D Grid Path Planner (
skills.robotics.planning.a_star): - 8-connected grid search with Octile distance heuristic and diagonal corner-cutting prevention.
- Line-of-sight path smoothing shortcutting intermediate stair-step waypoints into direct flight segments.
- Integrated into
NavigationControllerand exposed via@skill(name="robotics.navigate.plan_path"). - Dynamic Window Approach (DWA) Local Obstacle Avoidance (
skills.robotics.tracking.dwa): - Dynamic window evaluation incorporating hardware limits, acceleration constraints, and prediction horizons.
- Multi-objective scoring combining target goal alignment, cruising velocity reward, and obstacle clearance cost.
- Integrated into
NavigationControllerand exposed via@skill(name="robotics.navigate.compute_velocity"). - Pure Pursuit Waypoint Tracking (
skills.robotics.tracking.pure_pursuit): - Dynamic lookahead distance proportional to vehicle speed with goal arrival deceleration.
- Curvature-based differential-drive steering computation with angular velocity clamping.
- Integrated into
NavigationControllerand exposed via@skill(name="robotics.navigate.track_path").
[0.1.2] - 2026-09-08¶
Added¶
- CLI Configuration Management (
effero config get/effero config set): - Direct modification and query of
effero.yamlkeys from terminal without manual file editing. - Native support for Ollama and local OpenAI-compatible backends (
http://127.0.0.1:11434/v1). - Community System Info Skill (
community.system_info.get_overview): - Live OS, CPU cores/usage, RAM, disk capacity, and uptime telemetry via
psutil. - Zero mock dependency — gathers live physical machine metrics.
- Effero Technical Architecture Guide:
- Upgraded
docs/architecture.mdinto comprehensive six-layer system documentation.
Fixed¶
- Type Annotations & Clean Code:
- Cleaned up loose types and unions in
Planner,MCPServer,WyomingServer,Agent,NavigationController, andA2ATaskManager. - Added unit test coverage for new CLI commands and community skills (234 tests passing).
- Rust Safety Kernel Documentation:
- Aligned
effero-safety-kerneldbinary documentation with actual TCP socket implementation.
[0.1.0] - 2026-09-08¶
Added¶
- Fleet Consensus Integration (
core.fleet): FleetConfigmodel added toEfferoConfig(enabled,default_lease_duration).- Opt-in
FleetCoordinatorintegration directly inAgent.__init__. - Task announcement EventBus broadcast (
fleet.cfp.announced) onFleetCoordinator.announce_task(). - Failover re-auction history tracking: preservation of
reauction_round,previous_bids_count, and prior metadata. - Hardware MCP Server Unit Testing (
crates/effero-edge-mcp): - 3 unit tests added for
EdgeDevice: default pin state verification, digital write/read state validation, and out-of-range bounds error handling. - Test Coverage Expansion (Zero-Mock):
tests/test_config_env.py: Verified backend-specific API key loading without environment variable clobbering.tests/test_fleet_coordinator_integration.py: End-to-end testing of EventBus CFP broadcasting, lease ID consistency, unrevealed sealed bid rejection, and failover re-auction round tracking.tests/test_a2a_protocol.py: TestingAgentCardserialization,TaskMessagelifecycle, andA2ATaskManagerexecution with both standalone and real Agent instances.tests/test_cli_commands.py: Unit tests forbuild_parser,--version,skills, and project scaffoldinginit.tests/test_server_websockets.py: Full WebSocket ping/pong lifecycle,/v1/approvalsGET/POST resolution, and/v1/memoryinspection using real productionAgent.
Fixed¶
- Security / Protocol:
- Fixed sealed bid integrity bypass in
SealedBidAuction.close_auction(): bids with declared commitment hashes that failed to reveal their salt are now strictly rejected. - Fixed
TaskLeaseID divergence betweenTaskAwardandLeaseManager.create_lease(). - Fixed
EfferoConfig.from_env()key clobbering across multiple provider environment variables (OPENAI_API_KEY,ANTHROPIC_API_KEY,GOOGLE_API_KEY). - Fixed
EventBus.publish()andserver.py:handle_approval_request()crashing synchronous callers withRuntimeError: no running event loop. - Runtime & Cross-Platform:
- Fixed blocking
input()in interactive CLI REPL (cli.py:run_repl) by wrapping inloop.run_in_executor. - Fixed Windows
connect_read_pipeincompatibility with ProactorEventLoop incli.py:serve_mcpby using non-blocking executor reads. - Fixed
google_backend.pycompatibility with newergoogle-genaiSDK (Partconstructor, union guards, type-annotated tool arguments). - Fixed duplicate
moduleimport symbol insrc/effero/core/router/__init__.py. - Fixed type narrowing on
select_best_node()intest_fleet_auction.py. - Resolved all 13
mypystatic typing errors across the entire codebase.
Changed¶
- Zero-Mock Production Cleanliness:
- Removed silent mock API fallback mode in
CloudAPIAdapter(adapters/cloud_api/client.py); now raises explicitRuntimeErrorwhen unconnected or dependencies are missing. - Removed obsolete "mock fallback" docstrings and unused
_is_mockflag inBrowserController(skills/computer_use/browser.py). - Centralized
BUILTIN_SKILL_MODULESconstant ineffero.sdkand deduplicated acrossAgent,cli.list_skills, andcli.serve_mcp. - Updated
effero-safety-kernel/README.mdto reflect actual TCP transport (127.0.0.1:9400) rather than Unix domain socket.