Decisions and conventions that govern how the vault is structured and why. Add an entry here when a non-obvious choice is made so future contributors (human or AI) understand the reasoning.
Property model
Relationship properties — which note types carry which
| Note type | isIn | partOf | dependsOn |
|---|---|---|---|
| Area (room, space) | ✓ points to containing area | — | — |
| Device | ✓ points to containing area or device | ✓ points to system | ✓ |
System index.md | — | ✓ points to parent system | ✓ points to services or devices it requires |
Service (40-Services/) | — | — | — |
| Leaf doc (non-index) inside a system | ✓ or partOf as appropriate | ✓ or isIn as appropriate | ✓ |
isIn — physical containment only. Devices and areas use it. Services and systems do not: a service has no physical location; the device running it does.
partOf — functional membership in a system. Systems and devices use it.
dependsOn — infrastructure this node requires to function. Systems use it to declare external service dependencies (e.g. 30-Systems/Electrical depends on 40-Services/Duke Energy).
40-Services/ entries are pure dependency targets. They carry no relationship properties themselves — they exist to be referenced by dependsOn. They are external things the home depends on but does not control.
Index files carry isIn/partOf but not dependsOn
Index files need isIn or partOf so the RelatedLinks Quartz component can traverse the hierarchy upward. Without them, the “Located in” / “Part of” trail breaks at every folder boundary.
Index files do not carry dependsOn — infrastructure dependencies are declared on individual notes, not folder containers.
ofA is deprecated — use partOf
ofA has been replaced by partOf for functional membership. Do not reintroduce ofA.
isA — removed
isA has been removed. Type and category are inferrable from folder position. Do not reintroduce it.
Obsidian Breadcrumbs plugin — not in use
The Obsidian Breadcrumbs plugin has been removed. It was causing front-matter churn: getting it to resolve hierarchy correctly required a different link format than what the Quartz RelatedLinks component needs, leading to constant conflicts.
The published site’s context links are produced entirely by RelatedLinks.tsx, which reads isIn/partOf/dependsOn directly from front matter at build time. That component is the only consumer of these properties that matters.
If Breadcrumbs is re-introduced, do it on a dedicated branch and resolve the format conflict before merging.
Front matter inheritance conventions
labelType
Label type for physical printing is resolved via inheritance:
- Note’s own
labelType:front matter - Nearest ancestor
index.mdwithlabelType: - No global default — notes with no resolvable type are skipped
index.md files set the default for their subtree but are never printed
themselves. See [QR Label Printing](QR Label Printing.md) for full details.
Link format
Body text: standard Markdown links, path from vault root:
[Page](40-Services/Docker.md)

Never ![[wikilink]] for images.
Front matter (isIn, partOf, dependsOn): absolute wikilinks, quoted:
isIn: "[[20-Areas/Duplex/UnitB/index]]"
partOf: "[[30-Systems/Home Network/index]]"
dependsOn: ["[[50-Devices/Power/AC Power/UPS/Lab UPS]]"]Rules:
- Always
[[double brackets]]— this is what Obsidian Properties panel drag-and-drop creates - Always the full vault-relative path (no leading slash, no
.mdextension) - Always quoted with
"..."(YAML requires quotes around[[) - Folder notes: include
indexexplicitly:[[20-Areas/Duplex/index]] - No pipe aliases —
[[path/index|Display]]is unnecessary since display names come fromtitle:
Relationships are always explicit. There is no inference from folder position. Every note that participates in a relationship must declare it explicitly.
Obsidian app.json is set to newLinkFormat: "absolute" so drag-and-drop from the
Files panel into a property always generates the correct absolute wikilink format.
Index file requirements
Every index.md must have a title: property in its front matter. Without it,
Quartz falls back to the file stem — which for index.md is literally "index" —
and that string appears verbatim in the RelatedLinks component and the page title.
---
title: Unit B
---The title should match the folder’s display name (i.e. the name after stripping
the numeric prefix, since Quartz strips that in the Explorer anyway).
Folder naming
Top-level folders use {prefix}-{name} (e.g. 10-Overview, A10-Glossary).
The numeric/alpha prefix controls sort order in the Explorer. Quartz strips
the prefix for display names via mapFn in quartz.layout.ts.