Howard Marks

Changelog

A record of updates, improvements, and new features shipped for the Howard Marks Knowledge Base.

V 2.7

2026-08-04

G10 Display-Integrity Gate & Final Table Restorations

Quality Gate

  • Added the G10 display-integrity gate and remark-gfm to all renderers sitewide.

Tables

  • Restored 2 further OCR-shattered tables in the predictions-II memo (changes table 12 rows + levels/correlation table 6 rows) from the markdown source, cross-checked against the already-clean predictions-I.

V 2.6

2026-08-03

Memo Tables Rebuilt from Official PDF & Chart SVG Rebuild

Tables — you-cant-eat-irr (7 tables)

  • Rebuilt all 7 Fund X / Y / Z performance tables in you-cant-eat-irr from the official Oaktree PDF (long format, 7 columns); added captions and cleared remnant fragments after the tables.

Tables — Other Memos

  • gimme-credit: rebuilt the results table and the 2004 capital-market-line table.
  • the-value-of-predictions: table-ized the prediction-vs-actual forecast table (12 rows).
  • a-case-in-point: rebuilt the convert-arb returns table (1995–2003).
  • Rendered the conceptual risk-return diagrams as inline SVG (illustrative recreations, honestly labelled). Added HM memo table CSS.

Charting & Integrity

  • Replaced the recharts CCIInteractiveChart with a pure-SVG implementation, resolving a blank-chart bug. G9 inline-quote gate driven to zero.

V 2.5

2026-08-01

78-Memo Re-Paragraph, Mention-Count Fix & W2 Repair

Corpus Reflow

  • Re-paragraphed 78 memos (1,094 paragraph breaks inserted at sentence boundaries) — zero word changes.

Data Correction

  • Corrected the inflated Peter Lynch mention count (claimed 25 memos / 37 mentions → measured 6 memos / 7 mentions) in people.ts and the person markdown.

W2 Repair

  • W2 damaged-content repair pass and W1 residual reflow (HM share).

V 2.4

2026-07-30

Architecture Consolidation

Consolidation

  • HM share of the PTJ / Buffett R2–R7 / Bill Ackman consolidation commit — data-layer and architecture fixes aligned with the other KBs.

V 2.3

2026-07-22

P0–P2 Non-Writing Remediation

Remediation

  • HM share of the sitewide P0–P2 remediation campaign: non-writing defects triaged and resolved.

V 2.2

2026-07-20

Quote Fidelity Wave 0 & Talk Retrieval Wiring

Quote Fidelity

  • Completed quote-fidelity Wave 0 and wired the verified content into the Talk to Buffett / HM retrieval index.

V 2.1

2026-07-19

Quote Fidelity Repair — Concept Layer

Quote Fidelity

  • Partial quote-fidelity repair across 8 concept markdown files plus concepts.ts and memos.ts — fabricated or paraphrased quotes replaced with verbatim corpus spans.

V 2.0

2026-05-06

Vercel Build Fix — Prebuilt Search Index

Build

  • Prebuilt the search index to JSON to bypass the 250 MB Vercel NFT limit; set dynamicParams false for static entity routes so all memo / concept / era / people pages deploy as static.

V 1.9

2026-05-02

SEO — Sentence-Boundary Meta Descriptions

SEO

  • Truncated meta descriptions at sentence boundaries for Buffett + HM pages, avoiding mid-sentence cuts in search snippets.

V 1.8

2026-05-01

159 Memo Summaries Rewritten

Memo Summaries

  • Rewrote all 159 memo summaries to editorial quality — replaced 72 letter-header placeholder summaries with real content, and applied surgical OCR correction in memos.ts.

V 1.7

2026-04-29

Four TODO Blockers Resolved

Blockers

  • Resolved 4 TODOS.md blockers: hardcoded counts replaced with dynamic computation, CI data gate added, sidebar empty-state handled, stale doc removed. Committed all previously partially-staged audit-session changes.

V 1.6

2026-04-25

GEO — JSON-LD Overhaul for Concept Pages

Structured Data

  • Complete JSON-LD overhaul for BL + HM concept pages: Quotation schema, @id entity anchors, Article replacing LearningResource, correct speakable selectors, detail-enriched FAQ, and hasPart letter/memo provenance links. Person + CollectionPage schema added for the KB hubs.

V 1.5

2026-04-23

SEO/GEO Metadata Across 630+ Pages

