# Rules Engine

Rules engine generates draft plans from dynamic selectors and actions.

## Selector DSL
- Supports `AND/OR` groups.
- Operators: `equals`, `not_equals`, `in`, `not_in`, `gt`, `gte`, `lt`, `lte`, `contains`, `starts_with`.
- Fields: `price`, `special_price`, `updated_at`, `sku`, `name`, `status`, `visibility`, `is_in_stock`, `category_id`.

## Action DSL
- `generate_price_changes`
- `generate_category_assignment`
- `generate_category_positions`

## Rule run execution
1. Select SKUs.
2. Generate plan payload.
3. Create draft plan.
4. Generate preview.
5. Optionally `auto_submit` into approvals flow.

## Scheduling
- `schedule_interval_minutes` + `next_run_at`.
- Scheduler tick enqueues `rule_run` into `merch_runs`.
