FSM Signal Compression Architecture¶
Principle¶
Core Design Rule: Service agents compress "noisy external signals" into fundamental FSM inputs. FSMs maintain O(1) performance with minimal discrete signals.
Signal Compression Mapping¶
Service Cycle FSM (8 Fundamental Inputs)¶
DEPOSIT_CONFIRMED ← SERVICE_ACTIVATED, contract execution
BATTERY_ISSUED ← ASSET_ALLOCATED, fleet allocation, handover
BATTERY_RETURNED ← ASSET_RETURNED, personnel validation, completion
BATTERY_LOST ← ASSET_LOST_DETECTED, damage/theft reports
BATTERY_FOUND ← ASSET_FOUND, recovery completion
SERVICE_CANCELLED ← cancellation scenarios, timeouts
ASSET_SETTLEMENT_COMPLETE ← compensation, legal resolution
CONTINUE_SERVICE_REQUESTED ← SERVICE_CONTINUATION_APPROVED, confirmations
Payment Cycle FSM (7 Fundamental Inputs)¶
CONTRACT_SIGNED ← CONTRACT_EXECUTED, legal completion
DEPOSIT_PAID ← DEPOSIT_PAYMENT_CONFIRMED, Odoo sync
RENEWAL_PAID ← RENEWAL_PAYMENT_CONFIRMED, Odoo sync
SUBSCRIPTION_EXPIRED ← SUBSCRIPTION_PERIOD_ENDED, billing cycles
QUOTA_EXHAUSTED ← QUOTA_LIMIT_REACHED, usage analysis
FINAL_PAYMENT_DUE ← FINAL_PAYMENT_TRIGGERED, contract end
FINAL_PAYMENT_PAID ← FINAL_PAYMENT_CONFIRMED, Odoo sync
External Signal Categories¶
W1-W5 Rider Workflow → Fundamental Signals¶
ASSET_IDS_RESOLVED→DEPOSIT_CONFIRMEDINTENT_SIGNAL_EMITTED→CONTINUE_SERVICE_REQUESTEDBINDING_ESTABLISHED→DEPOSIT_CONFIRMEDINSTRUCTION_SENT→BATTERY_ISSUEDALL_STATES_UPDATED→BATTERY_RETURNED
MQTT/Personnel/Odoo → Fundamental Signals¶
- Personnel validation →
BATTERY_RETURNED/BATTERY_LOST - MQTT operational →
BATTERY_ISSUED/SERVICE_CANCELLED - Odoo integration → payment cycle inputs
Benefits¶
- FSM Mathematical Rigor: O(1) performance, deterministic behavior
- Agent Flexibility: Handles operational complexity, external changes
- System Boundaries: Clear FSM (core logic) vs Agent (operations) separation
Implementation Reference¶
See models/battery-swap/bss-agent-v2.ts for BSS implementation example.