# Tree Blueprint — Where to Put Things

<div id="bkmrk-%E2%9A%A0%EF%B8%8F-read-first-when-d" style="padding: 16px; background: #dc2626; color: white; border-radius: 4px; margin-bottom: 20px; font-size: 18px; font-weight: bold;">⚠️ READ FIRST when deciding any new path</div><div id="bkmrk-purpose%3A-single-answ" style="padding: 12px; background: #dbeafe; border-left: 4px solid #3b82f6; margin-bottom: 20px;">**Purpose:** Single answer to "where does this go?" — read FIRST before any new path creation, repo clone, or directory move.</div>> **One rule:** every file has exactly one canonical home determined by *what it is* + *whose it is*, not by *who created it* or *when*.

## 1. Top-level decision tree

For any new content, answer 4 questions in order:

```
Q1: Is it CODE / file content / data?  No → it's a process artefact, not a tree concern.
Q2: Whose data is it? (CEO personal / ALAI Holding AS / ALAI Tech DOO / a specific client / regenerable)
Q3: What kind? (product, client deliverable, internal tool, scholarly, financial record, brand asset, …)
Q4: What stage? (active draft, in-flight, completed deliverable, archive)

```

## 2. Routing matrix

<table id="bkmrk-whose%3Fwhat-kind%3Fcano"><thead><tr><th>Whose?</th><th>What kind?</th><th>Canonical home</th></tr></thead><tbody><tr><td>**CEO personal**</td><td>CV, NAV records, ID docs</td><td>`~/personal/{cv,nav,legal-personal}/`</td></tr><tr><td>**CEO personal**</td><td>Scholarly research (Quran-19, etc.)</td><td>`~/personal/scholarly/<topic>/` (or own repo + own domain — see ucenje precedent)</td></tr><tr><td>**CEO personal**</td><td>Personal coding (games, hobby projects)</td><td>`~/personal/code/<project>/`</td></tr><tr><td>**CEO personal**</td><td>Real estate, family property</td><td>`~/personal/real-estate/<property>/`</td></tr><tr><td>**CEO personal**</td><td>Personal accounting (NOT ALAI Holding)</td><td>`~/personal/finance-personal/`</td></tr><tr><td>**ALAI Holding AS**</td><td>A product (own SaaS, own brand within ALAI)</td><td>`~/business/ALAI-Holding-AS/products/<product-name>/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Client deliverable / engagement</td><td>`~/business/ALAI-Holding-AS/clients/<CLIENT-NAME>/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Brand surface (alai.no, basicconsulting.no, forms.alai.no)</td><td>`~/business/ALAI-Holding-AS/brand-surfaces/<domain>/` OR `~/business/ALAI-Holding-AS/web/` if alai.no main</td></tr><tr><td>**ALAI Holding AS**</td><td>Brand assets (logo, palette, typography)</td><td>`~/business/ALAI-Holding-AS/brand/` (single source of truth)</td></tr><tr><td>**ALAI Holding AS**</td><td>Finance (accounting, grants, invoices, timesheets)</td><td>`~/business/ALAI-Holding-AS/finance/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Legal (contracts, ROPA, vedtekter, certificates)</td><td>`~/business/ALAI-Holding-AS/legal/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Internal libraries / shared packages</td><td>`~/business/ALAI-Holding-AS/internal/packages/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Sales pipeline, partners, comms, marketing</td><td>`~/business/ALAI-Holding-AS/{sales,partners,comms,content}/`</td></tr><tr><td>**ALAI Holding AS**</td><td>Internal product architecture decisions</td><td>`~/business/ALAI-Holding-AS/product-architecture/` (NOT system architecture)</td></tr><tr><td>**ALAI Holding AS**</td><td>Service catalog / commercial offerings</td><td>`~/business/ALAI-Holding-AS/service-catalog/` (NOT system services)</td></tr><tr><td>**ALAI Tech DOO**</td><td>RS subsidiary content (Bilko/Tok/Drop distribution)</td><td>`~/business/ALAI-Tech-DOO/{products,deliverables,legal,ops}/`</td></tr><tr><td>**External client**</td><td>Client-owned repo (we work IN their repo)</td><td>`~/clients-external/<client-name>/` (matches their org name when possible)</td></tr><tr><td>**External client**</td><td>Engagement records, contracts with that client</td><td>`~/business/ALAI-Holding-AS/clients/<CLIENT>/engagement-docs/`</td></tr><tr><td>**External client**</td><td>Client's brand assets we use</td><td>`~/clients-external/<client-name>/branding/`</td></tr><tr><td>**System runtime**</td><td>Daemons, schedulers, hooks</td><td>`~/system/{daemons,tools,hooks}/`</td></tr><tr><td>**System runtime**</td><td>Architecture decisions (system-level)</td><td>`~/system/architecture/decisions/ADR-XXX.md`</td></tr><tr><td>**System runtime**</td><td>Operational services (authentik, planka, vault)</td><td>`~/system/services/<service>/`</td></tr><tr><td>**System runtime**</td><td>Agent persona definitions</td><td>`~/system/agents/personas/<PersonaName>/`</td></tr><tr><td>**System runtime**</td><td>Specs, plans, runbooks</td><td>`~/system/specs/`, `~/system/runbooks/`</td></tr><tr><td>**System runtime**</td><td>Active databases (Mission Control, HiveMind, …)</td><td>`~/system/databases/` (symlinked) or `~/Library/Application Support/ALAI/db/`</td></tr><tr><td>**ALAI engineering tools**</td><td>Internal CLI / SDK / library used across ALAI</td><td>`~/projects/<repo-name>/` (must have GitHub remote, must be tracked, must NOT mix client work)</td></tr><tr><td>**ALAI infra deploy workspace**</td><td>CF/DNS/Tailscale/Vault/BookStack systemic configs</td><td>`~/aisystem/` (Mehanik gate reads BUILD-BLUEPRINT.md here)</td></tr><tr><td>**Regenerable**</td><td>node\_modules, .gradle, .next, target, venv, build outputs</td><td>INSIDE the repo, gitignored, never outside</td></tr><tr><td>**Backups**</td><td>Tar archives, snapshot dumps</td><td>`~/backups/_archive/<sweep-name-date>/`</td></tr><tr><td>**OS-managed**</td><td>Library data (apps), Caches</td><td>`~/Library/` (DO NOT TOUCH)</td></tr></tbody></table>

## 3. Anti-patterns — explicitly forbidden

<table id="bkmrk-anti-patterncorrect-"><thead><tr><th>Anti-pattern</th><th>Correct alternative</th></tr></thead><tbody><tr><td>Putting personal scholarly content under commercial brand site</td><td>Own repo + own domain (see ucenje → `johnatbasicas/ucenje` + `ucenje.alai.no`)</td></tr><tr><td>Client deliverable in `~/projects/`</td><td>`~/clients-external/<client>/`</td></tr><tr><td>Agent persona in `~/companies/<Name>/`</td><td>`~/system/agents/personas/<Name>/`</td></tr><tr><td>Pretending a domain is a separate firma (vedtekter for it, etc.)</td><td>Domain → `brand-surfaces/<domain>/` under owning entity</td></tr><tr><td>Mixing two clients in one tree</td><td>One tenant per top-level subdir under `~/clients-external/`</td></tr><tr><td>Creating new top-level home dir without entry in `~/system/specs/canonical-registry.md`</td><td>Update registry first, then create dir</td></tr><tr><td>Writing CEO PII (CV, NAV, ID) anywhere outside `~/personal/`</td><td>`~/personal/legal-personal/`, `~/personal/cv/`, `~/personal/nav/`</td></tr><tr><td>Auto-generated `_pii-staging-*` quarantine pattern (one-time fix)</td><td>Process docs/forms BEFORE landing them in tree</td></tr><tr><td>`~/Public` for sensitive content (it is local-network readable)</td><td>Never. Move to private tree.</td></tr><tr><td>Build artefacts (node\_modules, target) outside their repo</td><td>Always inside repo with .gitignore entry</td></tr><tr><td>`.env` files committed to git</td><td>`.env*` in .gitignore; secrets in Bitwarden / Keychain</td></tr><tr><td>Terraform state on local disk</td><td>Remote state (S3/Azure/CF KV); `*.tfstate*` in .gitignore</td></tr></tbody></table>

## 4. References

- ADR-023: `~/system/architecture/decisions/ADR-023-anvil-tenant-restructure-2026-05-07.md`
- Canonical registry: `~/system/specs/canonical-registry.md`
- Git structure rules: `~/system/specs/anvil-git-structure-2026-05-07.md`