Metadata

  • Added authoritative metadata to all KB landing, index, and People pages; CollectionPage JSON-LD for memo indexes. BreadcrumbList + FAQPage schema rolled out across all KB detail pages (630+ pages). Sitemap expanded (+227 HM pages); OG / canonical / JSON-LD completed across all KBs.

V 1.4

2026-04-22

Production Release Candidate

Release

  • Cut the release candidate for the Chian.io production launch; resolved a totalFunds type error and aligned Market Eras data.

V 1.3

2026-04-16

Knowledge Graph Launch & Visual QA Pipeline

Knowledge Graph — Launch

  • Launched the Howard Marks Knowledge Graph at /graph — an interactive physics-based force-directed visualization of all 197 nodes (164 memos, 16 concepts, 6 eras, 13 people) and 864 cross-references across the entire 35-year memo corpus.
  • Implemented degree-aware dynamic node sizing: concept, era, and people hub nodes scale with their connection count (base size × √degree), making the most-connected intellectual pillars visually prominent. Memo nodes stay compact to avoid visual clutter.
  • Implemented sniper-focus hover mode: hovering a node fades all unconnected nodes to near-invisible opacity, letting the user read the neighborhood topology of any single node in isolation.
  • Implemented single-click → zoom-to-node and double-click → navigate-to-page interaction, matching the Buffett Knowledge Graph UX pattern.
  • Smart label display: Concept/Era/People labels appear at low zoom (threshold 0.8), memo year labels appear at medium zoom (2.2), full memo titles appear only at deep zoom — preventing label clutter at the default view.
  • Added zoom controls (+/−/reset) in the top-right corner and a bottom-center legend showing the four node type colors.

Graph Data Architecture

  • Created app/lib/generateHMGraphData.ts — server-side graph data generator that reads from the HM data layer and builds nodes/edges. Runs at render time with zero external API calls.
  • Created app/components/HMKnowledgeGraph.tsx — client component with react-force-graph-2d canvas rendering, using the Oaktree color palette: Sage Olive (memos), Parchment Gold (concepts), Oaktree Green (eras), Terracotta (people).
  • Solved the empty peopleMentioned[] problem: since the auto-generated memos.ts has no named entity extraction, bridged all 13 person nodes into the graph via a curated PERSON_CONCEPT_MAP mapping each person to their known relevant concepts.
  • Solved the empty erasMentioned[] problem: read era.memoSlugs[] from eras.ts (the manually-curated explicit list) instead of the empty reverse array.

Engineering Documentation

  • Created .agents/workflows/howard-marks-data-architecture.md — comprehensive SOP covering memo/concept/era/person data architecture, HM_base pipeline run order, cross-link enrichment internals, Knowledge Graph architecture, and Changelog SOP.
  • Created .agents/workflows/howard-marks-layout-sop.md — UI standardization guide matching the Buffett Letters 3-column Zen layout standard.
  • Both workflow files now include Mandatory Session Rules: headless browser first, timeout-safe command patterns.
  • Created HM_base/headless_verify.mjs and HM_base/visual_qa.mjs — automated Playwright-based QA scripts covering 7 critical pages (landing, memos list, memo detail, concept page, Buffett person page, eras timeline, GFC era detail). All checks pass at exit code 0.

Headless Browser Infrastructure

  • Migrated all browser-based verification from browser_subagent to local Playwright (chromium, headless, channel: chrome). All future QA runs use node headless_verify.mjs from HM_base/.
  • Screenshots auto-saved to HM_base/headless_screenshots/ with descriptive filenames for each check.

V 1.2

2026-04-15

Data Integrity Sprint & Memo Corpus Finalization

Corpus Finalization — 164 Memos

  • Integrated the final 2 memos of the 2026 cohort: 'AI Hurtle Ahead' (January 2026) and 'What's Going on in Private Credit?' (March 2026), bringing the total corpus to 164 memos spanning 1990–2026.
  • Verified both 2026 memos against their Oaktree originals — neither features a formal letterhead or images. The memo detail page parser now handles their absence gracefully without generating an empty envelope block.
  • Updated yearRange in data/howard-marks/index.ts to '1990–2026' and all sidebar/memos-list section headers to reflect the 2026 upper bound.

Data Integrity Fixes

  • Fixed GFC era data contamination: removed the 2020 memo 'the-anatomy-of-a-rally' from eras.ts GFC memoSlugs[] list — it is a COVID-era memo, not a GFC-era memo.
  • Fixed MemoPeriod TypeScript union type to include the missing 'pandemic' variant, resolving a runtime type error on pandemic-era memo pages.
  • Replaced hardcoded totalCrossLinks: 2400 estimate in index.ts stats with a live dynamic calculation (sum of keyThemes.length + erasMentioned.length + peopleMentioned.length across all 164 memos) — currently resolves to 926.
  • Updated Warren Buffett memoCount references from '162' to '164' across people.ts description text and the Warren Buffett — Howard Marks.md content file.

