Safety Operations Guide
This guide defines safe operating procedures for Anolis-managed hardware systems.
Core Principles
- Safe startup: runtime always starts in
IDLE. - Explicit control: mode transitions require operator action (
POST /v0/mode). - Controlled automation: in
AUTO, manual calls are policy-gated (BLOCKorOVERRIDE). - Visibility first: read-only diagnostics remain available across modes.
- Hardware safety remains external: software controls do not replace interlocks/E-stop systems.
Runtime Mode Safety Semantics
| Runtime Mode | Automation Loop | Control Operations (POST /v0/call) | Notes |
|---|---|---|---|
IDLE | Stopped | Blocked | Safe startup/standby mode |
MANUAL | Stopped | Allowed | Operator-driven commissioning/control |
AUTO | Running | Manual calls policy-gated | Automation calls continue normally |
FAULT | Stopped | Allowed | Recovery/diagnostic mode; transition restrictions still apply |
Transition rules:
IDLE <-> MANUALMANUAL <-> AUTOAny -> FAULT(valid transition target)FAULT -> MANUALFAULT -> AUTOis invalidAUTO -> IDLEis invalid
Note: FAULT is not globally auto-entered for every error condition in the current runtime; it is a defined mode and transition target with strict recovery pathing.
Standard Startup Sequence
- Start runtime (enters
IDLE). - Verify provider/device availability and safe initial states.
- Transition to
MANUAL. - Run manual verification/calibration checks.
- Transition to
AUTOonly after operator acceptance.
Use this canonical transition command:
bash
curl -X POST http://127.0.0.1:8080/v0/mode \
-H "Content-Type: application/json" \
-d '{"mode":"MANUAL"}'Use the same command shape for AUTO, IDLE, and FAULT.
Mode Procedure Checklist
IDLE -> MANUAL
- Confirm providers are
AVAILABLE. - Confirm actuator signals are in safe states.
- Transition to
MANUAL.
MANUAL -> AUTO
- Validate behavior tree configuration and parameters.
- Confirm manual verification is complete.
- Transition to
AUTO. - Monitor
/v0/automation/statusand/v0/providers/health.
AUTO -> MANUAL
- Transition to
MANUALfor planned operator takeover. - Verify actuators and signals settle to expected state.
MANUAL -> IDLE
- Command actuators to safe outputs.
- Verify safe state via
/v0/state. - Transition to
IDLE.
Any -> FAULT, then FAULT -> MANUAL
- Enter
FAULTwhen explicit recovery isolation is needed. - Diagnose and resolve root cause.
- Transition
FAULT -> MANUAL. - Re-verify before returning to
AUTO.
Emergency Response
- Immediate software stop: transition to
MANUAL. - If software path is insufficient: terminate runtime process.
- If physical hazard persists: use hardware E-stop / power isolation.
- After incident: inspect hardware, collect logs, and restart from full startup checklist.
Common Risks and Mitigations
- Skipping IDLE checks:
- Always validate safe initial state before
MANUAL.
- Always validate safe initial state before
- Unsafe power-on assumptions:
- Providers must actively drive safe defaults on startup.
- Invalid FAULT recovery path:
- Never attempt
FAULT -> AUTO; recover throughMANUAL.
- Never attempt
- Manual interference in AUTO:
- Prefer
manual_gating_policy: BLOCKfor production.
- Prefer
- Ignored provider health degradation:
- Monitor
/v0/providers/healthand supervision fields continuously.
- Monitor
Hardware Integration Safety Checklist
Provider safety
- Provider startup sets actuators to safe defaults.
- Communication failures surface as degraded quality/error status.
- Restart behavior does not create unsafe transient outputs.
Capability and limits
- Function argument constraints match physical limits.
- Signals represent actionable safety state.
- Device fault conditions are exposed clearly.
Operational readiness
- Startup/recovery SOP exists and is tested.
- Emergency stop SOP exists and is tested.
- Site-specific hazard analysis is complete.
Development vs Production Policy
Development/testing:
- Runtime still starts in
IDLE. - Faster workflows are acceptable after minimal safety verification.
OVERRIDEmay be acceptable for controlled bench testing.
Production/hardware operation:
- Keep explicit IDLE verification and full startup checklist.
- Use
manual_gating_policy: BLOCKunless a written override policy exists. - Require documented recovery steps for FAULT entry and exit.
