Repair tree structure
Inbox reports loops and duplicate roots so the explicit note tree stays resolvable.
Why it matters
Section titled “Why it matters”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: “
uplinks form a loop.” - Duplicate roots:
Only one note can act as root.
How to fix
Section titled “How to fix”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.
“up links form a loop.”
Section titled ““up links form a loop.””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:
up: "[[B]]"
# B.mdup: "[[A]]" # loop: A → B → AFix it by pointing one note at a real ancestor instead of back into the loop:
up: "[[Projects]]" # B now climbs toward the rootEvery note that was part of the loop leaves Inbox once the chain reaches the root.
“Only one note can act as root.”
Section titled ““Only one note can act as 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:
up: - # keep exactly one root
# Archive.mdup: - # wrong: second rootup: "[[Home]]" # fix: make it a child of the real rootWhat a healthy tree looks like
Section titled “What a healthy tree looks like”- Exactly one note declares
up: -(the root). - Every other note declares
up: "[[Parent]]"pointing at an indexed note. - Following
upfrom 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.
What to expect
Section titled “What to expect”- Every note in an
uploop reportsuplinks 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.
Example note to repair
Section titled “Example note to repair”---status: openup: "[[A]]"---
- [ ] Break the loop 📅 2026-07-08What it looks like
Section titled “What it looks like”Tree loop
Section titled “Tree loop”
Looping note in Open
Section titled “Looping note in Open”