Status

Visual audit pass landed 2026-05-03. Tag taxonomy is the controlled vocabulary (38 → 11 active tags). 5 MOCs exist for Frontend, KB, Tests, History, Compliance. The Index has a Maps of Content section pointing to all five.

Plugins are per-vault

The DBPOC-Vault has no community plugins installed as of 2026-05-03 (verified via .obsidian/plugins/ directory absence). Even though Charts, Dataview, Excalidraw, and Templater appear “INSTALLERAD” in Obsidian’s plugin browser, that flag reflects another vault — likely AI-GEMMA4-POC. To enable them here:

  1. Open Obsidian with this vault (~/Documents/DBPOC-Vault/)
  2. Settings → Community plugins → Browse → install Charts, Dataview, Excalidraw, Templater into THIS vault
  3. Enable them

Until that’s done, the Dashboard uses native mermaid (xychart-beta + pie + flowchart) for every panel — works in stock Obsidian. The Wiki/Charts/*.json, Wiki/Bases/*.base, and Dataview/Excalidraw blocks documented in Dashboard Data Sources are dormant fallbacks that activate when the corresponding plugin lands.

Visual and structural rules for this vault. Pair with Wiki Conventions (filename / frontmatter / heading rules) and Lint Checklist (per-edit mechanical checks). The full visual audit and tag-taxonomy build was deferred when the responsible agent was interrupted; this is a working stub derived from the conventions already in use across the 98 notes.

Frontmatter

Every note opens with:

---
tags: [domain]
updated: YYYY-MM-DD
---
  • tags is a YAML list, never a comma-string.
  • updated is ISO date, no time, bumped only when the note’s content changes.
  • Optional: aliases: [Alt Name] if the note has a real alternate name.
  • Optional: cssclasses: [dashboard] for special-render notes.

Heading rules

  • Zero or one H1 per note. Title is implicit when frontmatter tags and the filename are descriptive.
  • No skipped levels (H2 follows H2, not H4).
  • Same-kind notes use the same H2 set. Examples:
    • History era notes: ## Span, ## Commits, ## Significance, ## Cross-references
    • Frontend section notes: ## Purpose, ## File, ## Props, ## Backend, ## Gotchas
    • Test suite notes: ## Files, ## What it covers, ## Fixtures, ## Gaps

Callout vocabulary

TypeWhen
> [!note]Plain expository sidebar
> [!info]FYI, dashboard KPI strip semantic anchor
> [!tip]Pointer (“Start at Dashboard”)
> [!success]Verified-fixed claim (“RoPA gate confirmed at workers.ts:62”)
> [!warning]Real risk: hardcoded secret, destructive script, broken behavior
> [!danger]Production-impacting bug or compliance gap
> [!example]Foldable code/diagram demonstration. Use [!example]- for collapsed-by-default
> [!abstract]Definition or summary block at top of a note
> [!quote]Last-updated footer or external citation
> [!todo]Outstanding work, missing canvas, deferred decision
> [!chart]Wraps a Charts-plugin fenced block

Foldable variants: > [!note]- (collapsed) and > [!note]+ (expanded). Use - aggressively on the dashboard so the page is short on first paint.

Code blocks

  • Always include a language hint: ts, tsx, sql, bash, sh, yaml, json, mermaid, chart, dataview, base.
  • Long blocks (>30 lines) get a one-line preface and a closing remark.
  • Mermaid sources for the dashboard live under Wiki/Mermaid/; inline copies in Wiki/Dashboard.md cite the source file with “Edit there, not here.”

Tables

  • Header row required.
  • Column count ≤ 5 in body notes; the dashboard KPI strip is the one intentional exception (5 cols).
  • Standardize column order across same-kind notes. Test notes: File | Lines | Covers | Notes.
  • Centre-align KPI numbers with :---:.
  • Title-case [[Note Name]], no .md extension.
  • Alias with pipe: [[Note Name|alias]].
  • Section embed: [[Note Name#heading|Heading]].
  • Block embed: ![[Note Name]] (whole note) or ![[Note Name#heading|Heading]] (one section).
  • Convert bare URLs in body text to [label](url). Wikilink inside the vault, Markdown link to the outside.

Tag taxonomy (controlled vocabulary, finalised 2026-05-03)

Audit collapsed 38 distinct tags down to 11 in active use. Total tag occurrences across 99 notes: 110.

TagCountWhen to use
process24Wiki conventions, lint, MOCs, dashboard, style guide, anything meta
frontend17kundkort SPA, sections, hooks, charts, UI primitives, auth
enrichment14Pipeline sources (Crawlee, Firecrawl, Maps, Domain Discovery), scoring, name validation
kb13KB legal subproject (architecture, content, chat, UI, settings)
test10Test strategy, per-suite docs, coverage gaps
compliance8GDPR, RoPA, opt-out, Article 14, reklamspärr, Bisnode, blocklists
architecture6System overview, stack, pipeline, repo layout, diagrams
scripts5Import / archive / backup / debug / one-off scripts
operations5Local dev, autoresearch loop, experiment results, known issues
data5Bolagsverket import, SCB import, schema, schema migrations
dashboard3The dashboard itself + its layout + data-source spec

Reserved (vocabulary defined, currently unused in Wiki/):

  • adr — for ADRs (live in repo docs/adr/, not in vault)
  • diagram — for Wiki/Mermaid/*.md (currently those files have no frontmatter)
  • history — covered implicitly via the History X Era filename pattern; retain for future history notes

Rules:

  • A note has 1–3 tags. The first is the primary domain; the rest are secondary if they materially apply.
  • Do NOT invent new tags. Add to the controlled vocab via Style Guide edit + retroactive sweep.
  • Status / lifecycle (superseded, deprecated, proposed) is expressed in the note body callout (> [!warning], > [!todo]), not in tags.

MOC pattern

Maps of Content (MOCs) are landing pages for a category — one note that opens with a “Start here” callout and groups its category’s notes by sub-theme. Each MOC links to its child notes; child notes do NOT need to link back (the graph view shows the relation).

MOCs in use (created 2026-05-03):

  • Frontend MOC — 17 notes, grouped by Pages / Sections / Charts / Hooks / Auth / UI primitives / Build
  • KB MOC — 13 notes, grouped by Architecture / Content / Chat / UI / Compliance
  • Tests MOC — 10 notes, grouped by Strategy / By area / Verified bugs
  • History MOC — 12 notes, grouped by Top level / Eras
  • Compliance MOC — 8 notes, grouped by Legal basis / Mechanisms / See also

Threshold for creating a new MOC: a tag exceeds 8 notes AND the topic has clear sub-themes. Smaller categories live in Index only.

Dashboard rendering rules

  • Five-column KPI strip is a Markdown table, not five callouts. Reading view stacks consecutive callouts vertically; tables are the only horizontal-row construct that survives.
  • Charts plugin blocks (```chart) do not render inside table cells in Reading view. The Coverage Health section is four sequential [!chart] callouts, not a 2x2 grid. Documented decision in Dashboard Layout Spec.
  • Compliance section defaults to > [!warning], never > [!success]. A dashboard that opens “all green” trains complacency.
  • Eye flow: triage signal above the fold (KPI → Pipeline → Coverage), Compliance as closing verdict, Quick links last.

Chart contrast convention (mermaid, dark theme)

Mermaid’s default theme renders dark-blue bars on a near-black Obsidian background — they were nearly invisible. Every chart in the vault must override themeVariables with the high-contrast palette below. Documented after a 2026-05-03 readability fix.

Bar / line / area (xychart-beta) — embed in the chart’s frontmatter config::

theme: base
themeVariables:
  xyChart:
    backgroundColor: "transparent"
    titleColor: "#ffffff"
    xAxisLabelColor: "#e5e7eb"
    xAxisTitleColor: "#e5e7eb"
    xAxisTickColor: "#94a3b8"
    xAxisLineColor: "#94a3b8"
    yAxisLabelColor: "#e5e7eb"
    yAxisTitleColor: "#e5e7eb"
    yAxisTickColor: "#94a3b8"
    yAxisLineColor: "#94a3b8"
    plotColorPalette: "#38bdf8, #f472b6, #facc15, #34d399, #a78bfa, #fb923c, #f87171, #22d3ee, #c084fc, #4ade80, #fbbf24"

Pie — use the inline “ directive:

 

Palette intent: sky-blue (#38bdf8) for neutral metrics, green (#34d399) for healthy / covered, red (#f87171) for problems / untested, amber (#facc15) for warnings. Single-series line charts default to sky-blue. Always keep backgroundColor: "transparent" so the callout’s background shows through.

What this guide does not yet cover

  • Excalidraw canvas conventions (see Dashboard §Architecture for the planned canvas — operator action to create)
  • Vault-graph hygiene rules (which notes should be hubs, which should be leaves) — defer until the vault doubles in size
  • Note retention / archival rules (when a note becomes stale, what happens to it)

See also