The Loop·Colophon·by Martin Brian

How The Loop is made

A wiki the model maintains; a persona it can't talk past. Three Claude Code sessions a day, each ending itself via /goal. No third-party API keys.

The thesis

The newsletter is whatever the wiki says. The wiki is what the model maintained yesterday. The drafter is a thin renderer on top.

Three sessions, one substrate

Three Claude Code sessions run nightly. Each is a self-terminating routine that ends via /goal. They share one substrate: a markdown wiki the model edits in place.

The daily cron pipelineThree sequential Claude Code Routines run nightly: data-collection at 02:00, wiki-cleanup at 03:00, newsletter-generation at 08:00. Each self-terminates via /goal.02:00data-collectionfetch + synthadoc ingest~10 min03:00wiki-cleanuplint + promote + expire CLMs~3 min08:00newsletter-generationdraft · 7 reviewers · publish~20 minEach session ends via /goal. `newsletter-loop ondemand` drives the same chain on demand.

data-collection writes candidate pages from raw items. wiki-cleanup grades them — promotes, dedupes, expires. newsletter-generation reads the wiki, never the raw items. The drafter sees what the model already shaped.

The wiki is the architecture

Karpathy's LLM wiki pattern, made concrete. Raw sources are immutable — items.jsonl, post-dedup, SHA-stamped. The wiki is what the model writes on top: candidate pages with cross-refs and source SHAs, a nightly lint that flags orphans, contradictions, and claims a newer source supersedes.

The tedious part of maintaining a knowledge base is not the reading or the thinking — it's the bookkeeping. — Karpathy

The three layers of the LLM wiki patternThree stacked boxes labeled, top to bottom: Schema, Wiki, Raw sources. Arrows on the right show the model maintaining the wiki from raw sources, and the drafter reading the schema + wiki at the top of every run.Schemanewsletter.yaml · persona.md · personality.md · OPEN_CLAIMS.mdstanding instructions, read at the top of every runWikicross-refs + source SHAs + nightly lintcandidate pages written during ingest, promoted by lintRaw sourcesitems.jsonl · SHA-stamped · immutableRSS · Hacker News · GitHub Search trendingmodel maintainsdrafter reads
Karpathy's three layers, applied. The wiki is the new piece — the model maintains it so the drafter can query it instead of re-discovering knowledge on every run.

The point is compounding. "This rhymes with the open-weights catch-up" is a cheap lookup over a graph the model has been editing for months — not a vector search over loose documents that arrive blindfolded to every query. RAG, structurally, can't do this; it forgets between sentences. The persona accrues credibility because the wiki accrues memory.

The moves

  • Personas are configs, not code. One drafter, seven reviewers — eight markdown files. Skeptical-analyst, fact-checker, plain-english editor, continuity-reviewer, devil-on-shoulder, the-bartender, the-historian. Swap any by editing a file. Claude Code's Agent tool dispatches them in parallel and severity-flags the diff.
  • Bets have state. Every predictive claim becomes a CLM-NNNN with confidence delta and resolution horizon. Expired claims surface at the next run. Crow gets eaten on the front page, not in a correction footer.
  • Three-whys, recorded. Before the take crystallizes, the drafter writes its three "why"s to drafts/issue-N/scratch/three-whys.md. One reviewer checks the chain. The receipts are in the repo.
  • Subscription-bound. No embeddings, no search API, no third-party inference key. Opus drafts. Sonnet reviews. Haiku ingests. Synthadoc's MCP runs in the same session.
  • No human edits between draft and publish. Once reviewers clear, it ships. Wrong calls land in the next day's Reckoning, not in a quiet edit.

The stack

  • Engine: newsletter-loop (AGPLv3) — Python, click CLI, pydantic configs, plugin contracts for sources and publishers, CLM state machine, SKILL.md driver.
  • Wiki spine: synthadoc — local-first knowledge compiler, source dedup, ingest manifest, lint pass. MCP server, claude-code provider.
  • Instance: the-loop-newsletter — persona, source list, the wiki, the archive.
  • Render: this site (Next.js + Vercel). Markdown → HTML, RSS, llms.txt.

How to read an issue

  • The Reckoning when it leads — old bets just resolved.
  • The take — load-bearing opinion, three-whys deep.
  • Also worth knowing — scanning surface.
  • Open bets — every CLM has a confidence delta and a resolution horizon.

Feedback

If a take is wrong, the next issue will hear about it. DM or email. Every issue's review-summary lives next to its draft.md.