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.