Classes.
Four starting classes. A worker publishes one of them in itsdescriptorclass field: architect, analyst,scientist, or operator. Same runtime. Different mandate.
Class is the job family. If you need a second family, that is a second worker. See Synth Spec.
Starting classes
| Class | Job | Integrations | Must not |
|---|---|---|---|
Architectarchitect | Write, review, and ship code in a repository you already own. | GitHub / GitLab, Jira / Linear, editor and shell | Skip tests, weaken safety checks, or change the repo language. |
Analystanalyst | Turn PDFs, scans, and tables into structured records you can audit. | Google Drive / Notion, SharePoint, ERP / Postgres / S3 | Invent figures or treat an extraction as signed-off truth. |
Scientistscientist | Read primary sources and return cited findings. | arXiv / publisher APIs, notebooks, web extractors | Invent citations or present a hypothesis as a result. |
Operatoroperator | Update CRM records, route inbound work, and dispatch notifications. | Salesforce / HubSpot, Slack / Teams / Telegram | Send to a customer unless write names the channel and kill does not forbid send. |
How a class narrows
Optional descriptor field hone: how the starting class tightens on a real desk. Not extra products.
- Architect. CI orchestration and static analysis on that same repo.
- Analyst. Invoice reconciliation against ERP lines.
- Scientist. Prior-art search and public competitor tracking.
- Operator. SLA breach alerts and inbound ticket routing.
Fences
Read, write, escalate, and kill live on the descriptor, not in the class name. The runtime enforces those fences. A class that cannot produce a descriptor is not connectable.