Component Fixes

  • Fixed app/projects/howard-marks/people/[slug]/page.tsx to import and use dynamic memos.length instead of the hardcoded '162' string for 'across X memos' references.
  • Fixed all 16 concept pages' source attribution footers to use the standard format: Source: Chian.io — Howard Marks Knowledge Base.
  • Updated concept detail page coverage bar to use dynamic memos.length instead of hardcoded 162.

V 1.1

2026-04-13

Letterhead Standardization, Navigation & Concept Attribution

Memo Letterhead Parser

  • Overhauled the memo letterhead parser in app/projects/howard-marks/memos/[slug]/page.tsx to reliably handle diverse Markdown formats: single-line format ('Memo to: X From: Y Re: Z Body…') and multi-line format with newlines between fields.
  • Added a CONFIDENTIAL preamble stripper to remove 'CONFIDENTIAL © Oaktree Capital Management, L.P.' warnings that appeared at the top of some memos.
  • The parsed letterhead renders as a styled 'memo-envelope' HTML block with bold field labels and green-tinted background, matching the Oaktree editorial aesthetic.

Navigation — 2026 Year Range

  • Updated sidebar accordion navigation 'Recent Memos' label from '2024–2025' to '2024–2026' in HMSidebar.tsx.
  • Updated memos/page.tsx 'Recent Memos' section header to include 2026.
  • Updated eras.ts to reflect the extended recent-era boundary.

Concept Pages — Source Attribution

  • Updated all 16 Markdown files in content/howard-marks/concepts/ to display a consistent clickable source attribution block: Source: Chian.io — Howard Marks Knowledge Base.
  • Added a sidebar source attribution block to the concept detail page with a direct link back to the KB hub.

V 1.0

2026-04-10

Initial Launch — Howard Marks Knowledge Base

Memo Corpus

  • Launched with 162 Howard Marks Oaktree memos spanning 1990–2025 — the complete publicly available memo corpus, sourced directly from Oaktree Capital Management's website and archives.
  • Each memo is a standalone page with letterhead envelope rendering, representative passage display, and full memo text.
  • Memos organized into 5 period groups: Early Memos (1990–1999), Crisis Era (2007–2009), Post-Crisis Era (2010–2019), Pandemic Era (2020–2021), and Recent Memos (2022–present).

Knowledge Index

  • Launched with 16 concept pages covering Howard Marks' core investment frameworks: Risk, Market Cycles, Contrarianism, Second-Level Thinking, Investor Psychology, Credit Markets, Distressed Investing, and 9 others.
  • Launched with 6 Market Era pages: The Early Years, The GFC, Post-GFC Recovery, The Pandemic Era, The Post-Pandemic Normalization, and the AI & Late-Cycle Era — each with Historical Context, Core Thesis, and Hindsight Evaluation analysis blocks.
  • Launched with 13 People profiles covering the key investors, economists, and figures most referenced across the memo corpus.

Cross-Link Architecture

  • Established the index.ts enrichment engine: at module load time, memos[].keyThemes[] is used to back-populate concepts[].memoSlugs[], creating bidirectional navigation between all memos and their concepts.
  • Landing page stat pills show live counts: 164 Memos, 16 Concepts, 6 Eras, 13 People, 926+ Cross-links — all dynamically computed from the data layer.

HM_base Content Pipeline

  • Built a 9-step Python pipeline (scrape → postprocess → excerpts → summaries → metadata → rebuild → validate) for ingesting new Oaktree memos from HTML/PDF sources and generating clean Markdown + TypeScript data files.
  • Pipeline registered in oaktree_url_registry.json — all 164 memos tracked with canonical Oaktree source URLs.

Design System

  • Adopted the Oaktree-inspired Wabi-Sabi Zen palette: warm parchment (#F2F0EC), deep forest ink (#16291B), sage green (#4A7C59), and Oaktree gold (#C8A96E).
  • Typography: Manrope for UI labels, serif display family for editorial headings — consistent with the Zen reading aesthetic across all 206 static pages.

Howard Marks Knowledge Base — built on Next.js with 164 memos spanning 35 years of Oaktree Capital Management.