The office

One vault that remembers

cupel keeps all of its state in one Obsidian-compatible vault, the office, not in the current project. Every note is plain markdown with a small YAML frontmatter block, [[wikilinks]] for provenance, and #tags for classification. Find it with cupel where; it is ~/cupel unless CUPEL_HOME is set.

001The layout

A filing cabinet, not a database

The office is a flat, legible folder you can read with your eyes or open in Obsidian for the graph view. Three singleton notes describe you; five folders hold the work.

~/cupel/ PROFILE.md brokers, currency, constraints, how you work EDGES.md your circle of competence: what you see first MANDATE.md goals, horizon, risk, position-size and sell rules sources/ people and sources you trust, each with a last-checked date watchlist/ ideas you are tracking, with provenance positions/ what you actually hold: cost basis, size, sell triggers theses/ full write-ups, one per idea journal/ a dated decision log: every buy, sell, and pass

Keep frontmatter minimal and put the thinking in the body. PROFILE.md, EDGES.md, and MANDATE.md are singletons cupel always reads; PROFILE.md is free-form (brokers, currency, constraints, preferences), and MANDATE.md frontmatter holds max-position-pct, satellite-target-pct, and review-stale-days, which the linter honors. Keep the whole vault under git: the decision journal’s value compounds as its history grows.

002Note types

Five shapes, each with required fields

cupel doctor infers a note’s type from its directory and enforces a small set of required frontmatter fields. The rest is prose.

sources/<slug>.md

A person or source you trust. What they are good for, their track record, how to read them.

---
name: Dave Chen (semiconductors)
domain: semis, foundries
trust: former fab engineer; calls supply gluts early
bias: structurally bullish on hardware
url: https://example.com/feed        # optional: where to check
last-checked: 2026-05-20
---

watchlist/<TICKER>.md

An idea you are tracking. Every entry traces to a seed.

---
ticker: NVDA
company: NVIDIA
status: watching          # watching | researching | passed | promoted
provenance: "[[Dave Chen]]"   # a [[source]], [[EDGES]], or a hunch
last-reviewed: 2026-05-20
---
#fast-grower
Why it is on the radar, what would have to be true, the open questions.

theses/<TICKER>-thesis.md

The full write-up: the story in two minutes, the load-bearing claim, valuation and what is priced in, risks, and falsifiers.

---
ticker: NVDA
company: NVIDIA
last-reviewed: 2026-05-20
---
The story in two minutes. The load-bearing claim. Valuation and what is
priced in. Risks. Falsifiers. Links: [[Dave Chen]], [[EDGES]].

positions/<TICKER>.md

Something actually held. doctor flags a size-pct that breaches your mandate cap.

---
ticker: NVDA
company: NVIDIA
size-pct: 6              # doctor flags breaches of max-position-pct
cost-basis: 110.40
opened: 2025-02-11
broker: DeGiro          # optional: which account holds it (you may use several)
source: manual          # manual | broker
last-reviewed: 2026-05-20
sell-triggers:
  - thesis breaks (loses pricing power)
  - position exceeds mandate cap
---
Held since 2025. Thesis: [[NVDA-thesis]].

journal/<YYYY-MM-DD>-<slug>.md

A decision. The review-on date is when pulse resurfaces it.

---
date: 2026-05-20
kind: buy               # buy | sell | trim | add | pass | review
ticker: NVDA
review-on: 2026-08-20   # when pulse should resurface this
---
What was decided and why, in plain words. Falsifiers: what would prove
this wrong. Links: [[NVDA-thesis]].
003Provenance

No orphan ideas

Provenance is mandatory on watchlist entries: every idea traces to a [[source]], an edge, or a stated hunch. Wikilinks build the graph, and cupel doctor flags dangling ones.

  • A thesis links its [[source]] and [[EDGES]].
  • A position links its [[thesis]].
  • A journal entry links the [[thesis]] or [[position]] it concerns.

Links match by slug, so [[Pragmatic Infra Letter]] resolves to pragmatic-infra-letter.md (case, spaces, and hyphens are ignored). For a note whose natural title differs from its filename, add an aliases: field with the display name so the link resolves in Obsidian too.

---
name: Pragmatic Infra Letter
aliases: [Pragmatic Infra Letter]
last-checked: 2026-05-20
---
Tags classify alongside links: Lynch’s six categories (#fast-grower, #cyclical, and the rest) plus status (#held, #passed). Dates are always YYYY-MM-DD; the linter measures staleness from last-reviewed, last-checked, and last-synced.
004The journal

Judge the reasoning, not the price

Whenever a conversation reaches a decision, a buy, sell, trim, or a deliberate pass, cupel writes a dated note to journal/ as a byproduct: the date, what was decided, the thesis in a sentence, the provenance, and the falsifiers, what would prove this wrong.

On review

When pulse or brief resurfaces an entry whose review is due, cupel judges reasoning quality first. A sound decision can have a bad outcome and a poor decision a good one, so separate the decision from the result. Profit and loss is secondary; if you want it, cupel asks for the current price rather than guessing. It never fabricates a number.

005The linter

cupel doctor keeps it honest

The LLM does the judgment; the linter guards the filing cabinet. After any write, cupel runs doctor and fixes what it flags:

  • Missing or malformed required frontmatter fields.
  • Dangling [[wikilinks]] that point at no note.
  • Mandate breaches: a position over your max-position-pct, or total satellite over your satellite-target-pct.
  • Stale reviews, measured against review-stale-days, and decisions whose review-on date has arrived.
$ cupel doctor
# reports time since last pulse, plus any inconsistencies

cupel portfolio sums your positions deterministically: each holding’s size against the cap, and the total against your satellite target. The arithmetic is the CLI’s; what to do about a concentrated or oversized book is the model’s call.

$ cupel portfolio
# CRWD 12% (over 8% cap) ยท total satellite 26% of 20% target

Because the linter is deterministic and the office is plain files, the slow-burning value, the dated decision journal, the provenance graph, the staleness checks, stays readable and yours, with or without cupel installed.