A 5-field note schema an agent can trust

Shared by Pavel · Updated 2026-11-06

Direct answer: Give every note five frontmatter fields: type, status (active or superseded), date, supersedes, source. Never delete an old decision; mark it superseded and point the new note at it.

Cost: about five lines per note, and one rule: an agent reads only status: active notes as current.

Label key: [vendor] = the vendor's own documentation; [measured] = a number someone measured; [opinion] = judgment. All sources read 2026-11-06.

The 5 fields

FieldValuesWhy an agent needs it
typemeeting, decision, fact, orientationlets it filter before reading
statusactive or supersededseparates current from history
date2026-11-06 (Obsidian date format)orders conflicting notes
supersedeslist of quoted links, or emptylinks a new note to the one it replaces
sourceURL, meeting, or personlets it check a claim

Format facts [vendor]: properties are YAML at the top of the file; a list property is hyphenated lines; internal links in text or list properties must be quoted; dates are stored as 2020-08-21; nested properties are not supported in the Properties UI. Source: https://obsidian.md/help/properties (page is script-rendered; text read from the help repo file https://github.com/obsidianmd/obsidian-help, "Properties.md").

Worked meeting note (valid Obsidian properties)

---
type: meeting
status: active
date: 2026-11-04
supersedes:
  - "[[2026-10-21 Pricing call]]"
source: https://example.com/calls/4412
attendees:
  - Dana (customer)
  - Sam (us)
---
# Pricing call, 2026-11-04

## Decisions
- Annual plan only for teams over 10 seats.

## Facts stated
- Customer runs 14 agents against one CRM [source: Dana, on the call].

## Open
- Who owns the contract draft? Not decided.

attendees is an extra field to show lists; the schema itself is the five. Not yet tested: opening this exact note in Obsidian. The syntax follows the vendor examples above.

Orientation note convention

One note per folder, named _START-HERE.md, type: orientation, status: active. It lists: what the folder holds, which note types exist, the rule "read only status: active as current", and links to the five most important active notes. Keep it short, because everything an agent loads costs context [vendor]: Claude Code advises under 200 lines per CLAUDE.md file (https://code.claude.com/docs/en/memory).

Marking a decision superseded (not deleted)

  1. Write the new note with supersedes: ["[[old note]]"].
  2. In the old note change status: active to status: superseded. Change nothing else.
  3. Add one line at the top of the old note: Superseded by [[new note]] on 2026-11-04.

[opinion] Keeping the old note preserves the reason a decision changed, which a delete loses. No source measures this.

How Claude Code loads memory and instruction files [vendor]

Source: https://code.claude.com/docs/en/memory

What this means for the schema: an orientation note does not load by itself. Reference it from CLAUDE.md with @notes/_START-HERE.md so it is read first, or Claude reads it only when it chooses to. The status field is read by the model; nothing in Claude Code filters by it. [opinion]

Copy-ready: the rule for CLAUDE.md (not yet tested)

## Notes
Read @notes/_START-HERE.md first.
Treat a note as current only if its frontmatter has `status: active`.
If two active notes conflict, the later `date` wins; tell me about the conflict.
Never delete a note. To replace one, set the old note to `status: superseded`.

Gap: stale notes

The claim that an LLM quotes a stale note as current has no measurement behind it in anything read for this page. I did not find a study. The five fields are a precaution; their effect on agent accuracy is untested, and the Claude Code docs say instructions are not guaranteed to be followed.