## 1. Type is Frontmatter, not Folder Path
Folders are storage. The `type` frontmatter field is the type boundary. Obsidian Bases and the CLI are the query and creation layers. This keeps the root flat and means type enforcement survives context-switching outside Obsidian.
**Driver:** Sidebar overwhelm + Bases as query layer makes folder-based typing redundant.
-----
## 2. Folder Structure Consolidated to Ten Root Folders
```sh
++inbox/, calendar/, resources/, notes/, projects/, domains/, systems/, archives/, ops/, util/
```
`resources/` consolidates sources, prompts, software, and pages. Type differentiation is handled by frontmatter, not subfolders.
**Driver:** Frontmatter-first architecture makes per-type folders redundant at the root level.
-----
## 3. calendar/ Is the One Folder with Intentional Subfolders
`calendar/logs/` and `calendar/events/` are justified subfolders because logs are date-named (`2026-03-19.md`) and events are descriptively named (`rails-conf-2026.md`). Mixing them in a flat folder creates visual noise.
**Driver:** Naming convention conflict, not organizational preference.
-----
## 4. +inbox/ Is a First-class Capture Target
`+inbox/` is a throughput folder — the entry point to the knowledge graph for untyped, unprocessed material. It is distinct from `ops/` (operational coordination) and from daily notes (contextual capture).
Promotion routes: `+inbox/` → `notes/`, `resources/`, or `archives/` directly.
**Driver:** Two capture surfaces serve different purposes; inbox needed explicit structural recognition.
-----
## 5. archives/ Is a Flat, One-way Graveyard
Anything no longer useful moves to `archives/`: completed projects, superseded notes, outdated resources, decommissioned systems. Typed frontmatter is preserved. No subfolders. `+inbox/` can route directly to `archives/` for captures not worth keeping.
**Driver:** Archives is a graveyard, not a reference library. Structure should reflect that.
-----
## 6. Schema Decisions Recorded as ADRs in resources/
Significant DKS schema and structure decisions are recorded as Architecture Decision Records in `resources/`. Git handles what changed; ADRs handle why.
**Frontmatter:**
```yaml
---
type: page
tags: ["type/adr", "topic/dks", "topic/architecture"]
date: 2026-03-24
---
```
Title is the filename. One ADR per significant decision. Body: Context / Decision / Consequences.
**Driver:** No existing home for schema rationale; ops/ is too temporal, notes/ is too generic.
-----
## 7. sources/ Lifecycle Follows the CODE Workflow
Sources are processed via Capture → Organize → Distill → Express. Distilled notes link back to their source in the markdown body (not frontmatter). Sources stay in `resources/` as long as useful; they move to `archives/` when no longer relevant. Short-lived sources (e.g. code snippet saves) can skip distillation and go straight to `archives/`.
**Driver:** Explicit lifecycle prevents sources from becoming a disconnected graveyard.
-----
## 8. Agent Context Lives at util/ai/, not self/ at Root
The agent identity and orientation folder is `util/ai/` — nested under `util/` alongside `scripts/` and `templates/`. `util/` is vault infrastructure; none of its contents are domain knowledge objects.
**Driver:** Keeping agent infrastructure off the root; `util/` already exists for scripts and templates.
-----
## 9. domains/ Added as a Root Folder
`domains/` holds a small, fixed set of MOC hub files representing long-lived areas of responsibility — analogous to Areas in PARA. Domain files use an `@` prefix (`@work.md`) as a UX affordance for Obsidian’s wikilink combobox, not as structural metadata. Domain files aggregate objects via embedded Bases queries.
**Driver:** Domains are distinct from projects (no end date) and need a dedicated home.
-----
## 10. Domain Tag Vocabulary Fixed at Six Values
|Tag |Area |
|--------------------|-----------------------------|
|`domain/work` |Day job |
|`domain/remote-ruby`|Podcast hosting |
|`domain/personal` |Non-work projects |
|`domain/finance` |Financial management |
|`domain/home` |Home ownership and management|
|`domain/travel` |Travel planning and trips |
Multi-domain tagging is allowed where genuine overlap exists. Objects declare domain membership via tags, not folder location.
**Driver:** Fixed vocabulary prevents fragmentation; six domains map cleanly to distinct areas of responsibility with no ambiguity.