MeridiansMeridians

The three layers

Source path: knowledge-base/knowledge/conventions/ai-models/01-the-three-layers.md

# The three layers

| Layer | What it is | Where |
|---|---|---|
| **System** | Which boundary the call crosses: **decide** (System 1, typed probabilistic answers) or **generate** (System 2, text). Two of them; orthogonal to the three below. | `AI_SYSTEMS`, `DECISION_MODEL` |
| **Tier** | A capability/cost rung, mapped to one concrete OpenRouter model. Four of them. | `TIER_MODEL` |
| **Category** | A *modality* of LLM work. Every call site belongs to exactly one. Twelve of them. | `AI_CATEGORIES` |
| **Profile** | A full category→tier assignment. Switching it re-allocates the whole fleet. | `AI_PROFILES` |

A call site never names a model. A generation calls `modelFor('generate')`; the resolver reads the
Director-selected **profile** (fleet-wide, from `record/aux/meta.json`), looks up the **tier** that
profile assigns to `generate`, and returns that tier's **model**. Change the profile → every call of
that modality re-routes. A decision calls `decisionModelFor('action')`, which returns the one
`DECISION_MODEL`; the category is stated for attribution and the call ledger, and leaves room for a
per-category decision allocation later without touching call sites.
Open on GitHub

Raw Markdown source