# Automation Catalog

> **Architecture only.** Automation is **NOT** a PlatformProduct.  
> Contract version: `automation-catalog.v1`  
> ADR: [ADR-023](../architecture/adr/ADR-023.md) (v1.1)

---

## 1. Purpose

The **Automation Catalog** defines reusable automation **types** and **packs** that products and bundles may reference.

Automation remains a cross-cutting catalog — independent of any single commercial product identity.

---

## 2. AutomationType (open registry)

| Field | Type | Meaning |
| --- | --- | --- |
| `automation_type_code` | string | Open key |
| `display_name` | string | |
| `channel_family` | string? | e.g. `messaging`, `schedule`, `event`, `ai` |
| `status` | enum | `active` \| `reserved` \| `deprecated` |
| `owning_runtime_hint` | string? | Typical executor service |
| `ext` | object | |

### Illustrative automation type matrix

| automation_type_code | Display | Family | Status |
| --- | --- | --- | --- |
| `workflow` | Workflow | event | reserved |
| `webhook` | Webhook | event | reserved |
| `event_trigger` | Event Trigger | event | reserved |
| `cron` | Cron | schedule | reserved |
| `scheduler` | Scheduler | schedule | reserved |
| `sms` | SMS | messaging | active |
| `email` | Email | messaging | active |
| `push` | Push | messaging | reserved |
| `rubika` | Rubika | messaging | reserved |
| `whatsapp` | WhatsApp | messaging | reserved |
| `telegram` | Telegram | messaging | reserved |
| `ai_agent` | AI Agent | ai | reserved |
| `api_trigger` | API Trigger | event | reserved |
| `internal_event` | Internal Event | event | active |
| `external_event` | External Event | event | reserved |

Unlimited future types MAY be added as registry entries only.

---

## 3. AutomationPack

Logical packaging of one or more automation types for commercial reference:

| Field | Type | Meaning |
| --- | --- | --- |
| `automation_pack_code` | string | |
| `display_name` | string | |
| `automation_type_codes[]` | string[] | |
| `required_capability_codes[]` | string[] | e.g. `sms`, `email` |
| `required_product_codes[]` | string[] | Optional product deps |
| `status` | enum | `draft` \| `active` \| `retired` |
| `documentation_ref` | string? | |
| `ext` | object | |

Business Bundles and PlatformProducts reference packs by `automation_pack_code` only — never embed workflow graphs here.

---

## 4. Separation rules

1. Do **not** register Automation as `product.automation` in the Product Registry.
2. Communication / future Automation service engines own runtime execution.
3. Commercial foundation owns **catalog contracts** only.
4. Recommendation / activation may *reference* packs; they do not execute them.
