Skip to content

Repair tree structure

Inbox reports loops and duplicate roots so the explicit note tree stays resolvable.

The up property makes the note hierarchy explicit, but an explicit hierarchy still needs one root and finite parent chains. Inbox reports loops and duplicate roots directly instead of letting an ambiguous tree silently change context labels.

  • Loop: “up links form a loop.”
  • Duplicate roots: Only one note can act as root.

These violations mean the up links resolve, but the overall tree is not resolvable: the chain either loops forever or has more than one root. Read the row message and apply the matching fix.

Two or more notes point at each other (directly or through a chain), so the up chain never reaches a root. Follow the links until you find the cycle, then repoint one of them at a note higher up the tree:

A.md
up: "[[B]]"
# B.md
up: "[[A]]" # loop: A → B → A

Fix it by pointing one note at a real ancestor instead of back into the loop:

B.md
up: "[[Projects]]" # B now climbs toward the root

Every note that was part of the loop leaves Inbox once the chain reaches the root.

More than one note declares up: -. A tree can have exactly one root. Decide which note is the real root and give every other former root a normal parent link:

Home.md
up: - # keep exactly one root
# Archive.md
up: - # wrong: second root
up: "[[Home]]" # fix: make it a child of the real root
  • Exactly one note declares up: - (the root).
  • Every other note declares up: "[[Parent]]" pointing at an indexed note.
  • Following up from any note reaches the root in a finite number of steps.

If a note is missing its up link entirely, or points at a note that does not exist, that is a different repair — see Repair missing parent links.

  • Every note in an up loop reports up links form a loop.
  • Every note declaring up: - reports the duplicate-root message when more than one root exists.
  • A unique root remains a normal note with the usual task and status validations.
  • Broken structure does not crash context resolution for other branches.
---
status: open
up: "[[A]]"
---
- [ ] Break the loop 📅 2026-07-08
Inbox row explaining that the note up links form a loop
Tree loop
Open row showing a note with a looping up link
Looping note in Open