## 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.