{
  "entries": [
    {
      "date": "2026-05-17",
      "title": "Production alerts on errors within minutes",
      "category": "security",
      "body": "Worker exceptions, synthesis fallbacks, and missed primary crons (10:00 UTC) now page through Sentry. Structured metric events — anti-flood skips, fallback model used, silent-empty sources, dead-man-switch fires — stream to Axiom for trend queries on how often the model chain falls back. The Healthchecks dead-man-switch stays running in parallel as a safety net through 2026-06-01.",
      "pr": 11,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/11",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Silent-empty source detection",
      "category": "feature",
      "body": "Sources that successfully fetch but return zero items for three consecutive days now surface in the brief footer with a yellow warning. Catches feeds that quietly stop without erroring — the prior failure counter would miss those because the fetcher returned <code>200 OK</code>, just empty.",
      "pr": 8,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/8",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Formal byline on the home page",
      "category": "polish",
      "body": "First-reference attribution on the home page now reads <strong>Joshua Baer, Founder &amp; CEO of Capital Factory</strong> with <em>Baer</em> on subsequent mentions — AP-style, matching how Walt's CBS Austin piece referred to him. Informal contexts (commit messages, internal notes) still use \"Josh\".",
      "pr": 7,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/7",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Public home page + changelog + custom domain",
      "category": "feature",
      "body": "<code>techthisout.run</code> now serves a hero's-journey landing page that walks through how the brief got built, with the CBS Austin interview embedded and a link to Walt's article. <a href=\"/changelog\">/changelog</a> shows recent shipped changes; <a href=\"/changelog.json\">/changelog.json</a> is an agent-readable feed of the same. The old <code>.workers.dev</code> URL still works as a backup.",
      "pr": 6,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/6",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "AI Watch section in the daily brief",
      "category": "feature",
      "body": "New section pulled out of the news firehose: three to five ongoing AI/ML situations Walt should be tracking but that don't always make daily news. The model keeps the topic name stable across days so a thread is recognizable, and surfaces it with an explicit \"no movement\" update on quiet days so it doesn't fall out of the mental model. Seed topics include the ICLR 2026 Reasoning Trap paper, the White House / Anthropic relationship, Musk v. Altman, the DeepMind founder's seed round, and the Stanford AI-adoption-vs-internet study.",
      "pr": 5,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/5",
      "reporter": "Walt"
    },
    {
      "date": "2026-05-17",
      "title": "Daily brief now opens with a stat",
      "category": "polish",
      "body": "The 10-Second Download's first bullet is now required to be a striking single-number stat that frames the day — what Walt opens his segment with on air. Example pattern: <em>\"96% of enterprises run AI agents in production, only 12% have a central platform to manage them.\"</em> Real numbers from real sources; no filler, no generic econ stats.",
      "pr": 5,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/5",
      "reporter": "Walt"
    },
    {
      "date": "2026-05-17",
      "title": "Half-empty briefs now self-heal",
      "category": "fix",
      "body": "When the model chain falls through to a backup and produces a brief that's below content thresholds — fewer than ten news items or fewer than three funding rounds — the brief is stamped as <code>degraded</code> instead of <code>full</code>. Anti-flood guard lets the 10:30 UTC retry cron overwrite a degraded record with a better synth. Walt still gets <em>something</em> at 10:00 (better than nothing); the retry gets a chance to send a real brief 30 minutes later. Replays the 2026-05-08 incident: that day Walt got a brief with 7 news items and 0 funding entries; anti-flood blocked the retry. Won't happen again.",
      "pr": 3,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/3",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Talker of the Day deduplication",
      "category": "polish",
      "body": "The opening stat / pull-quote is now deduplicated against the last three days' talkers. The synthesis prompt sees what's been used and is explicitly told not to repeat or paraphrase. Caught after Walt got near-identical \"Texas data centers will consume 9% of state water by 2040\" talkers two days running, both from the same UT Austin source.",
      "pr": 3,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/3",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Dead-man-switch alert on two-day degradation streaks",
      "category": "security",
      "body": "If today's brief is non-<code>full</code> (fallback or degraded) AND yesterday's was too, the worker pings Healthchecks.io's /fail endpoint instead of the regular heartbeat. Catches the silent-degradation pattern that hid the 8-day breakage earlier this year behind heartbeat-only pings.",
      "pr": 3,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/3",
      "reporter": null
    },
    {
      "date": "2026-05-17",
      "title": "Link-preview card for techthisout in iMessage and Slack",
      "category": "feature",
      "body": "Sharing a techthisout link in iMessage, Slack, or X now renders a proper preview card with the daily-brief tagline. The worker serves <code>/og.png</code> and <code>/og.svg</code> directly from its bundle, no R2 or CDN round-trip.",
      "pr": 2,
      "pr_url": "https://github.com/capitalthought/techthisout/pull/2",
      "reporter": null
    },
    {
      "date": "2026-05-04",
      "title": "Walt's first round of editorial asks",
      "category": "feature",
      "body": "Three changes shipped from Walt's 2026-04-29 feedback. <strong>Talker of the Day</strong> opens each brief with the single best on-air stat or pull-quote, sourced from today's data. <strong>Raw-headlines fallback</strong> now filters to tech-only sources, so when AI synthesis is down Walt gets relevant headlines instead of school-district PR and faculty-appointment news. <strong>A 10:30 UTC retry cron</strong> automatically re-attempts when the 10:00 run lands a fallback — most days that's invisible; on bad days it's the difference between a half-empty brief and a full one.",
      "pr": null,
      "pr_url": null,
      "reporter": "Walt"
    },
    {
      "date": "2026-05-01",
      "title": "Synthesis reliability rebuilt",
      "category": "fix",
      "body": "Replaced the pinned retired model with a fallback chain (Sonnet 4.6 → Opus 4.7 → Sonnet 4.5), bumped output token limit to 8192 to stop briefs being truncated mid-paragraph, and added explicit handling for the Anthropic 524 storm pattern that was producing raw-headlines emails for an 8-day stretch. End-to-end pipeline budget is now ~145 seconds with 180-second per-model timeout.",
      "pr": null,
      "pr_url": null,
      "reporter": null
    }
  ],
  "total": 12,
  "source": "https://techthisout.run/changelog"
}