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 typeisInpartOfdependsOn
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:

  1. Note’s own labelType: front matter
  2. Nearest ancestor index.md with labelType:
  3. 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.


Body text: standard Markdown links, path from vault root:

[Page](40-Services/Docker.md)
![](path/to/image.jpg)

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 .md extension)
  • Always quoted with "..." (YAML requires quotes around [[)
  • Folder notes: include index explicitly: [[20-Areas/Duplex/index]]
  • No pipe aliases — [[path/index|Display]] is unnecessary since display names come from title:

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.