Rotor Genie

Architecture

Compatibility layer v2

Rotor Genie should not be a spec table with vibes sprinkled on top. It should be a build graph that knows what can plug into what, what must be configured, and what might let the smoke out.

1. Component profile

Source-backed JSON per part: physical dimensions, pads, connectors, rails, protocols, firmware targets, plus private field-level quality metadata.

2. Compatibility projection

Fast indexed fields for filters: mount patterns, cell ranges, KV, prop diameter, UART count, connector families, and video ecosystem.

3. Rule engine

Advisory-first rules that output severity, plain-English impact, fixes, required user checks, and wiring/setup implications.

4. Build graph

Active selections + alternates per slot, so users can compare candidates without losing the build context.

5. Wiring graph

Pad-to-pad assignments, UART reservations, rail budgets, and continuity/smoke-stopper preflight gates.

6. Setup generator

Betaflight CLI/config output derived from chosen protocols, ports, receiver, VTX, GPS, modes, and safety preferences.

Current implementation slice

  • Limited bundled seed set for Vercel-safe fallback if Supabase is unavailable.
  • Build Lab persists the active build locally and scores frame/FC/ESC/motor/prop/battery compatibility.
  • Rule engine checks normalized profile fields first: mount fit, motor/frame fit, motor/prop mount, frame/prop clearance, ESC voltage range, connector mismatch, rough current headroom, bidirectional DShot support, power index, and explicit Unknown data gaps.
  • Research-derived rule catalog started: 5 implemented, 5 partial, 0 backlog in the first app-facing slice.
Test the Build Lab

Research rule catalog

These are the first compatibility rules lifted from the inbox issue reports into code-facing definitions. Public warnings stay plain-English; source files stay internal.

FC stack mount does not fit the frame

implemented

Frame stack holes must intersect the FC/AIO mounting standard before wiring or setup can be trusted.

frame.fc.mount_pattern_mismatch

ESC stack mount does not fit the frame

implemented

ESC/4-in-1 board mounting pattern must fit the selected frame stack bay.

frame.esc.mount_pattern_mismatch

Motor mount does not fit the frame arms

partial

Motor screw pattern, screw size, and arm-tip geometry must match the frame.

frame.motor.mount_pattern_mismatch

Prop is too large for the frame

implemented

Prop swept disc must fit the frame/duct clearance before motor testing or wiring routing.

frame.prop.clearance_exceeded

Prop mount does not match the motor

partial

Prop mount type, bore, T-mount spacing, and motor shaft/hub requirements must match.

motor.prop.mount_mismatch

Battery voltage exceeds ESC limit

implemented

Battery S count/full-charge voltage must be inside ESC/stack input limits.

esc.input.voltage_over_limit

Battery connector needs adapter or pigtail change

partial

Main battery connector should match the ESC/pigtail connector and current class.

battery.connector.mismatch

ESC current headroom may be too low

partial

ESC continuous current should exceed estimated motor/prop/battery load with thermal margin.

esc.current_rating.under_motor_load

RPM filtering / bidirectional DShot needs ESC support

partial

Bidirectional DShot/RPM filtering requires ESC firmware support; FC support alone is not enough.

esc.bidir_dshot.enabled_without_esc_support

Critical compatibility facts are still unknown

implemented

Unknown normalized fields should stay explicit and should reduce confidence rather than being treated as safe.

data.critical_field_unknown