{
  "meta": {
    "title": "Case Study Library",
    "series": null,
    "kind": "Field Data",
    "subject": "Every merged pull request in this repository's own history, tagged and knowledge-graphed",
    "updated": "2026-09-20",
    "nextReview": "2026-12",
    "cadence": "Quarterly, or after a major push, by re-running the fetch + build pipeline.",
    "refreshLog": [
      {
        "date": "2026-09-20",
        "summary": "Initial publication (v0.1.0). Fetched all 2,071 merged pull requests in the repository's history (#1 through #2415) via the GitHub API, classified each by a deterministic title-keyword ruleset into a surface and a cross-cutting discipline (no per-PR file diff, no runtime model), and rolled them into 22 disciplines connected by a knowledge graph whose edge-strength threshold is a slider the reader controls. Also detected 136 real follow-up arcs (a feature plus the fixes/refactors/tests that landed on the same surface after it, \"general\" excluded). Both title co-mentions and same-day merges are computed and released, but the on-page drawing shows only title-co-mention edges, since same-day merges alone are too common at this repository's pace to stay legible at any threshold. 31 pull requests describing a now-removed employer-internal admin tool are withheld under the site's standing red line (docs/surfaces/case-study-library.md) and counted but never named. The pull request that built this page is not itself in this snapshot; it will appear in the next refresh. On top of the corpus sits an editorial layer (curated.mjs): 8 hand-written case studies, each citing merged pull requests by number, receipt-checked in the browser and in CI, ranked for whoever is reading, with a permalink per case."
      }
    ]
  },
  "release": {
    "version": "v0.1.0",
    "license": "CC-BY-4.0",
    "downloadBase": "/downloads/case-study-library/v0.1.0",
    "sha256": {
      "cases.json": "55f03a0051e97031d0176d6ffc5ff8e972866e99887b79a145faeb2f6c9d68e3",
      "cases.csv": "6139ba1f5ac0f8ffca48ec87ecefd664e6c1c70d3e4cd0c21115fa2bc03c6459",
      "disciplines.json": "d44aaba99b0155768e96855d0c1987338efb379b377501edeeea23d849a18690",
      "disciplines.csv": "b8013d1155b4eec4f8a599c93caf200100436ef53e2d5d9bdbe54070dda1b854",
      "edges.json": "ec2d353c6b7b0492345bc541ba109398f7bf67fb1a0b87ef63979c31594ea21e",
      "edges.csv": "2885a458731f217b984d219f668b0a67d4d95c908b73dfc47e549267388fe171",
      "sources.json": "c1378e419b1112090377fdc35ab27532cf8dac9b6db925df7a5c62dfaa9b8aaf",
      "sources.csv": "1e5f270899bad8463c5fb281a3a14fa938d020f1bd7c0217556b5273683fcb3e"
    },
    "rawTotal": 2071,
    "withheldCount": 31
  },
  "sources": {
    "github_api": {
      "id": "github_api",
      "title": "jake0lawrence/jakelawrence.xyz: merged pull requests",
      "publisher": "GitHub REST API",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pulls?q=is%3Apr+is%3Amerged",
      "published": "2026-09-20",
      "accessed": "2026-09-20",
      "kind": "version-control-history",
      "cadence": "Snapshot; refreshed by re-running the fetch + build pipeline."
    }
  },
  "disciplines": {
    "content-editorial": {
      "title": "Content & Editorial",
      "blurb": "Blog, newsletter, comics, podcast, social broadcasts, radio."
    },
    "research-field-data": {
      "title": "Research & Field Data",
      "blurb": "The /research surfaces: sourced datasets, essays, claims ledgers."
    },
    "household-ops": {
      "title": "Household Operations",
      "blurb": "Money, todos, calendar, chores, rituals, appointments, family logistics."
    },
    "games-interactive": {
      "title": "Games & Interactive",
      "blurb": "The games library, Gauntlet, Chessguessr, Console, in-essay micro-games."
    },
    "language-learning": {
      "title": "Language Learning",
      "blurb": "The Lightning Course, Ukrainian Frequency, the lemmatizer, /ua."
    },
    "ai-agent-infra": {
      "title": "AI & Agent Infrastructure",
      "blurb": "SAGEN, LLM-QP, the Council, chat/concierge, inference, benchmarks."
    },
    "civic-public-data": {
      "title": "Civic & Public Data",
      "blurb": "Rules Stack, Grove, Tashkent, Pingree Grove, police-shootings, ICE claims."
    },
    "platform-admin": {
      "title": "Platform & Admin Tools",
      "blurb": "The admin console, secrets, identities, outreach, FOIA, burn, deploy radar."
    },
    "devops-quality": {
      "title": "DevOps, CI & Quality",
      "blurb": "CI, tests, playtest, Storybook, build tooling, secrets audits."
    },
    "docs-process": {
      "title": "Docs & Process",
      "blurb": "Surface docs, the domain map, runbooks, Heddle issue-mirror docs."
    },
    "distribution-growth": {
      "title": "Distribution & Growth",
      "blurb": "LinkedIn, /social, the distribution graph, the changelog, ads."
    },
    "auth-identity": {
      "title": "Auth & Identity",
      "blurb": "NextAuth, OIDC, the family identity provider, sign-in flows."
    },
    "commerce-billing": {
      "title": "Commerce & Billing",
      "blurb": "Hire, freelance, GraphMy, Stripe billing, listings, the DPF shop."
    },
    "comms-messaging": {
      "title": "Comms & Messaging",
      "blurb": "Telegram, the personal inbox, shared mail, ShareX."
    },
    "studio-media": {
      "title": "Studio & Media",
      "blurb": "Studio, Sora, ELI5, Narrator Studio, the house-sound layer."
    },
    "heddle-product": {
      "title": "Heddle",
      "blurb": "The Heddle product surface: attention, events, budget, omnibar, agent."
    },
    "crss-exam-prep": {
      "title": "CRSS Exam Prep",
      "blurb": "The CRSS question bank, corpus checks, the /study diagnostic loop."
    },
    "mobile-launcher": {
      "title": "Mobile & Launcher",
      "blurb": "The Expo app factory, the Android home-screen launcher."
    },
    "tools-boards": {
      "title": "Tools & Shared Boards",
      "blurb": "Weather, AQI, /t /w /trip /cd multi-tenant boards, the tools landing."
    },
    "novels-atelier": {
      "title": "Novels & Atelier",
      "blurb": "Weight of Salt, the Pandora Threshold, Atelier, Fronds."
    },
    "workshop-house": {
      "title": "Workshop & Smart House",
      "blurb": "The Living Workshop bench twin, MANOR house control."
    },
    "general-infra": {
      "title": "General & Infrastructure",
      "blurb": "Cross-cutting fixes, refactors, and setup with no single named surface."
    }
  },
  "graph": {
    "nodes": [
      {
        "id": "ai-agent-infra",
        "title": "AI & Agent Infrastructure",
        "blurb": "SAGEN, LLM-QP, the Council, chat/concierge, inference, benchmarks.",
        "count": 38
      },
      {
        "id": "auth-identity",
        "title": "Auth & Identity",
        "blurb": "NextAuth, OIDC, the family identity provider, sign-in flows.",
        "count": 9
      },
      {
        "id": "civic-public-data",
        "title": "Civic & Public Data",
        "blurb": "Rules Stack, Grove, Tashkent, Pingree Grove, police-shootings, ICE claims.",
        "count": 27
      },
      {
        "id": "commerce-billing",
        "title": "Commerce & Billing",
        "blurb": "Hire, freelance, GraphMy, Stripe billing, listings, the DPF shop.",
        "count": 66
      },
      {
        "id": "comms-messaging",
        "title": "Comms & Messaging",
        "blurb": "Telegram, the personal inbox, shared mail, ShareX.",
        "count": 62
      },
      {
        "id": "content-editorial",
        "title": "Content & Editorial",
        "blurb": "Blog, newsletter, comics, podcast, social broadcasts, radio.",
        "count": 143
      },
      {
        "id": "crss-exam-prep",
        "title": "CRSS Exam Prep",
        "blurb": "The CRSS question bank, corpus checks, the /study diagnostic loop.",
        "count": 62
      },
      {
        "id": "devops-quality",
        "title": "DevOps, CI & Quality",
        "blurb": "CI, tests, playtest, Storybook, build tooling, secrets audits.",
        "count": 53
      },
      {
        "id": "distribution-growth",
        "title": "Distribution & Growth",
        "blurb": "LinkedIn, /social, the distribution graph, the changelog, ads.",
        "count": 14
      },
      {
        "id": "docs-process",
        "title": "Docs & Process",
        "blurb": "Surface docs, the domain map, runbooks, Heddle issue-mirror docs.",
        "count": 35
      },
      {
        "id": "games-interactive",
        "title": "Games & Interactive",
        "blurb": "The games library, Gauntlet, Chessguessr, Console, in-essay micro-games.",
        "count": 146
      },
      {
        "id": "general-infra",
        "title": "General & Infrastructure",
        "blurb": "Cross-cutting fixes, refactors, and setup with no single named surface.",
        "count": 633
      },
      {
        "id": "heddle-product",
        "title": "Heddle",
        "blurb": "The Heddle product surface: attention, events, budget, omnibar, agent.",
        "count": 135
      },
      {
        "id": "household-ops",
        "title": "Household Operations",
        "blurb": "Money, todos, calendar, chores, rituals, appointments, family logistics.",
        "count": 185
      },
      {
        "id": "language-learning",
        "title": "Language Learning",
        "blurb": "The Lightning Course, Ukrainian Frequency, the lemmatizer, /ua.",
        "count": 65
      },
      {
        "id": "mobile-launcher",
        "title": "Mobile & Launcher",
        "blurb": "The Expo app factory, the Android home-screen launcher.",
        "count": 1
      },
      {
        "id": "novels-atelier",
        "title": "Novels & Atelier",
        "blurb": "Weight of Salt, the Pandora Threshold, Atelier, Fronds.",
        "count": 40
      },
      {
        "id": "platform-admin",
        "title": "Platform & Admin Tools",
        "blurb": "The admin console, secrets, identities, outreach, FOIA, burn, deploy radar.",
        "count": 109
      },
      {
        "id": "research-field-data",
        "title": "Research & Field Data",
        "blurb": "The /research surfaces: sourced datasets, essays, claims ledgers.",
        "count": 105
      },
      {
        "id": "studio-media",
        "title": "Studio & Media",
        "blurb": "Studio, Sora, ELI5, Narrator Studio, the house-sound layer.",
        "count": 47
      },
      {
        "id": "tools-boards",
        "title": "Tools & Shared Boards",
        "blurb": "Weather, AQI, /t /w /trip /cd multi-tenant boards, the tools landing.",
        "count": 43
      },
      {
        "id": "workshop-house",
        "title": "Workshop & Smart House",
        "blurb": "The Living Workshop bench twin, MANOR house control.",
        "count": 22
      }
    ],
    "edges": [
      {
        "a": "docs-process",
        "b": "heddle-product",
        "viaTitle": 19,
        "viaSameDay": 8,
        "samples": [
          383,
          384,
          462,
          466,
          470
        ],
        "weight": 65
      },
      {
        "a": "household-ops",
        "b": "tools-boards",
        "viaTitle": 14,
        "viaSameDay": 9,
        "samples": [
          317,
          338,
          468,
          566,
          568
        ],
        "weight": 51
      },
      {
        "a": "comms-messaging",
        "b": "household-ops",
        "viaTitle": 11,
        "viaSameDay": 13,
        "samples": [
          632,
          748,
          758,
          775,
          811
        ],
        "weight": 46
      },
      {
        "a": "household-ops",
        "b": "platform-admin",
        "viaTitle": 8,
        "viaSameDay": 22,
        "samples": [
          1392,
          1545,
          1573,
          1781,
          1859
        ],
        "weight": 46
      },
      {
        "a": "content-editorial",
        "b": "research-field-data",
        "viaTitle": 8,
        "viaSameDay": 21,
        "samples": [
          598,
          600,
          604,
          616,
          619
        ],
        "weight": 45
      },
      {
        "a": "content-editorial",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 45,
        "samples": [],
        "weight": 45
      },
      {
        "a": "general-infra",
        "b": "household-ops",
        "viaTitle": 0,
        "viaSameDay": 45,
        "samples": [],
        "weight": 45
      },
      {
        "a": "content-editorial",
        "b": "platform-admin",
        "viaTitle": 7,
        "viaSameDay": 22,
        "samples": [
          484,
          495,
          1542,
          1545,
          1601
        ],
        "weight": 43
      },
      {
        "a": "content-editorial",
        "b": "household-ops",
        "viaTitle": 5,
        "viaSameDay": 28,
        "samples": [
          1528,
          1545,
          1563,
          1636,
          1945
        ],
        "weight": 43
      },
      {
        "a": "games-interactive",
        "b": "household-ops",
        "viaTitle": 6,
        "viaSameDay": 21,
        "samples": [
          818,
          829,
          1342,
          1366,
          1543
        ],
        "weight": 39
      },
      {
        "a": "games-interactive",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 38,
        "samples": [],
        "weight": 38
      },
      {
        "a": "household-ops",
        "b": "research-field-data",
        "viaTitle": 5,
        "viaSameDay": 21,
        "samples": [
          1038,
          1507,
          1531,
          2206,
          2212
        ],
        "weight": 36
      },
      {
        "a": "devops-quality",
        "b": "platform-admin",
        "viaTitle": 8,
        "viaSameDay": 10,
        "samples": [
          178,
          580,
          582,
          1137,
          1877
        ],
        "weight": 34
      },
      {
        "a": "general-infra",
        "b": "platform-admin",
        "viaTitle": 0,
        "viaSameDay": 34,
        "samples": [],
        "weight": 34
      },
      {
        "a": "devops-quality",
        "b": "games-interactive",
        "viaTitle": 7,
        "viaSameDay": 12,
        "samples": [
          1,
          722,
          725,
          737,
          742
        ],
        "weight": 33
      },
      {
        "a": "comms-messaging",
        "b": "platform-admin",
        "viaTitle": 7,
        "viaSameDay": 10,
        "samples": [
          1031,
          1073,
          1076,
          1488,
          1557
        ],
        "weight": 31
      },
      {
        "a": "devops-quality",
        "b": "heddle-product",
        "viaTitle": 7,
        "viaSameDay": 9,
        "samples": [
          526,
          527,
          1130,
          1137,
          1138
        ],
        "weight": 30
      },
      {
        "a": "civic-public-data",
        "b": "research-field-data",
        "viaTitle": 8,
        "viaSameDay": 6,
        "samples": [
          757,
          1167,
          1171,
          1498,
          2041
        ],
        "weight": 30
      },
      {
        "a": "content-editorial",
        "b": "devops-quality",
        "viaTitle": 5,
        "viaSameDay": 15,
        "samples": [
          1548,
          1716,
          1769,
          1912,
          2065
        ],
        "weight": 30
      },
      {
        "a": "commerce-billing",
        "b": "platform-admin",
        "viaTitle": 6,
        "viaSameDay": 11,
        "samples": [
          217,
          242,
          2285,
          2289,
          2297
        ],
        "weight": 29
      },
      {
        "a": "ai-agent-infra",
        "b": "content-editorial",
        "viaTitle": 6,
        "viaSameDay": 11,
        "samples": [
          1620,
          1635,
          2195,
          2196,
          2197
        ],
        "weight": 29
      },
      {
        "a": "general-infra",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 29,
        "samples": [],
        "weight": 29
      },
      {
        "a": "platform-admin",
        "b": "research-field-data",
        "viaTitle": 5,
        "viaSameDay": 13,
        "samples": [
          1660,
          1826,
          1955,
          2049,
          2370
        ],
        "weight": 28
      },
      {
        "a": "content-editorial",
        "b": "games-interactive",
        "viaTitle": 3,
        "viaSameDay": 17,
        "samples": [
          251,
          591,
          1892
        ],
        "weight": 26
      },
      {
        "a": "devops-quality",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 26,
        "samples": [],
        "weight": 26
      },
      {
        "a": "ai-agent-infra",
        "b": "household-ops",
        "viaTitle": 4,
        "viaSameDay": 13,
        "samples": [
          670,
          1586,
          2034,
          2037
        ],
        "weight": 25
      },
      {
        "a": "auth-identity",
        "b": "platform-admin",
        "viaTitle": 6,
        "viaSameDay": 5,
        "samples": [
          164,
          217,
          430,
          571,
          573
        ],
        "weight": 23
      },
      {
        "a": "comms-messaging",
        "b": "content-editorial",
        "viaTitle": 4,
        "viaSameDay": 11,
        "samples": [
          1066,
          1352,
          1633,
          1912
        ],
        "weight": 23
      },
      {
        "a": "general-infra",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 23,
        "samples": [],
        "weight": 23
      },
      {
        "a": "devops-quality",
        "b": "studio-media",
        "viaTitle": 6,
        "viaSameDay": 4,
        "samples": [
          294,
          1104,
          1152,
          1164,
          1292
        ],
        "weight": 22
      },
      {
        "a": "docs-process",
        "b": "household-ops",
        "viaTitle": 3,
        "viaSameDay": 12,
        "samples": [
          468,
          814,
          946
        ],
        "weight": 21
      },
      {
        "a": "content-editorial",
        "b": "docs-process",
        "viaTitle": 3,
        "viaSameDay": 12,
        "samples": [
          482,
          994,
          1773
        ],
        "weight": 21
      },
      {
        "a": "games-interactive",
        "b": "research-field-data",
        "viaTitle": 3,
        "viaSameDay": 12,
        "samples": [
          597,
          1691,
          2314
        ],
        "weight": 21
      },
      {
        "a": "household-ops",
        "b": "language-learning",
        "viaTitle": 4,
        "viaSameDay": 9,
        "samples": [
          2051,
          2073,
          2141,
          2160
        ],
        "weight": 21
      },
      {
        "a": "auth-identity",
        "b": "household-ops",
        "viaTitle": 5,
        "viaSameDay": 5,
        "samples": [
          317,
          356,
          363,
          364,
          2140
        ],
        "weight": 20
      },
      {
        "a": "content-editorial",
        "b": "tools-boards",
        "viaTitle": 4,
        "viaSameDay": 8,
        "samples": [
          750,
          751,
          762,
          937
        ],
        "weight": 20
      },
      {
        "a": "devops-quality",
        "b": "household-ops",
        "viaTitle": 1,
        "viaSameDay": 17,
        "samples": [
          2225
        ],
        "weight": 20
      },
      {
        "a": "commerce-billing",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 20,
        "samples": [],
        "weight": 20
      },
      {
        "a": "crss-exam-prep",
        "b": "platform-admin",
        "viaTitle": 4,
        "viaSameDay": 7,
        "samples": [
          160,
          178,
          1557,
          2277
        ],
        "weight": 19
      },
      {
        "a": "heddle-product",
        "b": "platform-admin",
        "viaTitle": 3,
        "viaSameDay": 10,
        "samples": [
          430,
          1137,
          1447
        ],
        "weight": 19
      },
      {
        "a": "docs-process",
        "b": "research-field-data",
        "viaTitle": 3,
        "viaSameDay": 10,
        "samples": [
          884,
          1921,
          1994
        ],
        "weight": 19
      },
      {
        "a": "household-ops",
        "b": "studio-media",
        "viaTitle": 4,
        "viaSameDay": 7,
        "samples": [
          939,
          940,
          946,
          947
        ],
        "weight": 19
      },
      {
        "a": "docs-process",
        "b": "platform-admin",
        "viaTitle": 3,
        "viaSameDay": 9,
        "samples": [
          581,
          819,
          858
        ],
        "weight": 18
      },
      {
        "a": "platform-admin",
        "b": "studio-media",
        "viaTitle": 4,
        "viaSameDay": 6,
        "samples": [
          843,
          845,
          852,
          1056
        ],
        "weight": 18
      },
      {
        "a": "heddle-product",
        "b": "household-ops",
        "viaTitle": 2,
        "viaSameDay": 12,
        "samples": [
          1268,
          1497
        ],
        "weight": 18
      },
      {
        "a": "docs-process",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 18,
        "samples": [],
        "weight": 18
      },
      {
        "a": "comms-messaging",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 18,
        "samples": [],
        "weight": 18
      },
      {
        "a": "docs-process",
        "b": "studio-media",
        "viaTitle": 4,
        "viaSameDay": 5,
        "samples": [
          946,
          1104,
          1124,
          1857
        ],
        "weight": 17
      },
      {
        "a": "devops-quality",
        "b": "language-learning",
        "viaTitle": 4,
        "viaSameDay": 5,
        "samples": [
          2056,
          2063,
          2067,
          2398
        ],
        "weight": 17
      },
      {
        "a": "auth-identity",
        "b": "heddle-product",
        "viaTitle": 5,
        "viaSameDay": 1,
        "samples": [
          371,
          430,
          478,
          480,
          1714
        ],
        "weight": 16
      },
      {
        "a": "devops-quality",
        "b": "docs-process",
        "viaTitle": 2,
        "viaSameDay": 10,
        "samples": [
          527,
          1104
        ],
        "weight": 16
      },
      {
        "a": "studio-media",
        "b": "tools-boards",
        "viaTitle": 4,
        "viaSameDay": 4,
        "samples": [
          934,
          937,
          939,
          941
        ],
        "weight": 16
      },
      {
        "a": "crss-exam-prep",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 16,
        "samples": [],
        "weight": 16
      },
      {
        "a": "comms-messaging",
        "b": "docs-process",
        "viaTitle": 2,
        "viaSameDay": 8,
        "samples": [
          620,
          946
        ],
        "weight": 14
      },
      {
        "a": "distribution-growth",
        "b": "studio-media",
        "viaTitle": 4,
        "viaSameDay": 2,
        "samples": [
          653,
          656,
          1759,
          1760
        ],
        "weight": 14
      },
      {
        "a": "comms-messaging",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 11,
        "samples": [
          1038
        ],
        "weight": 14
      },
      {
        "a": "games-interactive",
        "b": "heddle-product",
        "viaTitle": 2,
        "viaSameDay": 8,
        "samples": [
          1143,
          1418
        ],
        "weight": 14
      },
      {
        "a": "content-editorial",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 14,
        "samples": [],
        "weight": 14
      },
      {
        "a": "crss-exam-prep",
        "b": "heddle-product",
        "viaTitle": 3,
        "viaSameDay": 4,
        "samples": [
          281,
          452,
          454
        ],
        "weight": 13
      },
      {
        "a": "ai-agent-infra",
        "b": "heddle-product",
        "viaTitle": 3,
        "viaSameDay": 4,
        "samples": [
          547,
          558,
          842
        ],
        "weight": 13
      },
      {
        "a": "devops-quality",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 10,
        "samples": [
          596
        ],
        "weight": 13
      },
      {
        "a": "commerce-billing",
        "b": "household-ops",
        "viaTitle": 2,
        "viaSameDay": 7,
        "samples": [
          1766,
          1973
        ],
        "weight": 13
      },
      {
        "a": "comms-messaging",
        "b": "devops-quality",
        "viaTitle": 2,
        "viaSameDay": 7,
        "samples": [
          1838,
          1912
        ],
        "weight": 13
      },
      {
        "a": "ai-agent-infra",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 10,
        "samples": [
          2178
        ],
        "weight": 13
      },
      {
        "a": "ai-agent-infra",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 13,
        "samples": [],
        "weight": 13
      },
      {
        "a": "civic-public-data",
        "b": "platform-admin",
        "viaTitle": 3,
        "viaSameDay": 3,
        "samples": [
          782,
          1176,
          2049
        ],
        "weight": 12
      },
      {
        "a": "content-editorial",
        "b": "studio-media",
        "viaTitle": 1,
        "viaSameDay": 9,
        "samples": [
          937
        ],
        "weight": 12
      },
      {
        "a": "ai-agent-infra",
        "b": "comms-messaging",
        "viaTitle": 2,
        "viaSameDay": 6,
        "samples": [
          1264,
          1547
        ],
        "weight": 12
      },
      {
        "a": "ai-agent-infra",
        "b": "devops-quality",
        "viaTitle": 2,
        "viaSameDay": 6,
        "samples": [
          1504,
          2035
        ],
        "weight": 12
      },
      {
        "a": "commerce-billing",
        "b": "devops-quality",
        "viaTitle": 2,
        "viaSameDay": 6,
        "samples": [
          1771,
          2334
        ],
        "weight": 12
      },
      {
        "a": "general-infra",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 12,
        "samples": [],
        "weight": 12
      },
      {
        "a": "general-infra",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 12,
        "samples": [],
        "weight": 12
      },
      {
        "a": "games-interactive",
        "b": "platform-admin",
        "viaTitle": 0,
        "viaSameDay": 12,
        "samples": [],
        "weight": 12
      },
      {
        "a": "games-interactive",
        "b": "studio-media",
        "viaTitle": 2,
        "viaSameDay": 5,
        "samples": [
          833,
          875
        ],
        "weight": 11
      },
      {
        "a": "commerce-billing",
        "b": "content-editorial",
        "viaTitle": 1,
        "viaSameDay": 8,
        "samples": [
          1634
        ],
        "weight": 11
      },
      {
        "a": "language-learning",
        "b": "platform-admin",
        "viaTitle": 2,
        "viaSameDay": 5,
        "samples": [
          2058,
          2398
        ],
        "weight": 11
      },
      {
        "a": "comms-messaging",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 11,
        "samples": [],
        "weight": 11
      },
      {
        "a": "platform-admin",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 7,
        "samples": [
          938
        ],
        "weight": 10
      },
      {
        "a": "comms-messaging",
        "b": "studio-media",
        "viaTitle": 2,
        "viaSameDay": 4,
        "samples": [
          946,
          951
        ],
        "weight": 10
      },
      {
        "a": "civic-public-data",
        "b": "household-ops",
        "viaTitle": 2,
        "viaSameDay": 4,
        "samples": [
          1533,
          1895
        ],
        "weight": 10
      },
      {
        "a": "heddle-product",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 7,
        "samples": [
          1921
        ],
        "weight": 10
      },
      {
        "a": "docs-process",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 10,
        "samples": [],
        "weight": 10
      },
      {
        "a": "general-infra",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 10,
        "samples": [],
        "weight": 10
      },
      {
        "a": "general-infra",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 10,
        "samples": [],
        "weight": 10
      },
      {
        "a": "content-editorial",
        "b": "novels-atelier",
        "viaTitle": 1,
        "viaSameDay": 6,
        "samples": [
          1477
        ],
        "weight": 9
      },
      {
        "a": "games-interactive",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 9,
        "samples": [],
        "weight": 9
      },
      {
        "a": "ai-agent-infra",
        "b": "platform-admin",
        "viaTitle": 0,
        "viaSameDay": 9,
        "samples": [],
        "weight": 9
      },
      {
        "a": "docs-process",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 5,
        "samples": [
          468
        ],
        "weight": 8
      },
      {
        "a": "distribution-growth",
        "b": "platform-admin",
        "viaTitle": 1,
        "viaSameDay": 5,
        "samples": [
          1022
        ],
        "weight": 8
      },
      {
        "a": "research-field-data",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 5,
        "samples": [
          1038
        ],
        "weight": 8
      },
      {
        "a": "commerce-billing",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 8,
        "samples": [],
        "weight": 8
      },
      {
        "a": "auth-identity",
        "b": "games-interactive",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          118
        ],
        "weight": 7
      },
      {
        "a": "crss-exam-prep",
        "b": "devops-quality",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          178
        ],
        "weight": 7
      },
      {
        "a": "commerce-billing",
        "b": "docs-process",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          244
        ],
        "weight": 7
      },
      {
        "a": "auth-identity",
        "b": "docs-process",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          530
        ],
        "weight": 7
      },
      {
        "a": "auth-identity",
        "b": "devops-quality",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          672
        ],
        "weight": 7
      },
      {
        "a": "comms-messaging",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          1038
        ],
        "weight": 7
      },
      {
        "a": "auth-identity",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          1170
        ],
        "weight": 7
      },
      {
        "a": "commerce-billing",
        "b": "research-field-data",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          1634
        ],
        "weight": 7
      },
      {
        "a": "civic-public-data",
        "b": "content-editorial",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          1931
        ],
        "weight": 7
      },
      {
        "a": "ai-agent-infra",
        "b": "novels-atelier",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          1978
        ],
        "weight": 7
      },
      {
        "a": "ai-agent-infra",
        "b": "studio-media",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          2035
        ],
        "weight": 7
      },
      {
        "a": "household-ops",
        "b": "workshop-house",
        "viaTitle": 1,
        "viaSameDay": 4,
        "samples": [
          2135
        ],
        "weight": 7
      },
      {
        "a": "crss-exam-prep",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "general-infra",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "distribution-growth",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "content-editorial",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "commerce-billing",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "novels-atelier",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 7,
        "samples": [],
        "weight": 7
      },
      {
        "a": "civic-public-data",
        "b": "devops-quality",
        "viaTitle": 1,
        "viaSameDay": 3,
        "samples": [
          776
        ],
        "weight": 6
      },
      {
        "a": "comms-messaging",
        "b": "crss-exam-prep",
        "viaTitle": 1,
        "viaSameDay": 3,
        "samples": [
          1557
        ],
        "weight": 6
      },
      {
        "a": "commerce-billing",
        "b": "comms-messaging",
        "viaTitle": 1,
        "viaSameDay": 3,
        "samples": [
          1801
        ],
        "weight": 6
      },
      {
        "a": "games-interactive",
        "b": "workshop-house",
        "viaTitle": 1,
        "viaSameDay": 3,
        "samples": [
          2082
        ],
        "weight": 6
      },
      {
        "a": "auth-identity",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "content-editorial",
        "b": "crss-exam-prep",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "crss-exam-prep",
        "b": "household-ops",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "distribution-growth",
        "b": "household-ops",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "research-field-data",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "language-learning",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 6,
        "samples": [],
        "weight": 6
      },
      {
        "a": "auth-identity",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          317
        ],
        "weight": 5
      },
      {
        "a": "civic-public-data",
        "b": "docs-process",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          773
        ],
        "weight": 5
      },
      {
        "a": "platform-admin",
        "b": "workshop-house",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          1033
        ],
        "weight": 5
      },
      {
        "a": "games-interactive",
        "b": "novels-atelier",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          1648
        ],
        "weight": 5
      },
      {
        "a": "commerce-billing",
        "b": "studio-media",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          1772
        ],
        "weight": 5
      },
      {
        "a": "auth-identity",
        "b": "crss-exam-prep",
        "viaTitle": 1,
        "viaSameDay": 2,
        "samples": [
          2277
        ],
        "weight": 5
      },
      {
        "a": "devops-quality",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 5,
        "samples": [],
        "weight": 5
      },
      {
        "a": "ai-agent-infra",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 5,
        "samples": [],
        "weight": 5
      },
      {
        "a": "civic-public-data",
        "b": "general-infra",
        "viaTitle": 0,
        "viaSameDay": 5,
        "samples": [],
        "weight": 5
      },
      {
        "a": "comms-messaging",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 5,
        "samples": [],
        "weight": 5
      },
      {
        "a": "household-ops",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 5,
        "samples": [],
        "weight": 5
      },
      {
        "a": "auth-identity",
        "b": "studio-media",
        "viaTitle": 1,
        "viaSameDay": 1,
        "samples": [
          827
        ],
        "weight": 4
      },
      {
        "a": "studio-media",
        "b": "workshop-house",
        "viaTitle": 1,
        "viaSameDay": 1,
        "samples": [
          1070
        ],
        "weight": 4
      },
      {
        "a": "novels-atelier",
        "b": "tools-boards",
        "viaTitle": 1,
        "viaSameDay": 1,
        "samples": [
          1650
        ],
        "weight": 4
      },
      {
        "a": "auth-identity",
        "b": "mobile-launcher",
        "viaTitle": 1,
        "viaSameDay": 1,
        "samples": [
          2184
        ],
        "weight": 4
      },
      {
        "a": "household-ops",
        "b": "mobile-launcher",
        "viaTitle": 1,
        "viaSameDay": 1,
        "samples": [
          2191
        ],
        "weight": 4
      },
      {
        "a": "commerce-billing",
        "b": "crss-exam-prep",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "crss-exam-prep",
        "b": "docs-process",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "heddle-product",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "ai-agent-infra",
        "b": "docs-process",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "distribution-growth",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "distribution-growth",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "devops-quality",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "tools-boards",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "content-editorial",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 4,
        "samples": [],
        "weight": 4
      },
      {
        "a": "auth-identity",
        "b": "commerce-billing",
        "viaTitle": 1,
        "viaSameDay": 0,
        "samples": [
          217
        ],
        "weight": 3
      },
      {
        "a": "crss-exam-prep",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "comms-messaging",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "ai-agent-infra",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "auth-identity",
        "b": "content-editorial",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "commerce-billing",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "distribution-growth",
        "b": "docs-process",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "comms-messaging",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "ai-agent-infra",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "content-editorial",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "civic-public-data",
        "b": "comms-messaging",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "civic-public-data",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "devops-quality",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "heddle-product",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "devops-quality",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "ai-agent-infra",
        "b": "civic-public-data",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "novels-atelier",
        "b": "platform-admin",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "language-learning",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 3,
        "samples": [],
        "weight": 3
      },
      {
        "a": "auth-identity",
        "b": "civic-public-data",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "civic-public-data",
        "b": "games-interactive",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "ai-agent-infra",
        "b": "commerce-billing",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "ai-agent-infra",
        "b": "crss-exam-prep",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "auth-identity",
        "b": "comms-messaging",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "distribution-growth",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "ai-agent-infra",
        "b": "auth-identity",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "distribution-growth",
        "b": "heddle-product",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "civic-public-data",
        "b": "crss-exam-prep",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "heddle-product",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "civic-public-data",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "crss-exam-prep",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "commerce-billing",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "docs-process",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "games-interactive",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "language-learning",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "ai-agent-infra",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "commerce-billing",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 2,
        "samples": [],
        "weight": 2
      },
      {
        "a": "crss-exam-prep",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "crss-exam-prep",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "crss-exam-prep",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "auth-identity",
        "b": "distribution-growth",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "research-field-data",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "novels-atelier",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "heddle-product",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "comms-messaging",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "novels-atelier",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "docs-process",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "distribution-growth",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "civic-public-data",
        "b": "studio-media",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "docs-process",
        "b": "workshop-house",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "mobile-launcher",
        "b": "tools-boards",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "general-infra",
        "b": "mobile-launcher",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "docs-process",
        "b": "mobile-launcher",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "ai-agent-infra",
        "b": "mobile-launcher",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "auth-identity",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "language-learning",
        "b": "mobile-launcher",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "mobile-launcher",
        "b": "research-field-data",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "mobile-launcher",
        "b": "platform-admin",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "content-editorial",
        "b": "mobile-launcher",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "language-learning",
        "b": "novels-atelier",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      },
      {
        "a": "comms-messaging",
        "b": "language-learning",
        "viaTitle": 0,
        "viaSameDay": 1,
        "samples": [],
        "weight": 1
      }
    ]
  },
  "arcs": [
    {
      "surface": "graphmy",
      "root": {
        "number": 212,
        "title": "Add GraphMy: PDF-to-knowledge-graph pipeline with web UI",
        "date": "2026-04-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/212",
        "surface": "graphmy",
        "discipline": "commerce-billing",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 212,
          "title": "Add GraphMy: PDF-to-knowledge-graph pipeline with web UI",
          "date": "2026-04-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/212",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "infra"
        },
        {
          "number": 215,
          "title": "Fix import paths in GraphMy API routes",
          "date": "2026-04-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/215",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 237,
          "title": "Fix GraphMy upload failing with \"Internal server error\" on Vercel",
          "date": "2026-04-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/237",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 239,
          "title": "fix(graphmy): restore pdf-parse in production",
          "date": "2026-04-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/239",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 241,
          "title": "fix(graphmy): polyfill DOMMatrix/Path2D/ImageData for pdf-parse on Vercel",
          "date": "2026-04-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/241",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 243,
          "title": "fix(graphmy): pre-supply pdfjs-dist worker so Vercel uploads succeed",
          "date": "2026-04-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/243",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 245,
          "title": "fix(graphmy): unstick d3 loader and fix mobile layout",
          "date": "2026-04-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/245",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 246,
          "title": "fix(graphmy): per-stage pipeline runner, sidebar tabs, and mobile viz polish",
          "date": "2026-04-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/246",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 255,
          "title": "Fix GraphMy entity extraction and Supabase flush errors",
          "date": "2026-04-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/255",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 256,
          "title": "Fix GraphMy extraction timeout on Vercel Hobby plan",
          "date": "2026-04-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/256",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 3
    },
    {
      "surface": "heddle",
      "root": {
        "number": 480,
        "title": "heddle: tighten DemoForm + login validation UX (#475)",
        "date": "2026-05-20",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/480",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 480,
          "title": "heddle: tighten DemoForm + login validation UX (#475)",
          "date": "2026-05-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/480",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 505,
          "title": "docs(heddle): close 4 shipped-mitigation risks in the register",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/505",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        },
        {
          "number": 507,
          "title": "docs(heddle): add canonical master PRD (current + future state)",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/507",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        },
        {
          "number": 508,
          "title": "docs(heddle): place UX epic + agent spec, wire PRD refs, mirror epic into LAUNCH-PLAN",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/508",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        },
        {
          "number": 526,
          "title": "test(heddle): fix milestone-count assertion broken by UX epic mirror",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/526",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "bugfix"
        },
        {
          "number": 527,
          "title": "build(heddle): run parse-docs test in pre-commit on heddle doc edits",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/527",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 4
    },
    {
      "surface": "josephine",
      "root": {
        "number": 579,
        "title": "Add reviewer onboarding email for Josephine collections",
        "date": "2026-05-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/579",
        "surface": "josephine",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 579,
          "title": "Add reviewer onboarding email for Josephine collections",
          "date": "2026-05-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/579",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 580,
          "title": "Josephine TX: polish pass — readable dates, shared court theme, data-layer tests",
          "date": "2026-05-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/580",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "test"
        },
        {
          "number": 581,
          "title": "Josephine TX docs: PDF download, download-all, and an in-app reader",
          "date": "2026-05-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/581",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "docs"
        },
        {
          "number": 582,
          "title": "Fix josephine --test send when AUTH_ADMIN_EMAILS is unset",
          "date": "2026-05-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/582",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        },
        {
          "number": 583,
          "title": "Fix Josephine doc viewer 500: externalize pdfkit + jsdom",
          "date": "2026-05-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/583",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        },
        {
          "number": 585,
          "title": "Fix persistent Josephine doc 500s: lazy PDF stack + drop jsdom",
          "date": "2026-05-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/585",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "games",
      "root": {
        "number": 106,
        "title": "Add Teach Me Mahjong game",
        "date": "2026-03-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/106",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 106,
          "title": "Add Teach Me Mahjong game",
          "date": "2026-03-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/106",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 112,
          "title": "Fix math games links: move routes under /games/ prefix",
          "date": "2026-03-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/112",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        },
        {
          "number": 113,
          "title": "Fix math games crash: add missing stub functions to useGamification",
          "date": "2026-03-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/113",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        },
        {
          "number": 115,
          "title": "Fix math games crash: remove dead gamification tracking from GamePageLayout",
          "date": "2026-03-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/115",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        },
        {
          "number": 116,
          "title": "Fix math games crash: replace Proxy stub with plain object",
          "date": "2026-03-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/116",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "concierge",
      "root": {
        "number": 657,
        "title": "Phase 1a: funnel homepage feed + concierge search into /utilities",
        "date": "2026-06-03",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/657",
        "surface": "concierge",
        "discipline": "ai-agent-infra",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 657,
          "title": "Phase 1a: funnel homepage feed + concierge search into /utilities",
          "date": "2026-06-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/657",
          "surface": "concierge",
          "discipline": "ai-agent-infra",
          "changeType": "feature"
        },
        {
          "number": 1008,
          "title": "Wire the last two roadmap runners — links.broken-audit + concierge.smoke",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1008",
          "surface": "concierge",
          "discipline": "ai-agent-infra",
          "changeType": "bugfix"
        },
        {
          "number": 1264,
          "title": "Inbox: fix concierge pill obstructing mobile action buttons",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1264",
          "surface": "concierge",
          "discipline": "ai-agent-infra",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 12
    },
    {
      "surface": "todos",
      "root": {
        "number": 1790,
        "title": "lib/gcal: share the Calendar REST client across /calendar + /todos",
        "date": "2026-07-01",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1790",
        "surface": "todos",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1790,
          "title": "lib/gcal: share the Calendar REST client across /calendar + /todos",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1790",
          "surface": "todos",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 1895,
          "title": "burn-read follow-ups: harden the supabase noop stub, diagnose the todos 500, fix grove-tick",
          "date": "2026-07-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1895",
          "surface": "todos",
          "discipline": "household-ops",
          "changeType": "bugfix"
        },
        {
          "number": 1985,
          "title": "todos: fix the listTodos 500 that broke the 8am/8:30am reminder crons",
          "date": "2026-07-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1985",
          "surface": "todos",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 10
    },
    {
      "surface": "blog",
      "root": {
        "number": 2198,
        "title": "blog-media: 9:16 narrated social cut of the model-council reel",
        "date": "2026-07-21",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2198",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2198,
          "title": "blog-media: 9:16 narrated social cut of the model-council reel",
          "date": "2026-07-21",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2198",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 2261,
          "title": "Bump internal/external link density and fix private-repo CTAs across research + blog surfaces",
          "date": "2026-07-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2261",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        },
        {
          "number": 2264,
          "title": "Fix private-repo 404 links in two more blog posts (+ regression guard)",
          "date": "2026-07-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2264",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 7
    },
    {
      "surface": "ci",
      "root": {
        "number": 1292,
        "title": "studio: CI workflow to film the #867 semaphores film as a draft",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1292",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 1292,
          "title": "studio: CI workflow to film the #867 semaphores film as a draft",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1292",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 1438,
          "title": "Agentic Workflow Design page: discoverability, FAQ + structured data, guard test",
          "date": "2026-06-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1438",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "test"
        },
        {
          "number": 1450,
          "title": "Fix Unratified narration workflow: rebase-and-retry the push",
          "date": "2026-06-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1450",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 5
    },
    {
      "surface": "games",
      "root": {
        "number": 45,
        "title": "Add interactive spa menu game to /games page",
        "date": "2026-02-22",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/45",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 45,
          "title": "Add interactive spa menu game to /games page",
          "date": "2026-02-22",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/45",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 49,
          "title": "Fix essay game loading and localStorage toast dismissal",
          "date": "2026-02-26",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/49",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        },
        {
          "number": 50,
          "title": "Fix game iframes not loading and restore reading position toast",
          "date": "2026-02-26",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/50",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 4
    },
    {
      "surface": "auth",
      "root": {
        "number": 827,
        "title": "Add /studio — a cinematic public video reel + a headless recording pipeline (with auth-gated capture)",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/827",
        "surface": "auth",
        "discipline": "auth-identity",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 827,
          "title": "Add /studio — a cinematic public video reel + a headless recording pipeline (with auth-gated capture)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/827",
          "surface": "auth",
          "discipline": "auth-identity",
          "changeType": "infra"
        },
        {
          "number": 1011,
          "title": "fix(auth): stop edge middleware from 500ing the whole site (MIDDLEWARE_INVOCATION_FAILED)",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1011",
          "surface": "auth",
          "discipline": "auth-identity",
          "changeType": "bugfix"
        },
        {
          "number": 1012,
          "title": "fix(auth): make edge middleware init-safe (site-wide 500 follow-up)",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1012",
          "surface": "auth",
          "discipline": "auth-identity",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 3
    },
    {
      "surface": "admin",
      "root": {
        "number": 139,
        "title": "Add admin authentication system for item bank management",
        "date": "2026-03-31",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/139",
        "surface": "admin",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 139,
          "title": "Add admin authentication system for item bank management",
          "date": "2026-03-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/139",
          "surface": "admin",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 141,
          "title": "Fix admin save: use GitHub Contents API instead of fs.writeFileSync",
          "date": "2026-03-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/141",
          "surface": "admin",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        },
        {
          "number": 164,
          "title": "Refactor admin UI styles and improve auth feedback",
          "date": "2026-04-02",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/164",
          "surface": "admin",
          "discipline": "platform-admin",
          "changeType": "refactor"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "heddle",
      "root": {
        "number": 371,
        "title": "heddle: self-serve sign-up + login at /heddle/login",
        "date": "2026-05-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/371",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 371,
          "title": "heddle: self-serve sign-up + login at /heddle/login",
          "date": "2026-05-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/371",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 383,
          "title": "heddle: add launch framework docs",
          "date": "2026-05-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/383",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        },
        {
          "number": 384,
          "title": "heddle: mirror docs to GitHub Issues with drift-check guardrails",
          "date": "2026-05-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/384",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "mail",
      "root": {
        "number": 624,
        "title": "feat(mail): finish Phase 1 — review UI, split/merge, due-soon lens + digest, per-group .ics",
        "date": "2026-05-31",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/624",
        "surface": "mail",
        "discipline": "comms-messaging",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 624,
          "title": "feat(mail): finish Phase 1 — review UI, split/merge, due-soon lens + digest, per-group .ics",
          "date": "2026-05-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/624",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "feature"
        },
        {
          "number": 626,
          "title": "fix(mail): resize + chunk uploads to beat the 413 body-size limit",
          "date": "2026-05-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/626",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        },
        {
          "number": 627,
          "title": "fix(mail): feed card title + timezone-safe date-only deadlines",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/627",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "secrets",
      "root": {
        "number": 938,
        "title": "Register R2 + weather video-provider secrets in the internal secrets store",
        "date": "2026-06-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/938",
        "surface": "secrets",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 938,
          "title": "Register R2 + weather video-provider secrets in the internal secrets store",
          "date": "2026-06-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/938",
          "surface": "secrets",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 1005,
          "title": "fix(secrets): add completion path for env tasks on Setup page",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1005",
          "surface": "secrets",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        },
        {
          "number": 1013,
          "title": "fix(secrets): mobile-friendly /launch/secrets",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1013",
          "surface": "secrets",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "lightning",
      "root": {
        "number": 2167,
        "title": "lightning: no device-voice audio + a conversational Coach front door",
        "date": "2026-07-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2167",
        "surface": "lightning",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2167,
          "title": "lightning: no device-voice audio + a conversational Coach front door",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2167",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2176,
          "title": "lightning: make Iskra the voice-persona home + fix the mobile talk path",
          "date": "2026-07-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2176",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "bugfix"
        },
        {
          "number": 2180,
          "title": "fix(deploy): exclude on-device ML runtime from /lightning traces (250 MB function limit)",
          "date": "2026-07-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2180",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "blog",
      "root": {
        "number": 2407,
        "title": "Blog cover: film the leaking feature, not a title card",
        "date": "2026-09-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2407",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2407,
          "title": "Blog cover: film the leaking feature, not a title card",
          "date": "2026-09-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2407",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 2414,
          "title": "Blog: fix the broken hero and the day-early date on the erratum post",
          "date": "2026-09-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2414",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        },
        {
          "number": 2415,
          "title": "Blog dates: fix the four early-morning stamps, and drop the guard's allowlist",
          "date": "2026-09-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2415",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "mail",
      "root": {
        "number": 633,
        "title": "feat(mail): Phase 3 — Google Drive archival of scans",
        "date": "2026-06-01",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/633",
        "surface": "mail",
        "discipline": "comms-messaging",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 633,
          "title": "feat(mail): Phase 3 — Google Drive archival of scans",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/633",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "feature"
        },
        {
          "number": 634,
          "title": "refactor(mail): polish pass — correctness, consistency, UX, a11y",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/634",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "refactor"
        },
        {
          "number": 635,
          "title": "fix(mail): split re-parses all pages, not just the cover",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/635",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "identities",
      "root": {
        "number": 856,
        "title": "IAM P5: per-agent browser sessions (reach gated surfaces as the agent)",
        "date": "2026-06-09",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/856",
        "surface": "identities",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 856,
          "title": "IAM P5: per-agent browser sessions (reach gated surfaces as the agent)",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/856",
          "surface": "identities",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 857,
          "title": "Polish /org surface: active-tab scroll + IAM row overflow fix",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/857",
          "surface": "identities",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        },
        {
          "number": 858,
          "title": "docs: IAM / Identities section in CLAUDE.md",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/858",
          "surface": "identities",
          "discipline": "platform-admin",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "blog",
      "root": {
        "number": 950,
        "title": "Blog: build log — taming concurrent Claude Code sessions",
        "date": "2026-06-11",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/950",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 950,
          "title": "Blog: build log — taming concurrent Claude Code sessions",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/950",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 994,
          "title": "docs: IA doctrine (docs/IA.md) + \"A Site Three Eras Old\" blog meta-prompt",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/994",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "docs"
        },
        {
          "number": 1010,
          "title": "Fix seed-content failure: 7 blog assets missing from manifest + integrity gate",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1010",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "dpf",
      "root": {
        "number": 2384,
        "title": "DPF: nine of Greg's answers, one narrowed rule, and the ad plan",
        "date": "2026-09-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2384",
        "surface": "dpf",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2384,
          "title": "DPF: nine of Greg's answers, one narrowed rule, and the ad plan",
          "date": "2026-09-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2384",
          "surface": "dpf",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 2389,
          "title": "DPF: fix the D1 switch-on procedure, then use it to actually bind D1",
          "date": "2026-09-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2389",
          "surface": "dpf",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        },
        {
          "number": 2394,
          "title": "DPF: bind R2, and fix the two bugs that running it for the first time exposed",
          "date": "2026-09-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2394",
          "surface": "dpf",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "identities",
      "root": {
        "number": 1022,
        "title": "Portal: hyper-polished Profiles status board for the 3 LinkedIn identities",
        "date": "2026-06-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1022",
        "surface": "identities",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1022,
          "title": "Portal: hyper-polished Profiles status board for the 3 LinkedIn identities",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1022",
          "surface": "identities",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 2017,
          "title": "Mint the K=3 test identities for the Study #1 prospective window",
          "date": "2026-07-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2017",
          "surface": "identities",
          "discipline": "platform-admin",
          "changeType": "test"
        }
      ],
      "settleDays": 30
    },
    {
      "surface": "trip",
      "root": {
        "number": 1273,
        "title": "Publishable boards for /t, /trip, and /cd (the rest of the add-on family)",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1273",
        "surface": "trip",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1273,
          "title": "Publishable boards for /t, /trip, and /cd (the rest of the add-on family)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1273",
          "surface": "trip",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 1774,
          "title": "refactor(tenancy): migrate /t /w /trip /cd onto makeTenancy (is_public + shared accessors)",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1774",
          "surface": "trip",
          "discipline": "tools-boards",
          "changeType": "refactor"
        }
      ],
      "settleDays": 16
    },
    {
      "surface": "ci",
      "root": {
        "number": 1861,
        "title": "Weekly backup verification workflow + disaster-recovery runbook",
        "date": "2026-07-04",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1861",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 1861,
          "title": "Weekly backup verification workflow + disaster-recovery runbook",
          "date": "2026-07-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1861",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 2103,
          "title": "Fix seed:edges so the \"Seed Supabase content\" workflow stops failing (#2016)",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2103",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 14
    },
    {
      "surface": "lcl",
      "root": {
        "number": 1310,
        "title": "LCL: restore-from-pages — segment page OCR into per-selection full_text",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1310",
        "surface": "lcl",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1310,
          "title": "LCL: restore-from-pages — segment page OCR into per-selection full_text",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1310",
          "surface": "lcl",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 1683,
          "title": "Open issues cleanup: close done items, add LCL interactive essays",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1683",
          "surface": "lcl",
          "discipline": "research-field-data",
          "changeType": "refactor"
        }
      ],
      "settleDays": 13
    },
    {
      "surface": "benchmarks",
      "root": {
        "number": 1661,
        "title": "Benchmarks: re-aim the surface at curious newcomers",
        "date": "2026-06-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1661",
        "surface": "benchmarks",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1661,
          "title": "Benchmarks: re-aim the surface at curious newcomers",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1661",
          "surface": "benchmarks",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 1925,
          "title": "benchmarks: flip /benchmarks to real data (one real bench-run) + fix the run path",
          "date": "2026-07-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1925",
          "surface": "benchmarks",
          "discipline": "research-field-data",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 11
    },
    {
      "surface": "legibility-machine",
      "root": {
        "number": 1955,
        "title": "Add /admin/legibility-machine: the DUA human-gate console",
        "date": "2026-07-11",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1955",
        "surface": "legibility-machine",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1955,
          "title": "Add /admin/legibility-machine: the DUA human-gate console",
          "date": "2026-07-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1955",
          "surface": "legibility-machine",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 2187,
          "title": "legibility-machine: fix regime_change_template false-positive freeze (#2059)",
          "date": "2026-07-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2187",
          "surface": "legibility-machine",
          "discipline": "research-field-data",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 9
    },
    {
      "surface": "spend",
      "root": {
        "number": 2055,
        "title": "ops: enforce the AI-spend brake by default + meter the agentic CI path",
        "date": "2026-07-14",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2055",
        "surface": "spend",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2055,
          "title": "ops: enforce the AI-spend brake by default + meter the agentic CI path",
          "date": "2026-07-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2055",
          "surface": "spend",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 2225,
          "title": "Fix CI AI-spend telemetry (migration 0012) and pin the QA workflow's Claude CLI",
          "date": "2026-07-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2225",
          "surface": "spend",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 9
    },
    {
      "surface": "search",
      "root": {
        "number": 567,
        "title": "Hide site Ask/Search pill on app routes with their own bottom UI",
        "date": "2026-05-26",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/567",
        "surface": "search",
        "discipline": "ai-agent-infra",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 567,
          "title": "Hide site Ask/Search pill on app routes with their own bottom UI",
          "date": "2026-05-26",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/567",
          "surface": "search",
          "discipline": "ai-agent-infra",
          "changeType": "feature"
        },
        {
          "number": 666,
          "title": "Fix Ask/Search pill collision on /utilities + add global footer",
          "date": "2026-06-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/666",
          "surface": "search",
          "discipline": "ai-agent-infra",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 8
    },
    {
      "surface": "money",
      "root": {
        "number": 1366,
        "title": "THE PULL: add the receipt — a lifetime odds mirror",
        "date": "2026-06-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1366",
        "surface": "money",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1366,
          "title": "THE PULL: add the receipt — a lifetime odds mirror",
          "date": "2026-06-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1366",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 1561,
          "title": "Refresh /today: fix dark mode, add Dailies ledger + 30-day Review",
          "date": "2026-06-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1561",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 6
    },
    {
      "surface": "crss",
      "root": {
        "number": 1557,
        "title": "Build the 3 remaining Telegram bot features (upcycle / note-to-self / CRSS flashcard)",
        "date": "2026-06-23",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1557",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1557,
          "title": "Build the 3 remaining Telegram bot features (upcycle / note-to-self / CRSS flashcard)",
          "date": "2026-06-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1557",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 1667,
          "title": "feat(bar-exam): Phase-0 content doc + sample MBE bank (study loop live)",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1667",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "docs"
        }
      ],
      "settleDays": 5
    },
    {
      "surface": "ci",
      "root": {
        "number": 2213,
        "title": "ci: path-gate the two extra PR builds + warm prod-parity cache",
        "date": "2026-07-22",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2213",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 2213,
          "title": "ci: path-gate the two extra PR builds + warm prod-parity cache",
          "date": "2026-07-22",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2213",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 2255,
          "title": "ci: fix the prod-parity OOM by serializing static generation under CI",
          "date": "2026-07-27",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2255",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 5
    },
    {
      "surface": "ci",
      "root": {
        "number": 294,
        "title": "Switch /sora to repo-backed workflow (manifest + public/sora/videos)",
        "date": "2026-04-21",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/294",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 294,
          "title": "Switch /sora to repo-backed workflow (manifest + public/sora/videos)",
          "date": "2026-04-21",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/294",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 311,
          "title": "Add CI workflow with lint, test, and build gates",
          "date": "2026-04-24",
          "author": "Copilot",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/311",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "test"
        }
      ],
      "settleDays": 3
    },
    {
      "surface": "podcast",
      "root": {
        "number": 1679,
        "title": "Close 11 completed issues + wire /radio cross-link for podcast",
        "date": "2026-06-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1679",
        "surface": "podcast",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1679,
          "title": "Close 11 completed issues + wire /radio cross-link for podcast",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1679",
          "surface": "podcast",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 1773,
          "title": "docs(design): brainstorm a critical-analysis podcast — The Legibility Desk",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1773",
          "surface": "podcast",
          "discipline": "content-editorial",
          "changeType": "docs"
        }
      ],
      "settleDays": 3
    },
    {
      "surface": "analytics",
      "root": {
        "number": 217,
        "title": "Add workspaces, sharing, auth, and analytics to GraphMy",
        "date": "2026-04-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/217",
        "surface": "analytics",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 217,
          "title": "Add workspaces, sharing, auth, and analytics to GraphMy",
          "date": "2026-04-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/217",
          "surface": "analytics",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 242,
          "title": "fix(graphmy): use fileURLToPath in lib store/analytics for webpack ESM",
          "date": "2026-04-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/242",
          "surface": "analytics",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "ci",
      "root": {
        "number": 331,
        "title": "claude: adopt .claude/ workflow (agents, commands, skills, rules)",
        "date": "2026-05-01",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/331",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 331,
          "title": "claude: adopt .claude/ workflow (agents, commands, skills, rules)",
          "date": "2026-05-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/331",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 333,
          "title": "claude: correct factual errors in .claude/ workflow (PR #331 follow-up)",
          "date": "2026-05-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/333",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "mail",
      "root": {
        "number": 644,
        "title": "feat(mail): bill intelligence — priority, anomaly, autopay, mute-a-vendor",
        "date": "2026-06-02",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/644",
        "surface": "mail",
        "discipline": "comms-messaging",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 644,
          "title": "feat(mail): bill intelligence — priority, anomaly, autopay, mute-a-vendor",
          "date": "2026-06-02",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/644",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "feature"
        },
        {
          "number": 686,
          "title": "fix(mail): give iPhone capture three clear paths — camera, photos, files",
          "date": "2026-06-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/686",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "money",
      "root": {
        "number": 899,
        "title": "Codebase review: timing-safe bearer gates, shared factories, migrations ledger",
        "date": "2026-06-09",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/899",
        "surface": "money",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 899,
          "title": "Codebase review: timing-safe bearer gates, shared factories, migrations ledger",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/899",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 946,
          "title": "docs: meta-prompt / playbook for the studio-fixtures pattern (→ /money, /mail)",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/946",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "docs"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "weather",
      "root": {
        "number": 943,
        "title": "Agents Store: Weather Sky operator — steward of the video-sky line",
        "date": "2026-06-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/943",
        "surface": "weather",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 943,
          "title": "Agents Store: Weather Sky operator — steward of the video-sky line",
          "date": "2026-06-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/943",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 1017,
          "title": "fix: agent-found issues — security headers + /work,/weather SEO",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1017",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "games",
      "root": {
        "number": 1691,
        "title": "feat(lcl): add Who Wrote This? game + weekly selection spot (#1210, #1213)",
        "date": "2026-06-29",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1691",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1691,
          "title": "feat(lcl): add Who Wrote This? game + weekly selection spot (#1210, #1213)",
          "date": "2026-06-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1691",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 1776,
          "title": "refactor(games): collapse the 8 uniform math-game shells into one /games/[game] route",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1776",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "refactor"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "blog",
      "root": {
        "number": 1716,
        "title": "feat(blog): Workflow Designer build tour post + reel script",
        "date": "2026-06-29",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1716",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 1716,
          "title": "feat(blog): Workflow Designer build tour post + reel script",
          "date": "2026-06-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1716",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "infra"
        },
        {
          "number": 1769,
          "title": "Fix broken video on \"The Workflow Designer is running\" blog post",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1769",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 2
    },
    {
      "surface": "novels",
      "root": {
        "number": 10,
        "title": "Add Chapters 2 and 3 to Weight of Salt interactive book",
        "date": "2026-02-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/10",
        "surface": "novels",
        "discipline": "novels-atelier",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 10,
          "title": "Add Chapters 2 and 3 to Weight of Salt interactive book",
          "date": "2026-02-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/10",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "feature"
        },
        {
          "number": 14,
          "title": "Reorganize novel project structure and add new projects",
          "date": "2026-02-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/14",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "refactor"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "novels",
      "root": {
        "number": 15,
        "title": "Add chapters 4-6 content to Weight of Salt book demo",
        "date": "2026-02-13",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/15",
        "surface": "novels",
        "discipline": "novels-atelier",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 15,
          "title": "Add chapters 4-6 content to Weight of Salt book demo",
          "date": "2026-02-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/15",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "feature"
        },
        {
          "number": 17,
          "title": "Reorganize Gina-Jake novel files with pipeline naming convention",
          "date": "2026-02-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/17",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "refactor"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "games",
      "root": {
        "number": 76,
        "title": "Make Progress (GamificationWidget) button draggable",
        "date": "2026-03-09",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/76",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 76,
          "title": "Make Progress (GamificationWidget) button draggable",
          "date": "2026-03-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/76",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 79,
          "title": "Hide bug report and gamification buttons on /rapid-il page",
          "date": "2026-03-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/79",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "heddle",
      "root": {
        "number": 529,
        "title": "Recoverable error states across Heddle (UX-002)",
        "date": "2026-05-24",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/529",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 529,
          "title": "Recoverable error states across Heddle (UX-002)",
          "date": "2026-05-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/529",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 532,
          "title": "docs(heddle): close M1-UX-02 via issue sync (UX-002)",
          "date": "2026-05-25",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/532",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "recurrence",
      "root": {
        "number": 694,
        "title": "Add RECURRENCE — a 2.5D Three.js tower defense game",
        "date": "2026-06-05",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/694",
        "surface": "recurrence",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 694,
          "title": "Add RECURRENCE — a 2.5D Three.js tower defense game",
          "date": "2026-06-05",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/694",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 701,
          "title": "Fix RECURRENCE 3D: enemies and projectiles were invisible (frustum culling)",
          "date": "2026-06-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/701",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "ci",
      "root": {
        "number": 815,
        "title": "Fold meetings-transcripts into the registered drain workflow",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/815",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 815,
          "title": "Fold meetings-transcripts into the registered drain workflow",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/815",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 898,
          "title": "Speed up CI: node-default vitest env + Next.js/Playwright caches",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/898",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "test"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "admin",
      "root": {
        "number": 1076,
        "title": "Telegram Stage 2: per-bot webhook door + trust gate + admin bot switcher",
        "date": "2026-06-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1076",
        "surface": "admin",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1076,
          "title": "Telegram Stage 2: per-bot webhook door + trust gate + admin bot switcher",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1076",
          "surface": "admin",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 1092,
          "title": "fix(portals): git-backed admin chat — re-seed can't clobber live edits",
          "date": "2026-06-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1092",
          "surface": "admin",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "apply",
      "root": {
        "number": 1309,
        "title": "/apply v3: fit & gap analysis, interview prep, tracker CRM",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1309",
        "surface": "apply",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1309,
          "title": "/apply v3: fit & gap analysis, interview prep, tracker CRM",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1309",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 1313,
          "title": "/apply v4: import a job posting from a URL (guarded fetch + extract)",
          "date": "2026-06-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1313",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "refactor"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1465,
        "title": "Engagements: schedule the three delivery drivers on a daily cron",
        "date": "2026-06-20",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1465",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1465,
          "title": "Engagements: schedule the three delivery drivers on a daily cron",
          "date": "2026-06-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1465",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1472,
          "title": "Engagements: fix wf:nudge default stale window (was 0 days, not 3)",
          "date": "2026-06-21",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1472",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1682,
        "title": "WFS P4: NL draft, templates, import/export, run permalinks, cost preview",
        "date": "2026-06-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1682",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1682,
          "title": "WFS P4: NL draft, templates, import/export, run permalinks, cost preview",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1682",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1704,
          "title": "docs(heddle): close 7 milestone issues + reconcile 4 already-closed ones",
          "date": "2026-06-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1704",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1920,
        "title": "wfs(enrichment): make enrichment.pipeline an honest parity proof (re: #1788)",
        "date": "2026-07-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1920",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 1920,
          "title": "wfs(enrichment): make enrichment.pipeline an honest parity proof (re: #1788)",
          "date": "2026-07-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1920",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "infra"
        },
        {
          "number": 1921,
          "title": "docs: shelve the Heddle launch push + shutter the /lcl roadmap",
          "date": "2026-07-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1921",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "platform",
      "root": {
        "number": 1981,
        "title": "Credential supervisor v3: autonomous mint-on-unset for platform secrets",
        "date": "2026-07-11",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1981",
        "surface": "platform",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1981,
          "title": "Credential supervisor v3: autonomous mint-on-unset for platform secrets",
          "date": "2026-07-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1981",
          "surface": "platform",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 2018,
          "title": "Add /platform/secrets slots for the three LM test-identity nsecs",
          "date": "2026-07-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2018",
          "surface": "platform",
          "discipline": "platform-admin",
          "changeType": "test"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "sagen",
      "root": {
        "number": 2038,
        "title": "SAGEN: v9 reconciliation + v10 reviewer-response reframe (+ persistence ablation)",
        "date": "2026-07-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2038",
        "surface": "sagen",
        "discipline": "ai-agent-infra",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2038,
          "title": "SAGEN: v9 reconciliation + v10 reviewer-response reframe (+ persistence ablation)",
          "date": "2026-07-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2038",
          "surface": "sagen",
          "discipline": "ai-agent-infra",
          "changeType": "feature"
        },
        {
          "number": 2048,
          "title": "SAGEN: ship persistence ablation in the public bundle + fix paper release URLs",
          "date": "2026-07-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2048",
          "surface": "sagen",
          "discipline": "ai-agent-infra",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "gauntlet",
      "root": {
        "number": 2101,
        "title": "Add /gauntlet: public cognitive-challenge app with optional sign-in and saved runs",
        "date": "2026-07-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2101",
        "surface": "gauntlet",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2101,
          "title": "Add /gauntlet: public cognitive-challenge app with optional sign-in and saved runs",
          "date": "2026-07-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2101",
          "surface": "gauntlet",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 2104,
          "title": "Gauntlet second pass: fix unreadable questions, add INTEL hints, fold in /noah, harder tier + progression",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2104",
          "surface": "gauntlet",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "workshop",
      "root": {
        "number": 2132,
        "title": "Bench Twin P4: recipes, the wishlist unlock graph, capacity from verified builds",
        "date": "2026-07-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2132",
        "surface": "workshop",
        "discipline": "workshop-house",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2132,
          "title": "Bench Twin P4: recipes, the wishlist unlock graph, capacity from verified builds",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2132",
          "surface": "workshop",
          "discipline": "workshop-house",
          "changeType": "feature"
        },
        {
          "number": 2139,
          "title": "Bench Twin cleanup: anon demo twin, real-story landing, v2 engines retired",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2139",
          "surface": "workshop",
          "discipline": "workshop-house",
          "changeType": "refactor"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "gauntlet",
      "root": {
        "number": 2133,
        "title": "Gauntlet live v4: the couch plays along, with a live leaderboard",
        "date": "2026-07-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2133",
        "surface": "gauntlet",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2133,
          "title": "Gauntlet live v4: the couch plays along, with a live leaderboard",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2133",
          "surface": "gauntlet",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 2138,
          "title": "Gauntlet live v5: watchable specials, mobile tap fix, guaranteed bet window",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2138",
          "surface": "gauntlet",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "police-shootings",
      "root": {
        "number": 2214,
        "title": "Make the Counting the Killings series link-heavy, inside and out",
        "date": "2026-07-22",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2214",
        "surface": "police-shootings",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2214,
          "title": "Make the Counting the Killings series link-heavy, inside and out",
          "date": "2026-07-22",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2214",
          "surface": "police-shootings",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 2228,
          "title": "Final series review: accuracy and staleness fixes across Counting the Killings",
          "date": "2026-07-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2228",
          "surface": "police-shootings",
          "discipline": "research-field-data",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "heddle",
      "root": {
        "number": 2305,
        "title": "Heddle: surface the practice final, reconcile all 16 weeks to the item bank",
        "date": "2026-08-30",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2305",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2305,
          "title": "Heddle: surface the practice final, reconcile all 16 weeks to the item bank",
          "date": "2026-08-30",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2305",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 2306,
          "title": "Heddle: review a week by question, and fix the question itself",
          "date": "2026-08-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2306",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "ukrainian-frequency",
      "root": {
        "number": 2379,
        "title": "Ukrainian frequency: the deposit gap the multiword table left, and the nlp_uk re-lemmatization",
        "date": "2026-09-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2379",
        "surface": "ukrainian-frequency",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2379,
          "title": "Ukrainian frequency: the deposit gap the multiword table left, and the nlp_uk re-lemmatization",
          "date": "2026-09-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2379",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2398,
          "title": "Lemmatizer doc: the setup step named a secret the workflow never reads",
          "date": "2026-09-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2398",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "docs"
        }
      ],
      "settleDays": 1
    },
    {
      "surface": "games",
      "root": {
        "number": 5,
        "title": "Update branding and tech stack references across games",
        "date": "2026-02-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/5",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 5,
          "title": "Update branding and tech stack references across games",
          "date": "2026-02-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/5",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 7,
          "title": "Polish Dice or Die: rework audio and fix UI rough edges",
          "date": "2026-02-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/7",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "novels",
      "root": {
        "number": 30,
        "title": "Add full novel reader with chapter navigation and progress tracking",
        "date": "2026-02-16",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/30",
        "surface": "novels",
        "discipline": "novels-atelier",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 30,
          "title": "Add full novel reader with chapter navigation and progress tracking",
          "date": "2026-02-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/30",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "feature"
        },
        {
          "number": 31,
          "title": "Support multiple status pills and refactor novel CTAs",
          "date": "2026-02-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/31",
          "surface": "novels",
          "discipline": "novels-atelier",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "games",
      "root": {
        "number": 39,
        "title": "Add comprehensive gamification system with achievements and XP tracking",
        "date": "2026-02-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/39",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 39,
          "title": "Add comprehensive gamification system with achievements and XP tracking",
          "date": "2026-02-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/39",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 40,
          "title": "Refactor: Centralize GamificationWidget in provider",
          "date": "2026-02-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/40",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "essays",
      "root": {
        "number": 47,
        "title": "Add essay banner and homepage listing for The Invisible Architecture",
        "date": "2026-02-26",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/47",
        "surface": "essays",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 47,
          "title": "Add essay banner and homepage listing for The Invisible Architecture",
          "date": "2026-02-26",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/47",
          "surface": "essays",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 48,
          "title": "Fix essay 404: serve The Invisible Architecture from public directory",
          "date": "2026-02-26",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/48",
          "surface": "essays",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "essays",
      "root": {
        "number": 65,
        "title": "Redesign The Beautiful Unfinished essay with refined typography and p…",
        "date": "2026-03-03",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/65",
        "surface": "essays",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 65,
          "title": "Redesign The Beautiful Unfinished essay with refined typography and p…",
          "date": "2026-03-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/65",
          "surface": "essays",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 68,
          "title": "Reorganize Process page under The Beautiful Unfinished",
          "date": "2026-03-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/68",
          "surface": "essays",
          "discipline": "content-editorial",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "weather",
      "root": {
        "number": 98,
        "title": "Add weather dashboard integration plan",
        "date": "2026-03-16",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/98",
        "surface": "weather",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 98,
          "title": "Add weather dashboard integration plan",
          "date": "2026-03-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/98",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 99,
          "title": "Fix weather 'No data' state to preserve tab navigation",
          "date": "2026-03-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/99",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "weather",
      "root": {
        "number": 100,
        "title": "Reduce weather data cache and refresh intervals from 15m to 5m",
        "date": "2026-03-16",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/100",
        "surface": "weather",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 100,
          "title": "Reduce weather data cache and refresh intervals from 15m to 5m",
          "date": "2026-03-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/100",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 101,
          "title": "Refactor weather dashboard with theme support and design system",
          "date": "2026-03-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/101",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "crss",
      "root": {
        "number": 133,
        "title": "Add CRSS Summer 2026 course syllabus (.md and .pdf)",
        "date": "2026-03-31",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/133",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 133,
          "title": "Add CRSS Summer 2026 course syllabus (.md and .pdf)",
          "date": "2026-03-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/133",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 135,
          "title": "Reorganize files, fix bank filename in PIPELINE.md, update four→five CRSS domains",
          "date": "2026-03-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/135",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "crss",
      "root": {
        "number": 166,
        "title": "Add CRSS SME Review Workbench with AI-powered item regeneration",
        "date": "2026-04-03",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/166",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 166,
          "title": "Add CRSS SME Review Workbench with AI-powered item regeneration",
          "date": "2026-04-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/166",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 170,
          "title": "fix: normalize cog_level casing in CRSS item bank",
          "date": "2026-04-03",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/170",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "crss",
      "root": {
        "number": 271,
        "title": "Claude/crss qa v2 system i yvtf",
        "date": "2026-04-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/271",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 271,
          "title": "Claude/crss qa v2 system i yvtf",
          "date": "2026-04-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/271",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 272,
          "title": "CRSS QA v2 — Layer 4b (rationale coherence) + prompt-caching fix",
          "date": "2026-04-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/272",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "crss",
      "root": {
        "number": 297,
        "title": "crss: rewrite corpus-checks.mjs against multi-tenant schema",
        "date": "2026-04-22",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/297",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 297,
          "title": "crss: rewrite corpus-checks.mjs against multi-tenant schema",
          "date": "2026-04-22",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/297",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 299,
          "title": "crss: fix blueprint_weights targets — real domain names + 5pp tolerance",
          "date": "2026-04-22",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/299",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukraine",
      "root": {
        "number": 378,
        "title": "ukraine: map view (#349) and shared packing list (#352)",
        "date": "2026-05-16",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/378",
        "surface": "ukraine",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 378,
          "title": "ukraine: map view (#349) and shared packing list (#352)",
          "date": "2026-05-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/378",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 381,
          "title": "ukraine: fix 500 on first-time Google sign-in (apply next_auth schema)",
          "date": "2026-05-16",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/381",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "crss",
      "root": {
        "number": 426,
        "title": "crss: add semester selector to /crss/syllabus (Summer ↔ Fall 2026)",
        "date": "2026-05-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/426",
        "surface": "crss",
        "discipline": "crss-exam-prep",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 426,
          "title": "crss: add semester selector to /crss/syllabus (Summer ↔ Fall 2026)",
          "date": "2026-05-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/426",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "feature"
        },
        {
          "number": 427,
          "title": "crss: fix Fall 2026 syllabus week click crash",
          "date": "2026-05-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/427",
          "surface": "crss",
          "discipline": "crss-exam-prep",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 461,
        "title": "heddle: surface \"+ New Item\" entry point on Item Bank page",
        "date": "2026-05-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/461",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 461,
          "title": "heddle: surface \"+ New Item\" entry point on Item Bank page",
          "date": "2026-05-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/461",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 462,
          "title": "docs(heddle): regen PRD for Boyle with current feature surface",
          "date": "2026-05-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/462",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 464,
        "title": "heddle: add Privacy + ToS pages (M1-LEGAL-01)",
        "date": "2026-05-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/464",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 464,
          "title": "heddle: add Privacy + ToS pages (M1-LEGAL-01)",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/464",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 466,
          "title": "docs(heddle): mark M2-DASH-06..09 shipped — close stale issues #437–#440",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/466",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukraine",
      "root": {
        "number": 465,
        "title": "feat(ukraine): offline cache + queued dispatches service worker",
        "date": "2026-05-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/465",
        "surface": "ukraine",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 465,
          "title": "feat(ukraine): offline cache + queued dispatches service worker",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/465",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 468,
          "title": "docs(ukraine): capture Gina's real itinerary + open TBDs",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/468",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 469,
        "title": "feat(heddle): guard against Tailwind class leaks under /src/app/heddle/**",
        "date": "2026-05-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/469",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 469,
          "title": "feat(heddle): guard against Tailwind class leaks under /src/app/heddle/**",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/469",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 470,
          "title": "docs(heddle): land RUNBOOK.md for M2-OPS-01",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/470",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 471,
        "title": "feat(heddle): honeypot bot trap on inquiries form (closes #417)",
        "date": "2026-05-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/471",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 471,
          "title": "feat(heddle): honeypot bot trap on inquiries form (closes #417)",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/471",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 472,
          "title": "docs(heddle): scope 3 UI/UX milestones (M1-A11Y-01 / M1-DASH-03 / M1-LEAD-01)",
          "date": "2026-05-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/472",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "blog",
      "root": {
        "number": 481,
        "title": "blog: add Invisible Architecture post to home feed",
        "date": "2026-05-20",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/481",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 481,
          "title": "blog: add Invisible Architecture post to home feed",
          "date": "2026-05-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/481",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 482,
          "title": "docs: add blog pipeline overview",
          "date": "2026-05-20",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/482",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "josephine",
      "root": {
        "number": 571,
        "title": "Auth-gated Josephine collections review console",
        "date": "2026-05-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/571",
        "surface": "josephine",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 571,
          "title": "Auth-gated Josephine collections review console",
          "date": "2026-05-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/571",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 573,
          "title": "Josephine console: guided wizard, court login, doc serving, finish flow",
          "date": "2026-05-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/573",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "josephine",
      "root": {
        "number": 575,
        "title": "Resend: accept RESEND_API_KEY + idempotency keys on Josephine emails",
        "date": "2026-05-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/575",
        "surface": "josephine",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 575,
          "title": "Resend: accept RESEND_API_KEY + idempotency keys on Josephine emails",
          "date": "2026-05-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/575",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 576,
          "title": "Josephine: case lookup info in wizard + browser doc redaction",
          "date": "2026-05-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/576",
          "surface": "josephine",
          "discipline": "platform-admin",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "strata",
      "root": {
        "number": 596,
        "title": "Run Strata on prod — dispatch a GitHub Actions runner, poll status, show the report",
        "date": "2026-05-30",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/596",
        "surface": "strata",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 596,
          "title": "Run Strata on prod — dispatch a GitHub Actions runner, poll status, show the report",
          "date": "2026-05-30",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/596",
          "surface": "strata",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 597,
          "title": "Fix silent Games-section loss in prod Strata runs",
          "date": "2026-05-30",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/597",
          "surface": "strata",
          "discipline": "research-field-data",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "strata",
      "root": {
        "number": 608,
        "title": "strata: add the Graveyard + a live Organization as 3rd and 4th companions",
        "date": "2026-05-31",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/608",
        "surface": "strata",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 608,
          "title": "strata: add the Graveyard + a live Organization as 3rd and 4th companions",
          "date": "2026-05-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/608",
          "surface": "strata",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 609,
          "title": "strata: Atlas — the \"extract the why\" team (PRD + v1 agent)",
          "date": "2026-05-31",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/609",
          "surface": "strata",
          "discipline": "research-field-data",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "mail",
      "root": {
        "number": 638,
        "title": "feat(mail): richer extraction, copyable facts, vendor/account threading",
        "date": "2026-06-01",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/638",
        "surface": "mail",
        "discipline": "comms-messaging",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 638,
          "title": "feat(mail): richer extraction, copyable facts, vendor/account threading",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/638",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "feature"
        },
        {
          "number": 639,
          "title": "Fix getActionGroup import in mail capability-link route",
          "date": "2026-06-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/639",
          "surface": "mail",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukraine",
      "root": {
        "number": 685,
        "title": "Block-level copy + send-to controls on /ukraine",
        "date": "2026-06-04",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/685",
        "surface": "ukraine",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 685,
          "title": "Block-level copy + send-to controls on /ukraine",
          "date": "2026-06-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/685",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 688,
          "title": "fix(ukraine): make \"Send to…\" open the share sheet instead of silently copying",
          "date": "2026-06-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/688",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukraine",
      "root": {
        "number": 689,
        "title": "ukraine: hover-to-translate Ukrainian phrases in dispatches",
        "date": "2026-06-04",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/689",
        "surface": "ukraine",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 689,
          "title": "ukraine: hover-to-translate Ukrainian phrases in dispatches",
          "date": "2026-06-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/689",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 690,
          "title": "fix(ukraine): make \"Send to…\" work in the desktop PWA, not just mobile",
          "date": "2026-06-04",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/690",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "recurrence",
      "root": {
        "number": 712,
        "title": "Recurrence: declutter the start screen (kill the text wall)",
        "date": "2026-06-06",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/712",
        "surface": "recurrence",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 712,
          "title": "Recurrence: declutter the start screen (kill the text wall)",
          "date": "2026-06-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/712",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 714,
          "title": "Silence seeder ESM warning + Recurrence QA (restore design doc)",
          "date": "2026-06-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/714",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "recurrence",
      "root": {
        "number": 716,
        "title": "Recurrence: mobile-first contextual UI redesign",
        "date": "2026-06-06",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/716",
        "surface": "recurrence",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 716,
          "title": "Recurrence: mobile-first contextual UI redesign",
          "date": "2026-06-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/716",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 718,
          "title": "Recurrence mobile: fill the viewport + fix inspector truncation",
          "date": "2026-06-06",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/718",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "recurrence",
      "root": {
        "number": 719,
        "title": "Recurrence mobile v2: tap-a-tile-to-build, haptics, safe-area",
        "date": "2026-06-07",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/719",
        "surface": "recurrence",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 719,
          "title": "Recurrence mobile v2: tap-a-tile-to-build, haptics, safe-area",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/719",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 720,
          "title": "Recurrence: fix install-card overlap + 2D arc() crash; add screenshot QA",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/720",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "recurrence",
      "root": {
        "number": 724,
        "title": "Recurrence: radial build menu + anchor/node silhouette echo (UI playbook Phase 3)",
        "date": "2026-06-07",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/724",
        "surface": "recurrence",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 724,
          "title": "Recurrence: radial build menu + anchor/node silhouette echo (UI playbook Phase 3)",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/724",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 737,
          "title": "Recurrence: play-test fixes (coach placement, radial edge-clamp, guide tag)",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/737",
          "surface": "recurrence",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "weather",
      "root": {
        "number": 740,
        "title": "weather: declutter warnings, show rain window + rain-today",
        "date": "2026-06-07",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/740",
        "surface": "weather",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 740,
          "title": "weather: declutter warnings, show rain window + rain-today",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/740",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 743,
          "title": "weather: surface near-term ~30% rain chances (fix card vs reality conflict)",
          "date": "2026-06-07",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/743",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "blog",
      "root": {
        "number": 751,
        "title": "blog: mp4 fallback for the weather reel + move media kit to scripts/blog-media",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/751",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 751,
          "title": "blog: mp4 fallback for the weather reel + move media kit to scripts/blog-media",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/751",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 752,
          "title": "blog: Machine Mirror gameplay reel + extract shared blog-media engine",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/752",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "money",
      "root": {
        "number": 753,
        "title": "Add /money/ingest: bulk photo-dump triage into the ledger",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/753",
        "surface": "money",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 753,
          "title": "Add /money/ingest: bulk photo-dump triage into the ledger",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/753",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 756,
          "title": "Fix /money/ingest report undercounting past 1000 rows",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/756",
          "surface": "money",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "blog",
      "root": {
        "number": 755,
        "title": "blog: \"tools in motion\" reel for the /utilities post",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/755",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 755,
          "title": "blog: \"tools in motion\" reel for the /utilities post",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/755",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 762,
          "title": "fix(blog): restore the /weather post + its missing enrichment_assets row",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/762",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "rules",
      "root": {
        "number": 771,
        "title": "Rules Stack Phase D-a: Kane County LRS recorded-declaration scraper (Playwright)",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/771",
        "surface": "rules",
        "discipline": "civic-public-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 771,
          "title": "Rules Stack Phase D-a: Kane County LRS recorded-declaration scraper (Playwright)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/771",
          "surface": "rules",
          "discipline": "civic-public-data",
          "changeType": "feature"
        },
        {
          "number": 773,
          "title": "Rules Stack: wide v2 polish pass (agent docs tool, About refresh, a11y, dedup, SEO)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/773",
          "surface": "rules",
          "discipline": "civic-public-data",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "rules",
      "root": {
        "number": 774,
        "title": "Rules Stack: graph mobile fallback + deep-page cross-nav + ISR revalidate",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/774",
        "surface": "rules",
        "discipline": "civic-public-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 774,
          "title": "Rules Stack: graph mobile fallback + deep-page cross-nav + ISR revalidate",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/774",
          "surface": "rules",
          "discipline": "civic-public-data",
          "changeType": "feature"
        },
        {
          "number": 776,
          "title": "Rules Stack: v2 hardening pass (rate limits, security tests, input clamps, ISR)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/776",
          "surface": "rules",
          "discipline": "civic-public-data",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "todos",
      "root": {
        "number": 811,
        "title": "todos #798: Mail → todos bridge (the /mail connection)",
        "date": "2026-06-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/811",
        "surface": "todos",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 811,
          "title": "todos #798: Mail → todos bridge (the /mail connection)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/811",
          "surface": "todos",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 814,
          "title": "todos #800: cross-surface polish (triage, badges, digest, export, docs)",
          "date": "2026-06-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/814",
          "surface": "todos",
          "discipline": "household-ops",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "games",
      "root": {
        "number": 875,
        "title": "Semantic Status Semaphores — interactive essay, two games, tool suite, studio scaffold",
        "date": "2026-06-09",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/875",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 875,
          "title": "Semantic Status Semaphores — interactive essay, two games, tool suite, studio scaffold",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/875",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 882,
          "title": "Fix flaky game-progress test (mock-bleed): re-import route per test",
          "date": "2026-06-09",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/882",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "weather",
      "root": {
        "number": 914,
        "title": "/weather sky: golden-hour palette, shooting stars, tap haptics",
        "date": "2026-06-10",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/914",
        "surface": "weather",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 914,
          "title": "/weather sky: golden-hour palette, shooting stars, tap haptics",
          "date": "2026-06-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/914",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 918,
          "title": "/weather: fix footer bleed + a photoreal sky pass (grain, god-rays, volumetric clouds, Milky Way)",
          "date": "2026-06-10",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/918",
          "surface": "weather",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "games",
      "root": {
        "number": 1001,
        "title": "Add GREENFIELD — the drift-gate garden game",
        "date": "2026-06-11",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1001",
        "surface": "games",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1001,
          "title": "Add GREENFIELD — the drift-gate garden game",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1001",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 1002,
          "title": "Agents Store: ship the game-builder operator — games.fix drains the playtest backlog",
          "date": "2026-06-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1002",
          "surface": "games",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "manor",
      "root": {
        "number": 1040,
        "title": "feat(manor): phase 1 state mirror, staging promotion, live board; retire sitter page",
        "date": "2026-06-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1040",
        "surface": "manor",
        "discipline": "workshop-house",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1040,
          "title": "feat(manor): phase 1 state mirror, staging promotion, live board; retire sitter page",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1040",
          "surface": "manor",
          "discipline": "workshop-house",
          "changeType": "feature"
        },
        {
          "number": 1042,
          "title": "feat(manor): in-app gate verification panel + truthful-heartbeat and resync-provenance fixes",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1042",
          "surface": "manor",
          "discipline": "workshop-house",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "secrets",
      "root": {
        "number": 1073,
        "title": "Telegram multi-tenant: Stage 1 — secrets + provisioning foundation",
        "date": "2026-06-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1073",
        "surface": "secrets",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1073,
          "title": "Telegram multi-tenant: Stage 1 — secrets + provisioning foundation",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1073",
          "surface": "secrets",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 1074,
          "title": "fix(setup-center): only show applies chip when secret is already set",
          "date": "2026-06-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1074",
          "surface": "secrets",
          "discipline": "platform-admin",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ci",
      "root": {
        "number": 1090,
        "title": "ci: auto-seed client portals (projects.mjs → portal_projects) on merge",
        "date": "2026-06-13",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1090",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 1090,
          "title": "ci: auto-seed client portals (projects.mjs → portal_projects) on merge",
          "date": "2026-06-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1090",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 1104,
          "title": "docs(workflow-studio): RFC + epic for a visual Workflow Designer Studio",
          "date": "2026-06-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1104",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukraine",
      "root": {
        "number": 1120,
        "title": "Add video to /ukraine dispatches",
        "date": "2026-06-13",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1120",
        "surface": "ukraine",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1120,
          "title": "Add video to /ukraine dispatches",
          "date": "2026-06-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1120",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 1125,
          "title": "Fix /ukraine dispatch video upload type handling",
          "date": "2026-06-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1125",
          "surface": "ukraine",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "inbox",
      "root": {
        "number": 1169,
        "title": "inbox: v2 mobile UI polish — responsive master/detail layout",
        "date": "2026-06-14",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1169",
        "surface": "inbox",
        "discipline": "comms-messaging",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1169,
          "title": "inbox: v2 mobile UI polish — responsive master/detail layout",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1169",
          "surface": "inbox",
          "discipline": "comms-messaging",
          "changeType": "feature"
        },
        {
          "number": 1172,
          "title": "inbox: v3 mobile polish — touch targets, iOS zoom fix, unread dots",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1172",
          "surface": "inbox",
          "discipline": "comms-messaging",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "lcl",
      "root": {
        "number": 1229,
        "title": "lcl: page-by-page reader (/lcl/volume-1/pages) — closes #1207",
        "date": "2026-06-14",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1229",
        "surface": "lcl",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1229,
          "title": "lcl: page-by-page reader (/lcl/volume-1/pages) — closes #1207",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1229",
          "surface": "lcl",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 1233,
          "title": "lcl: mirror live lcl_media table into schema + surface doc",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1233",
          "surface": "lcl",
          "discipline": "research-field-data",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1240,
        "title": "heddle: vocabulary pass — director concepts on the rendered surface (#509)",
        "date": "2026-06-14",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1240",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1240,
          "title": "heddle: vocabulary pass — director concepts on the rendered surface (#509)",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1240",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1242,
          "title": "docs(plan): record Heddle pause + Wave 1/2 progress",
          "date": "2026-06-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1242",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1287,
        "title": "Heddle: in-context orchestrator step guidance (Closes #514)",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1287",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1287,
          "title": "Heddle: in-context orchestrator step guidance (Closes #514)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1287",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1288,
          "title": "docs(heddle): mark M2-UX-05/06/08/11 done (agent run)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1288",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1289,
        "title": "Heddle: CSV bulk-import for the item bank (Closes #519)",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1289",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1289,
          "title": "Heddle: CSV bulk-import for the item bank (Closes #519)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1289",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1294,
          "title": "docs(heddle): mark M2-UX-11 done (#519 anti-reopen guard)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1294",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "apply",
      "root": {
        "number": 1307,
        "title": "/apply: mobile/touch drag on the tracker (Pointer Events)",
        "date": "2026-06-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1307",
        "surface": "apply",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1307,
          "title": "/apply: mobile/touch drag on the tracker (Pointer Events)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1307",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 1308,
          "title": "/apply: serious v2 mobile pass (responsive forms, iOS zoom fix, mobile tracker)",
          "date": "2026-06-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1308",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "apply",
      "root": {
        "number": 1375,
        "title": "/apply: add 7 strong Discover auto-sources (~23 total)",
        "date": "2026-06-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1375",
        "surface": "apply",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1375,
          "title": "/apply: add 7 strong Discover auto-sources (~23 total)",
          "date": "2026-06-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1375",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 1379,
          "title": "/apply: expand ATS company coverage (Discover)",
          "date": "2026-06-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1379",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "the-pull",
      "root": {
        "number": 1388,
        "title": "THE PULL: gems + fake shop (monetization layer 1/3)",
        "date": "2026-06-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1388",
        "surface": "the-pull",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1388,
          "title": "THE PULL: gems + fake shop (monetization layer 1/3)",
          "date": "2026-06-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1388",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 1389,
          "title": "THE PULL: The Reckoning end-screen + claim-from-inspect + claim-nub fix",
          "date": "2026-06-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1389",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "the-pull",
      "root": {
        "number": 1406,
        "title": "THE PULL: pack-wrapper skins (3/3)",
        "date": "2026-06-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1406",
        "surface": "the-pull",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1406,
          "title": "THE PULL: pack-wrapper skins (3/3)",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1406",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 1408,
          "title": "THE PULL: hide the pack opener once a pack is opened (fix phantom packs)",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1408",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "apply",
      "root": {
        "number": 1407,
        "title": "/apply UI/UX pass: design-system conformance, honest fit + recency, control occlusion",
        "date": "2026-06-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1407",
        "surface": "apply",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1407,
          "title": "/apply UI/UX pass: design-system conformance, honest fit + recency, control occlusion",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1407",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 1411,
          "title": "/apply v2: mobile tune-panel fix, hide-stale filter, fit-floor tiers",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1411",
          "surface": "apply",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "the-pull",
      "root": {
        "number": 1417,
        "title": "THE PULL: 10-pull — bulk open + guaranteed rare+ (2/3)",
        "date": "2026-06-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1417",
        "surface": "the-pull",
        "discipline": "games-interactive",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1417,
          "title": "THE PULL: 10-pull — bulk open + guaranteed rare+ (2/3)",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1417",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "feature"
        },
        {
          "number": 1419,
          "title": "THE PULL: fix four issues from the screenshot review",
          "date": "2026-06-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1419",
          "surface": "the-pull",
          "discipline": "games-interactive",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "blog",
      "root": {
        "number": 1477,
        "title": "Add two homepage blog posts: finished novel + in-house n8n",
        "date": "2026-06-21",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1477",
        "surface": "blog",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1477,
          "title": "Add two homepage blog posts: finished novel + in-house n8n",
          "date": "2026-06-21",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1477",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 1491,
          "title": "Fix broken blog cover/OG images (move /api/og handlers off the edge runtime)",
          "date": "2026-06-21",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1491",
          "surface": "blog",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "comics",
      "root": {
        "number": 1545,
        "title": "comics: live, ACL-gated content calendar (DB-backed + /admin/comics)",
        "date": "2026-06-23",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1545",
        "surface": "comics",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1545,
          "title": "comics: live, ACL-gated content calendar (DB-backed + /admin/comics)",
          "date": "2026-06-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1545",
          "surface": "comics",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 1548,
          "title": "ci: make comics seed resilient (+ fix the seed-content failure blocking it)",
          "date": "2026-06-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1548",
          "surface": "comics",
          "discipline": "content-editorial",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "cholent",
      "root": {
        "number": 1584,
        "title": "Make /cholent a recurring three-Thursday series",
        "date": "2026-06-24",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1584",
        "surface": "cholent",
        "discipline": "household-ops",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1584,
          "title": "Make /cholent a recurring three-Thursday series",
          "date": "2026-06-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1584",
          "surface": "cholent",
          "discipline": "household-ops",
          "changeType": "feature"
        },
        {
          "number": 1586,
          "title": "Fix PWA Update button obscured by Ask/Search nub on /cholent",
          "date": "2026-06-24",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1586",
          "surface": "cholent",
          "discipline": "household-ops",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "fronds",
      "root": {
        "number": 1670,
        "title": "Fronds: drop the invented \"carvone-locked\" from the seeds footer",
        "date": "2026-06-28",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1670",
        "surface": "fronds",
        "discipline": "novels-atelier",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1670,
          "title": "Fronds: drop the invented \"carvone-locked\" from the seeds footer",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1670",
          "surface": "fronds",
          "discipline": "novels-atelier",
          "changeType": "feature"
        },
        {
          "number": 1671,
          "title": "Fronds: audit fixes — em-dash sweep, BOLT RISK, score math, ✦ legend",
          "date": "2026-06-28",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1671",
          "surface": "fronds",
          "discipline": "novels-atelier",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "heddle",
      "root": {
        "number": 1714,
        "title": "perf(heddle)+a11y: WCAG AA pass on landing/login + mobile font de-bloat",
        "date": "2026-06-29",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1714",
        "surface": "heddle",
        "discipline": "heddle-product",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1714,
          "title": "perf(heddle)+a11y: WCAG AA pass on landing/login + mobile font de-bloat",
          "date": "2026-06-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1714",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "feature"
        },
        {
          "number": 1719,
          "title": "docs(wfs): Phase 0 kernel RFC (audit + migration plan)",
          "date": "2026-06-29",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1719",
          "surface": "heddle",
          "discipline": "heddle-product",
          "changeType": "docs"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "graphmy",
      "root": {
        "number": 1772,
        "title": "studio: GraphMy reel (filmed) for the launch post",
        "date": "2026-07-01",
        "author": "github-actions[bot]",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1772",
        "surface": "graphmy",
        "discipline": "commerce-billing",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1772,
          "title": "studio: GraphMy reel (filmed) for the launch post",
          "date": "2026-07-01",
          "author": "github-actions[bot]",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1772",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "feature"
        },
        {
          "number": 1775,
          "title": "fix(graphmy): resolve Stripe keys DB-first + put GraphMy back on the map",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1775",
          "surface": "graphmy",
          "discipline": "commerce-billing",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "podcast",
      "root": {
        "number": 1777,
        "title": "feat(legibility): The Legibility Desk — a self-checking critique podcast (first slice)",
        "date": "2026-07-01",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1777",
        "surface": "podcast",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1777,
          "title": "feat(legibility): The Legibility Desk — a self-checking critique podcast (first slice)",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1777",
          "surface": "podcast",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 1784,
          "title": "refactor(showkit): share the RSS builder + feed helpers across /podcast and /legibility",
          "date": "2026-07-01",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1784",
          "surface": "podcast",
          "discipline": "content-editorial",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "hackathon",
      "root": {
        "number": 1876,
        "title": "Hackathon board v7: file recap to changelog draft, deploy widget, auto-check",
        "date": "2026-07-05",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1876",
        "surface": "hackathon",
        "discipline": "platform-admin",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1876,
          "title": "Hackathon board v7: file recap to changelog draft, deploy widget, auto-check",
          "date": "2026-07-05",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1876",
          "surface": "hackathon",
          "discipline": "platform-admin",
          "changeType": "feature"
        },
        {
          "number": 1877,
          "title": "Hackathon board v8–v12: smoke tests, X-ray, blocked state, report, kickoff, live ground truth",
          "date": "2026-07-05",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1877",
          "surface": "hackathon",
          "discipline": "platform-admin",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "newsletter",
      "root": {
        "number": 1911,
        "title": "newsletter: the world-class pass (share, archive, OG, feeds, dark email, + editorial voice layer)",
        "date": "2026-07-08",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1911",
        "surface": "newsletter",
        "discipline": "content-editorial",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 1911,
          "title": "newsletter: the world-class pass (share, archive, OG, feeds, dark email, + editorial voice layer)",
          "date": "2026-07-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1911",
          "surface": "newsletter",
          "discipline": "content-editorial",
          "changeType": "feature"
        },
        {
          "number": 1912,
          "title": "newsletter: \"email me a test\" — see an issue in your own inbox on demand",
          "date": "2026-07-08",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1912",
          "surface": "newsletter",
          "discipline": "content-editorial",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "atelier",
      "root": {
        "number": 2000,
        "title": "Atelier: cross-device DB draft store (opt-in cloud sync)",
        "date": "2026-07-11",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2000",
        "surface": "atelier",
        "discipline": "novels-atelier",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2000,
          "title": "Atelier: cross-device DB draft store (opt-in cloud sync)",
          "date": "2026-07-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2000",
          "surface": "atelier",
          "discipline": "novels-atelier",
          "changeType": "feature"
        },
        {
          "number": 2001,
          "title": "Atelier Phase 4: generalize beyond /reading (surface registry) + fix #2000 build break",
          "date": "2026-07-11",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2001",
          "surface": "atelier",
          "discipline": "novels-atelier",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "sagen",
      "root": {
        "number": 2033,
        "title": "sagen-paid-window: grant actions:read for the artifact restore step",
        "date": "2026-07-12",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2033",
        "surface": "sagen",
        "discipline": "ai-agent-infra",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2033,
          "title": "sagen-paid-window: grant actions:read for the artifact restore step",
          "date": "2026-07-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2033",
          "surface": "sagen",
          "discipline": "ai-agent-infra",
          "changeType": "feature"
        },
        {
          "number": 2035,
          "title": "SAGEN ELI5: plain-language \"Put To The Test\" section for the general reader",
          "date": "2026-07-12",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2035",
          "surface": "sagen",
          "discipline": "ai-agent-infra",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "pingree-grove",
      "root": {
        "number": 2047,
        "title": "Pingree Grove Studies thread 3: the board's decisions",
        "date": "2026-07-13",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2047",
        "surface": "pingree-grove",
        "discipline": "research-field-data",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2047,
          "title": "Pingree Grove Studies thread 3: the board's decisions",
          "date": "2026-07-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2047",
          "surface": "pingree-grove",
          "discipline": "research-field-data",
          "changeType": "feature"
        },
        {
          "number": 2049,
          "title": "Pingree Grove: fix release 404s + add the FOIA engine",
          "date": "2026-07-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2049",
          "surface": "pingree-grove",
          "discipline": "research-field-data",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukrainian-frequency",
      "root": {
        "number": 2054,
        "title": "Ukrainian Frequency: a lemma-based open frequency list (research field data)",
        "date": "2026-07-14",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2054",
        "surface": "ukrainian-frequency",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2054,
          "title": "Ukrainian Frequency: a lemma-based open frequency list (research field data)",
          "date": "2026-07-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2054",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2056,
          "title": "Ship Ukrainian Frequency thread 05: the vocabulary-size self-test",
          "date": "2026-07-14",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2056",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "lightning",
      "root": {
        "number": 2060,
        "title": "lightning: make the Roadmap a trackable 12-month plan",
        "date": "2026-07-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2060",
        "surface": "lightning",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2060,
          "title": "lightning: make the Roadmap a trackable 12-month plan",
          "date": "2026-07-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2060",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2063,
          "title": "lightning: an in-browser yes/no vocabulary-size test",
          "date": "2026-07-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2063",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "lightning",
      "root": {
        "number": 2064,
        "title": "lightning: add a daily-practice coach to the Progress tab",
        "date": "2026-07-15",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2064",
        "surface": "lightning",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2064,
          "title": "lightning: add a daily-practice coach to the Progress tab",
          "date": "2026-07-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2064",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2067,
          "title": "lightning: add a bring-your-own-text C-test under a Measure tab",
          "date": "2026-07-15",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2067",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "aqi",
      "root": {
        "number": 2087,
        "title": "Add AQI Dashboard at /aqi",
        "date": "2026-07-17",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2087",
        "surface": "aqi",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2087,
          "title": "Add AQI Dashboard at /aqi",
          "date": "2026-07-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2087",
          "surface": "aqi",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 2088,
          "title": "Fix /aqi data fetching (Open-Meteo us_aqi variable)",
          "date": "2026-07-17",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2088",
          "surface": "aqi",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ci",
      "root": {
        "number": 2120,
        "title": "ci: diagnose pr-qa-review instant failures",
        "date": "2026-07-18",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2120",
        "surface": "ci",
        "discipline": "devops-quality",
        "changeType": "infra"
      },
      "steps": [
        {
          "number": 2120,
          "title": "ci: diagnose pr-qa-review instant failures",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2120",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "infra"
        },
        {
          "number": 2121,
          "title": "ci: capture and clean up after pr-qa-review diagnostic",
          "date": "2026-07-18",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2121",
          "surface": "ci",
          "discipline": "devops-quality",
          "changeType": "refactor"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "lightning",
      "root": {
        "number": 2146,
        "title": "lightning: starter-deck audio, audio credits, dictation drill, handwriting tracer",
        "date": "2026-07-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2146",
        "surface": "lightning",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2146,
          "title": "lightning: starter-deck audio, audio credits, dictation drill, handwriting tracer",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2146",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2147,
          "title": "lightning: populate starter-deck audio manifest (full 138 coverage: 22 native + 116 TTS)",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2147",
          "surface": "lightning",
          "discipline": "language-learning",
          "changeType": "test"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "aqi",
      "root": {
        "number": 2158,
        "title": "aqi: location search + presets, calmer geolocation, AA-safe chips",
        "date": "2026-07-19",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2158",
        "surface": "aqi",
        "discipline": "tools-boards",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2158,
          "title": "aqi: location search + presets, calmer geolocation, AA-safe chips",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2158",
          "surface": "aqi",
          "discipline": "tools-boards",
          "changeType": "feature"
        },
        {
          "number": 2162,
          "title": "aqi: fix health-facing correctness defects (blend freshness, fire wording, forecast labels)",
          "date": "2026-07-19",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2162",
          "surface": "aqi",
          "discipline": "tools-boards",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukrainian-frequency",
      "root": {
        "number": 2223,
        "title": "ukrainian-frequency: validated CEFR overlay (thread 02) from PULS",
        "date": "2026-07-23",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2223",
        "surface": "ukrainian-frequency",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2223,
          "title": "ukrainian-frequency: validated CEFR overlay (thread 02) from PULS",
          "date": "2026-07-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2223",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2229,
          "title": "Fix major white space on /research/ukrainian-frequency",
          "date": "2026-07-23",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2229",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukrainian-frequency",
      "root": {
        "number": 2258,
        "title": "Ukrainian Frequency: join the author-shared Borodin A1 lexical minimum (the closed seam)",
        "date": "2026-07-27",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2258",
        "surface": "ukrainian-frequency",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2258,
          "title": "Ukrainian Frequency: join the author-shared Borodin A1 lexical minimum (the closed seam)",
          "date": "2026-07-27",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2258",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2262,
          "title": "Add PCUH Teacher's Guide to the CEFR field census; fix stale comment",
          "date": "2026-07-27",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2262",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    },
    {
      "surface": "ukrainian-frequency",
      "root": {
        "number": 2359,
        "title": "Ukrainian Frequency: the text profiler (thread 06)",
        "date": "2026-09-13",
        "author": "jake0lawrence",
        "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2359",
        "surface": "ukrainian-frequency",
        "discipline": "language-learning",
        "changeType": "feature"
      },
      "steps": [
        {
          "number": 2359,
          "title": "Ukrainian Frequency: the text profiler (thread 06)",
          "date": "2026-09-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2359",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "feature"
        },
        {
          "number": 2360,
          "title": "Ukrainian Frequency: fix the apostrophe in the thread-04 paradigm join",
          "date": "2026-09-13",
          "author": "jake0lawrence",
          "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2360",
          "surface": "ukrainian-frequency",
          "discipline": "language-learning",
          "changeType": "bugfix"
        }
      ],
      "settleDays": 0
    }
  ],
  "curated": [
    {
      "slug": "case-study-library",
      "title": "Auditing 2,071 of my own pull requests with two models and a red line",
      "discipline": "research-field-data",
      "competencies": [
        "ai-orchestration",
        "verification",
        "system-design",
        "ambiguity"
      ],
      "evidence": [
        2417
      ],
      "permalink": "/research/case-study-library/case-study-library"
    },
    {
      "slug": "manor-control-plane",
      "title": "A public window and a private control plane over a live house, with no inbound ports",
      "discipline": "workshop-house",
      "competencies": [
        "system-design",
        "verification",
        "shipping"
      ],
      "evidence": [
        1033,
        1040,
        1042,
        1051,
        1055,
        1059,
        2346
      ],
      "permalink": "/research/case-study-library/manor-control-plane"
    },
    {
      "slug": "heddle",
      "title": "Heddle: credentialing infrastructure for exam-prep programs that run on spreadsheets",
      "discipline": "heddle-product",
      "competencies": [
        "system-design",
        "stakeholders",
        "ambiguity",
        "data-pipelines"
      ],
      "evidence": [
        281,
        367,
        371,
        430,
        445,
        451,
        1921,
        2316
      ],
      "permalink": "/research/case-study-library/heddle"
    },
    {
      "slug": "crss-exam-prep",
      "title": "An exam-prep pipeline for a community-college course, from one item bank to every printed page",
      "discipline": "crss-exam-prep",
      "competencies": [
        "data-pipelines",
        "stakeholders",
        "shipping"
      ],
      "evidence": [
        122,
        133,
        136,
        149,
        152,
        158,
        166,
        170,
        428
      ],
      "permalink": "/research/case-study-library/crss-exam-prep"
    },
    {
      "slug": "ukrainian-frequency",
      "title": "An open frequency list for Ukrainian, built as data a learner can check",
      "discipline": "language-learning",
      "competencies": [
        "data-pipelines",
        "verification",
        "ambiguity",
        "shipping"
      ],
      "evidence": [
        2054,
        2200,
        2223,
        2258,
        2358,
        2359,
        2362,
        2366,
        2378,
        2411
      ],
      "permalink": "/research/case-study-library/ukrainian-frequency"
    },
    {
      "slug": "josephine-collections-console",
      "title": "A court-collections review console a non-technical reviewer can finish alone",
      "discipline": "platform-admin",
      "competencies": [
        "stakeholders",
        "verification",
        "legacy",
        "shipping"
      ],
      "evidence": [
        570,
        571,
        573,
        574,
        579,
        581,
        1918
      ],
      "permalink": "/research/case-study-library/josephine-collections-console"
    },
    {
      "slug": "ops-harness",
      "title": "From one outage to a standing ops harness",
      "discipline": "devops-quality",
      "competencies": [
        "verification",
        "shipping",
        "system-design"
      ],
      "evidence": [
        1011,
        1015,
        1016,
        1460,
        2255,
        2269
      ],
      "permalink": "/research/case-study-library/ops-harness"
    },
    {
      "slug": "playtest-rig",
      "title": "An autonomous mobile QA rig for a thirty-game library",
      "discipline": "devops-quality",
      "competencies": [
        "ai-orchestration",
        "verification",
        "shipping"
      ],
      "evidence": [
        722,
        725,
        742,
        1002,
        1415,
        2381
      ],
      "permalink": "/research/case-study-library/playtest-rig"
    }
  ],
  "cases": [
    {
      "number": 1,
      "title": "Add game logic tests, error boundaries, and accessibility improvements",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "test"
    },
    {
      "number": 2,
      "title": "Refactor game routes and update component imports",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "refactor"
    },
    {
      "number": 3,
      "title": "Fix document reference error in server-side rendering",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/3",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 4,
      "title": "Refactor Dice or Die page to use dedicated game component",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/4",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "refactor"
    },
    {
      "number": 5,
      "title": "Update branding and tech stack references across games",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/5",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 6,
      "title": "Add Tailwind CSS integration to the project",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/6",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 7,
      "title": "Polish Dice or Die: rework audio and fix UI rough edges",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/7",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 8,
      "title": "Fix Atlas/Mirror/CourtCollect links, add Prompt Mirror + Weight of Sa…",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/8",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 9,
      "title": "Wire up Keymaster full demo page and replace personal data with dummy…",
      "date": "2026-02-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/9",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 10,
      "title": "Add Chapters 2 and 3 to Weight of Salt interactive book",
      "date": "2026-02-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/10",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 11,
      "title": "Add responsive scaling and touch swipe navigation to book viewer",
      "date": "2026-02-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/11",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 12,
      "title": "Fix book page text cutoff with scrollable interior pages",
      "date": "2026-02-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/12",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 13,
      "title": "Extract navigation into reusable SubpageNav component",
      "date": "2026-02-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/13",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 14,
      "title": "Reorganize novel project structure and add new projects",
      "date": "2026-02-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/14",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "refactor"
    },
    {
      "number": 15,
      "title": "Add chapters 4-6 content to Weight of Salt book demo",
      "date": "2026-02-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/15",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 16,
      "title": "Add social media links navigation to footer",
      "date": "2026-02-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/16",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 17,
      "title": "Reorganize Gina-Jake novel files with pipeline naming convention",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/17",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "refactor"
    },
    {
      "number": 18,
      "title": "Add complete \"The Liminal\" novel manuscript with extraction tooling",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/18",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 19,
      "title": "Add The Pandora Threshold novel with spy thriller pipeline v2",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/19",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "infra"
    },
    {
      "number": 21,
      "title": "Fix footer links: update About section hrefs and revert Footer",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/21",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 22,
      "title": "Add useInView hook to pause animations when off-screen",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/22",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 23,
      "title": "Add shimmer animation to hero name and update resume",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/23",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 24,
      "title": "Make name animation more flashy with cyan shimmer and glow",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/24",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 25,
      "title": "Simplify hero name animation with linear shimmer effect",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/25",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 26,
      "title": "Add touch swipe navigation to PandoraThresholdBook",
      "date": "2026-02-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/26",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 27,
      "title": "Add ChessGuessr game card and dedicated game page",
      "date": "2026-02-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/27",
      "surface": "chessguessr",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 28,
      "title": "Add AI Concepts game series with 3 interactive games",
      "date": "2026-02-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/28",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 29,
      "title": "Add audiobook player for The Weight of Salt novel",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/29",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 30,
      "title": "Add full novel reader with chapter navigation and progress tracking",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/30",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 31,
      "title": "Support multiple status pills and refactor novel CTAs",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/31",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "refactor"
    },
    {
      "number": 32,
      "title": "Add The Liminal novel with full reading experience",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/32",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 33,
      "title": "Add Cube Dojo: Interactive Rubik's Cube puzzle game",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/33",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 34,
      "title": "Update portfolio: Add 18th project and revise project descriptions",
      "date": "2026-02-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/34",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 35,
      "title": "Integrate Case Cooking game into site routing and games hub",
      "date": "2026-02-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/35",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 36,
      "title": "Add Case Cooking language game card and update games page",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/36",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 37,
      "title": "Add Subgenre Survival game to portfolio",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/37",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 38,
      "title": "Add SubgenreSurvivalCard component and update game navigation",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/38",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 39,
      "title": "Add comprehensive gamification system with achievements and XP tracking",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/39",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 40,
      "title": "Refactor: Centralize GamificationWidget in provider",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/40",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "refactor"
    },
    {
      "number": 41,
      "title": "Add The Undercroft tower defense game",
      "date": "2026-02-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/41",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 42,
      "title": "Add The Human Airway interactive anatomy game",
      "date": "2026-02-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/42",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 43,
      "title": "Add The Human Airway interactive anatomy game",
      "date": "2026-02-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/43",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 44,
      "title": "Fix layout: always single-column with menu at bottom, adaptive canvas…",
      "date": "2026-02-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/44",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 45,
      "title": "Add interactive spa menu game to /games page",
      "date": "2026-02-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/45",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 46,
      "title": "Add The Invisible Architecture essay",
      "date": "2026-02-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/46",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 47,
      "title": "Add essay banner and homepage listing for The Invisible Architecture",
      "date": "2026-02-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/47",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 48,
      "title": "Fix essay 404: serve The Invisible Architecture from public directory",
      "date": "2026-02-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/48",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 49,
      "title": "Fix essay game loading and localStorage toast dismissal",
      "date": "2026-02-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/49",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 50,
      "title": "Fix game iframes not loading and restore reading position toast",
      "date": "2026-02-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/50",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 51,
      "title": "Add listen-along narration mode to The Invisible Architecture",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/51",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 52,
      "title": "Sync narration mode to public directory so it appears in the UI",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/52",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 53,
      "title": "Configure Git LFS for audio files",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/53",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 54,
      "title": "Add section-level audio players and refactor narration UI",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/54",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 55,
      "title": "Add auto-sync mechanism for the-invisible-architecture content",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/55",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 56,
      "title": "Fix audio file paths to use absolute URLs",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/56",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 57,
      "title": "Remove Git LFS for audio files and Vercel build config",
      "date": "2026-02-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/57",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 58,
      "title": "Suppress AbortError warnings in audio playback",
      "date": "2026-02-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/58",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 59,
      "title": "Update README to reflect full project scope",
      "date": "2026-03-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/59",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "docs"
    },
    {
      "number": 60,
      "title": "Add project baseline audit across OPS, ESSAYS, SITE, DISTRIBUTION",
      "date": "2026-03-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/60",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 61,
      "title": "Add The Beautiful Unfinished essay with build script and site integration",
      "date": "2026-03-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/61",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 62,
      "title": "Integrate Quixote captions with essay art across all 7 sections",
      "date": "2026-03-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/62",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 63,
      "title": "Fix essay image loading by using absolute paths",
      "date": "2026-03-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/63",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 64,
      "title": "Integrate The Prompt Architecture page at /process",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/64",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 65,
      "title": "Redesign The Beautiful Unfinished essay with refined typography and p…",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/65",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 66,
      "title": "Enhance process page visibility across site navigation",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/66",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 67,
      "title": "Add bibliography page with discipline-organized sources",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/67",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 68,
      "title": "Reorganize Process page under The Beautiful Unfinished",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/68",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "refactor"
    },
    {
      "number": 69,
      "title": "Add research papers: LLM-QP and SAGEN with full documentation",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/69",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 70,
      "title": "Add dedicated research page and update navigation",
      "date": "2026-03-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/70",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 71,
      "title": "Add Classification is Infrastructure research paper and PDF downloads",
      "date": "2026-03-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/71",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 72,
      "title": "Add Door County family vacation planner as a shareable page",
      "date": "2026-03-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/72",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 73,
      "title": "Add global draggable bug icon with automated Git agent workflow",
      "date": "2026-03-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/73",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 74,
      "title": "Fix bug report modal failing to initialize on reopen",
      "date": "2026-03-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/74",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 75,
      "title": "Fix sticky bug button modal not reopening after initial tap",
      "date": "2026-03-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/75",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 76,
      "title": "Make Progress (GamificationWidget) button draggable",
      "date": "2026-03-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/76",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 77,
      "title": "Migrate RAPID-IL to Next.js App Router with localStorage",
      "date": "2026-03-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/77",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 79,
      "title": "Hide bug report and gamification buttons on /rapid-il page",
      "date": "2026-03-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/79",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 80,
      "title": "Add comprehensive site overview document",
      "date": "2026-03-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/80",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 81,
      "title": "Externalize audit data to JSON file and improve institution name shortening",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/81",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 82,
      "title": "Add accountability tracker and essay research pages",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/82",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 83,
      "title": "Add navigation and footer to accountability tracker page",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/83",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 84,
      "title": "Revise site overview with complete project descriptions",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/84",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 85,
      "title": "Fix footer styling on accountability tracker page",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/85",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 86,
      "title": "Redesign portfolio with Bauhaus theme and remove gamification",
      "date": "2026-03-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/86",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 87,
      "title": "Remove floating bug report button and its API route",
      "date": "2026-03-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/87",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 88,
      "title": "Replace time-based hero animation with scroll-driven totem assembly",
      "date": "2026-03-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/88",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 89,
      "title": "Replace hero animation with scroll-driven totem assembly",
      "date": "2026-03-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/89",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 90,
      "title": "Fade out totem and name as content panel emerges",
      "date": "2026-03-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/90",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 91,
      "title": "Add missing site features from Bauhaus v2 migration",
      "date": "2026-03-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/91",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 92,
      "title": "Implement research page v9 with interactive micro-interactions and da…",
      "date": "2026-03-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/92",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 93,
      "title": "Fix 3 broken links on /research page",
      "date": "2026-03-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/93",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 94,
      "title": "Comprehensive SEO overhaul: metadata, sitemap, robots.txt, structured…",
      "date": "2026-03-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/94",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 95,
      "title": "Add dynamic Bauhaus OG image generation",
      "date": "2026-03-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/95",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 96,
      "title": "Organize 19 loose root files into docs/ subdirectories",
      "date": "2026-03-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/96",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 97,
      "title": "Organize SEO files from root into proper project locations",
      "date": "2026-03-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/97",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 98,
      "title": "Add weather dashboard integration plan",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/98",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 99,
      "title": "Fix weather 'No data' state to preserve tab navigation",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/99",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 100,
      "title": "Reduce weather data cache and refresh intervals from 15m to 5m",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/100",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 101,
      "title": "Refactor weather dashboard with theme support and design system",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/101",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "refactor"
    },
    {
      "number": 102,
      "title": "Add crossfade animation and skeleton loading UI",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/102",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 103,
      "title": "Replace favicon with Bauhaus Totem design",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/103",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 104,
      "title": "Add hourly temperature chart and improve accessibility",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/104",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 105,
      "title": "Add Coal Dust & County Lines population history game",
      "date": "2026-03-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/105",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 106,
      "title": "Add Teach Me Mahjong game",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/106",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 107,
      "title": "Refactor sorting machine page to use new file structure",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/107",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 108,
      "title": "Integrate The New Sorting Hat essay as interactive page",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/108",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 109,
      "title": "Add TTS thesis audio previews for research page PieceCards",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/109",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 110,
      "title": "Redesign hero animation to pin shapes into nav logo",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/110",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 111,
      "title": "Fix scroll position after hero animation completes",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/111",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 112,
      "title": "Fix math games links: move routes under /games/ prefix",
      "date": "2026-03-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/112",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 113,
      "title": "Fix math games crash: add missing stub functions to useGamification",
      "date": "2026-03-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/113",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 115,
      "title": "Fix math games crash: remove dead gamification tracking from GamePageLayout",
      "date": "2026-03-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/115",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 116,
      "title": "Fix math games crash: replace Proxy stub with plain object",
      "date": "2026-03-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/116",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 117,
      "title": "Fix achievements page build crash: correct stub state shape",
      "date": "2026-03-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/117",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 118,
      "title": "Add global auth system with game progress persistence",
      "date": "2026-03-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/118",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 120,
      "title": "Add authentication system with Google OAuth and admin roles",
      "date": "2026-03-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/120",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 121,
      "title": "V2: 1000-item bank, 5-script pipeline, 6-week summer course",
      "date": "2026-03-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/121",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 122,
      "title": "Add CRSS Reveal page at /crss route",
      "date": "2026-03-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/122",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 123,
      "title": "Add Summer 2026 v2 course release with week-by-week materials",
      "date": "2026-03-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/123",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 124,
      "title": "Add dark mode support to Door County Planner",
      "date": "2026-03-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/124",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 125,
      "title": "Replace global theme provider with local theme state in Door County Planner",
      "date": "2026-03-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/125",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 126,
      "title": "Migrate to 5-domain item bank (1,462 items) and add .md output",
      "date": "2026-03-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/126",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 127,
      "title": "Rewrite Week 1 CRSS exam prep materials to meet quality standards",
      "date": "2026-03-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/127",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 128,
      "title": "Add /values page integrated with Bauhaus design system",
      "date": "2026-03-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/128",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 129,
      "title": "Add values quiz and study mode for memorization",
      "date": "2026-03-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/129",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 130,
      "title": "Add quality upgrade pipeline for CRSS exam prep Weeks 2-6",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/130",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "chore"
    },
    {
      "number": 131,
      "title": "Reorganize nav: group Ethics and Values under Compass parent",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/131",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 132,
      "title": "Add comprehensive backup study materials for Weeks 2-6 CRSS exam prep",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/132",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 133,
      "title": "Add CRSS Summer 2026 course syllabus (.md and .pdf)",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/133",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 134,
      "title": "Claude/run upgrade scripts in0 yo",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/134",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "chore"
    },
    {
      "number": 135,
      "title": "Reorganize files, fix bank filename in PIPELINE.md, update four→five CRSS domains",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/135",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "bugfix"
    },
    {
      "number": 136,
      "title": "Add public item bank review page with inline editing at /crss/bank",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/136",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 137,
      "title": "Add rationale rewrite script for weak pattern detection and API-based…",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/137",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 138,
      "title": "Make /crss/bank publicly accessible without authentication",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/138",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 139,
      "title": "Add admin authentication system for item bank management",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/139",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 140,
      "title": "Add CRSS certification syllabus and study materials",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/140",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 141,
      "title": "Fix admin save: use GitHub Contents API instead of fs.writeFileSync",
      "date": "2026-03-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/141",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 142,
      "title": "Switch GitHub API from Contents to Git Data API for file operations",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/142",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 143,
      "title": "Add instructor guide generation pipeline with Claude API",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/143",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 144,
      "title": "Add comprehensive instructor guides for Weeks 2-6 CRSS exam prep",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/144",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 145,
      "title": "Add CRSS instructor guides for weeks 1-6 with markdown-to-docx conversion",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/145",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 146,
      "title": "Rewrite 557 weak rationales via Anthropic API pipeline",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/146",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 147,
      "title": "Add comprehensive audit system for exam question bank",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/147",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 148,
      "title": "Add 6 pipeline scripts to fix all audit findings",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/148",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 149,
      "title": "Add CRSS study guide module architecture and generation pipeline",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/149",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "infra"
    },
    {
      "number": 150,
      "title": "Expand exam question bank to 1802 items with balanced answer distribution",
      "date": "2026-04-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/150",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 151,
      "title": "Record study guide progress and update audit report date",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/151",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 152,
      "title": "Add Markdown to DOCX converter for CRSS Study Guide",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/152",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 153,
      "title": "Restructure CRSS syllabus with refined content and enhanced resources",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/153",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 154,
      "title": "Replace CRSS reveal component with comprehensive study guide",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/154",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 155,
      "title": "Add interactive CRSS Comprehensive Study Guide with module browser",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/155",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 156,
      "title": "Add pre-course diagnostic assessment with inline preview",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/156",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 157,
      "title": "Add comprehensive CRSS module technical documentation",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/157",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 158,
      "title": "Add CRSS exam prep hub with practice mode and domain explorer",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/158",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 159,
      "title": "Integrate CRSS landing page as /crss hub route",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/159",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 160,
      "title": "Add admin editing capabilities to CRSS syllabus and study guide",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/160",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 161,
      "title": "Add Globe Trekkers geography game to games collection",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/161",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 162,
      "title": "Make local filesystem writes non-blocking in syllabus API",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/162",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 163,
      "title": "Enhance Globe Trekkers: Update emojis, questions, and map UI",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/163",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 164,
      "title": "Refactor admin UI styles and improve auth feedback",
      "date": "2026-04-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/164",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "refactor"
    },
    {
      "number": 165,
      "title": "Update CRSS exam bank to v3",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/165",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 166,
      "title": "Add CRSS SME Review Workbench with AI-powered item regeneration",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/166",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 167,
      "title": "Implement structured rationale_v2 with error types and distractor explanations",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/167",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 168,
      "title": "Fix mobile layout for Gina's SME Review Workbench",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/168",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 169,
      "title": "Summer 2026 v4 release: upgrade pipeline to v3 item bank (1,802 items)",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/169",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "chore"
    },
    {
      "number": 170,
      "title": "fix: normalize cog_level casing in CRSS item bank",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/170",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "bugfix"
    },
    {
      "number": 171,
      "title": "Add revision mode for question review workflow",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/171",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 172,
      "title": "Fix Revise button & upgrade AI regeneration",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/172",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 173,
      "title": "Overhaul AI regen to match Distractor + Rationale Template Specs",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/173",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 174,
      "title": "Upgrade item bank to v3 with 1,802 items and expanded coverage",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/174",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "test"
    },
    {
      "number": 175,
      "title": "Add Summer 2026 v5 CRSS Exam Prep Course Materials",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/175",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 176,
      "title": "Auto-detect latest CRSS release version for syllabus footer",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/176",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 177,
      "title": "Add Review Mode to CRSS Item Bank, consolidate gina workbench",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/177",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 178,
      "title": "Add CRSS pipeline automation with GitHub Actions and admin UI",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/178",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "infra"
    },
    {
      "number": 179,
      "title": "Add enrichment orchestration system with AI-powered metadata & content generation",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/179",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 180,
      "title": "Add dotenv loading to enrichment orchestrator",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/180",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 181,
      "title": "Add proxy/retry support and metadata enrichments for all 42 assets",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/181",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 182,
      "title": "Refactor enrichment store to class-based API with atomic writes and testing",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/182",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 183,
      "title": "Run all 4 enrichment agents across 42 assets (score: 84/100)",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/183",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 184,
      "title": "Fix audit issues, expand connections, public dashboard",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/184",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 185,
      "title": "Fix dashboard to load enrichment data on Vercel",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/185",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 186,
      "title": "Approve all 42 metadata and 42 content enrichments",
      "date": "2026-04-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/186",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 187,
      "title": "Integrate enrichment data into all public pages",
      "date": "2026-04-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/187",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 188,
      "title": "Phase C: Fix audit issues and add per-route OG images",
      "date": "2026-04-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/188",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 189,
      "title": "Fix OG image generation: remove edge runtime, import directly",
      "date": "2026-04-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/189",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 190,
      "title": "Add enrichment badges, reading time, and Cmd+K search",
      "date": "2026-04-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/190",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 191,
      "title": "Reorganize work section layout and add research papers strip",
      "date": "2026-04-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/191",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 192,
      "title": "Add blocks data model and API endpoints",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/192",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 193,
      "title": "Wire up auth: verify system and document setup",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/193",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 194,
      "title": "Redesign homepage with block-based grid layout",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/194",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 195,
      "title": "Update Google OAuth redirect URIs in environment config",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/195",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 196,
      "title": "Remove type display and simplify relationship label rendering",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/196",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 197,
      "title": "Fix OG image crash: wrap GridOverlay return in container element",
      "date": "2026-04-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/197",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 198,
      "title": "Add profile dropdown menu to auth button",
      "date": "2026-04-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/198",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 199,
      "title": "Add admin dashboard with user management and permissions system",
      "date": "2026-04-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/199",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 200,
      "title": "Add /admin page with permissions system",
      "date": "2026-04-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/200",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 201,
      "title": "Complete admin dashboard: enable New Project, Add Card, drag-to-reorder, and deduplicate requireAdmin",
      "date": "2026-04-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/201",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 202,
      "title": "Add inline admin editor to homepage",
      "date": "2026-04-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/202",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 203,
      "title": "Add game progress persistence with cloud sync",
      "date": "2026-04-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/203",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 204,
      "title": "Add \"Seeing Like an AI Company\" interactive essay with reader submissions",
      "date": "2026-04-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/204",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 205,
      "title": "Add drag-to-reorder and edit mode for block grid",
      "date": "2026-04-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/205",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 206,
      "title": "fix(api): Seventh Elder form 500s in production",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/206",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 207,
      "title": "Enable GitHub commits for blocks and enrichments on Vercel",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/207",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 208,
      "title": "Migrate blocks storage from JSON file to Supabase database",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/208",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 209,
      "title": "polish: add scale-up effect on drag for better lift-off feel",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/209",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 210,
      "title": "feat: add GraphMy Phase 1 meta-prompt library for PDF-to-knowledge-graph pipeline",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/210",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "infra"
    },
    {
      "number": 211,
      "title": "feat: add PDF extraction, --summary, and --open flags to GraphMy pipeline",
      "date": "2026-04-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/211",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "infra"
    },
    {
      "number": 212,
      "title": "Add GraphMy: PDF-to-knowledge-graph pipeline with web UI",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/212",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "infra"
    },
    {
      "number": 213,
      "title": "Add utilities hub with 15+ developer tools",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/213",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 214,
      "title": "Refactor PDF rendering to support scale changes and prevent race conditions",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/214",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 215,
      "title": "Fix import paths in GraphMy API routes",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/215",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 216,
      "title": "Improve error handling, accessibility, and UX across utilities",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/216",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 217,
      "title": "Add workspaces, sharing, auth, and analytics to GraphMy",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/217",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 218,
      "title": "Add dark mode theme support and new utility tools",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/218",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 219,
      "title": "Add 4 new utilities and refactor shared logic into libraries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/219",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 220,
      "title": "Replace CRSS exam prep content with personal portfolio site",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/220",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 221,
      "title": "Add 4 new utility tools and refactor shared logic into libraries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/221",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 222,
      "title": "Extract tool registry to server-safe utility module",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/222",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 223,
      "title": "Add metadata and documentation to tool registry entries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/223",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 224,
      "title": "Add metadata and documentation fields to tool registry entries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/224",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 225,
      "title": "Add metadata and documentation fields to tool registry entries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/225",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 226,
      "title": "Add metadata and documentation to tool registry entries",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/226",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 227,
      "title": "Refactor utilities routing to use dynamic [tool] parameter",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/227",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 228,
      "title": "Add session input hook and example context for utilities",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/228",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 229,
      "title": "Add examples, metadata, and related tools to utility pages",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/229",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 230,
      "title": "Add tag-based filtering to utilities page",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/230",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 231,
      "title": "Add session persistence and example context support to utilities",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/231",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 232,
      "title": "Add error boundary and self-host fonts for utilities",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/232",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 233,
      "title": "Add tag filtering to utilities grid and refactor example provider",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/233",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 234,
      "title": "Improve accessibility across utilities with WCAG compliance",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/234",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 235,
      "title": "Add print stylesheet and hide interactive elements from print",
      "date": "2026-04-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/235",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 236,
      "title": "Polish Task Up V3 for demo and mount at /task-up",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/236",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 237,
      "title": "Fix GraphMy upload failing with \"Internal server error\" on Vercel",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/237",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 238,
      "title": "Add 6 new utilities: Meta Tag Previewer, Favicon Generator, and more",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/238",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 239,
      "title": "fix(graphmy): restore pdf-parse in production",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/239",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 240,
      "title": "Rebuild /task-up as a product landing page with file previews",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/240",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 241,
      "title": "fix(graphmy): polyfill DOMMatrix/Path2D/ImageData for pdf-parse on Vercel",
      "date": "2026-04-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/241",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 242,
      "title": "fix(graphmy): use fileURLToPath in lib store/analytics for webpack ESM",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/242",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 243,
      "title": "fix(graphmy): pre-supply pdfjs-dist worker so Vercel uploads succeed",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/243",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 244,
      "title": "docs(graphmy): record 2026-04-12 prod schema application",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/244",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 245,
      "title": "fix(graphmy): unstick d3 loader and fix mobile layout",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/245",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 246,
      "title": "fix(graphmy): per-stage pipeline runner, sidebar tabs, and mobile viz polish",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/246",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 247,
      "title": "Consolidate CRSS course materials into unified file structure",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/247",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 248,
      "title": "Add career toolkit page for Aaron Wilcox",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/248",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 249,
      "title": "Add blog post generation and publishing system",
      "date": "2026-04-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/249",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 250,
      "title": "Update CRSS instructor guides to V5 with restructured content",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/250",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 251,
      "title": "Add blog enrichment data for Machine Mirror game article",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/251",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 252,
      "title": "Improve error handling and resilience for analysis failures",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/252",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 253,
      "title": "Add empty state message and improve error status handling",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/253",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 254,
      "title": "Refactor source metadata handling and improve JSON parsing",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/254",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 255,
      "title": "Fix GraphMy entity extraction and Supabase flush errors",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/255",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 256,
      "title": "Fix GraphMy extraction timeout on Vercel Hobby plan",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/256",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 257,
      "title": "Make GraphMy results 529-resilient with entity fallback",
      "date": "2026-04-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/257",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 258,
      "title": "Add second blog post: The Beautiful Unfinished planning essay",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/258",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 259,
      "title": "Add third blog post: Seeing Like an AI Company research post",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/259",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 260,
      "title": "Remove blocks/notebook feature and consolidate admin dashboard",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/260",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 261,
      "title": "Add author byline, about section, and improve blog metadata",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/261",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 262,
      "title": "Add hero SVG illustrations and update blog enrichment data",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/262",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 263,
      "title": "Add stakeholder map template for cross-team relationship planning",
      "date": "2026-04-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/263",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 264,
      "title": "Migrate CRSS question bank to dedicated Supabase project",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/264",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 265,
      "title": "Add CRSS QA v2 slice B: deterministic Layers 1, 2, 5 + schema",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/265",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 266,
      "title": "CRSS QA v2: deterministic pipeline + taxonomy normalization",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/266",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "infra"
    },
    {
      "number": 267,
      "title": "CRSS QA v2 — Layer 4a: tiered-ensemble classifier + §8 calibration",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/267",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 268,
      "title": "Ship Invisible Infrastructure #5: the two companion essays",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/268",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 269,
      "title": "Long Hold v2 cleanup: shared tokens + border normalization + CLAUDE.md reconciliation",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/269",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 270,
      "title": "Ship Invisible Infrastructure #5: the two companion essays",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/270",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 271,
      "title": "Claude/crss qa v2 system i yvtf",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/271",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 272,
      "title": "CRSS QA v2 — Layer 4b (rationale coherence) + prompt-caching fix",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/272",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "bugfix"
    },
    {
      "number": 273,
      "title": "Implement exam factory: multi-tenant item bank infrastructure",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/273",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 274,
      "title": "Exam factory v1: tenant the CRSS bank for multi-exam reuse",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/274",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 275,
      "title": "Fix apply_question_edit: drop rowtype variable, snapshot row as jsonb",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/275",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 276,
      "title": "Fix migration: unique named dollar-quote tags per PL/pgSQL block",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/276",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 277,
      "title": "Fix migration (4th try): dodge Supabase SQL editor's SELECT-INTO misread",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/277",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 278,
      "title": "Add scripts/factory/verify-migration.mjs — read-only post-migration checker",
      "date": "2026-04-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/278",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 279,
      "title": "CRSS 100-item cumulative final practice exam (WIP)",
      "date": "2026-04-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/279",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 280,
      "title": "Migrate runtime JSON reads to Supabase (enrichments, audits, projects)",
      "date": "2026-04-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/280",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 281,
      "title": "Heddle exam generator + /crss/bank Supabase hardening",
      "date": "2026-04-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/281",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 282,
      "title": "crss: add daily/weekly automation scripts + GH Actions crons",
      "date": "2026-04-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/282",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 293,
      "title": "Add Sora video library MVP (Project No More Sora)",
      "date": "2026-04-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/293",
      "surface": "sora",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 294,
      "title": "Switch /sora to repo-backed workflow (manifest + public/sora/videos)",
      "date": "2026-04-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/294",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 295,
      "title": "crss: disable weekly corpus-checks step pending schema rewrite",
      "date": "2026-04-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/295",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 297,
      "title": "crss: rewrite corpus-checks.mjs against multi-tenant schema",
      "date": "2026-04-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/297",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 299,
      "title": "crss: fix blueprint_weights targets — real domain names + 5pp tolerance",
      "date": "2026-04-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/299",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "bugfix"
    },
    {
      "number": 300,
      "title": "docs: comprehensive codebase review",
      "date": "2026-04-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/300",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 311,
      "title": "Add CI workflow with lint, test, and build gates",
      "date": "2026-04-24",
      "author": "Copilot",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/311",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 312,
      "title": "ci: add @claude-mention agent workflow",
      "date": "2026-04-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/312",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 313,
      "title": "ci: add flat ESLint config so `next lint` is non-interactive",
      "date": "2026-04-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/313",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 314,
      "title": "ci: auto-assign every open issue to Copilot + Claude Code",
      "date": "2026-04-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/314",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 315,
      "title": "Gate Door County Planner behind Google sign-in for family testing",
      "date": "2026-04-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/315",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 316,
      "title": "Sync Door County Planner state across devices via Supabase",
      "date": "2026-04-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/316",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 317,
      "title": "land trip tracker phase 2: cookie auth + supabase api for /ukraine",
      "date": "2026-04-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/317",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 318,
      "title": "ukraine tracker phase 1: build mobile ui from claude design handoff",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/318",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 319,
      "title": "Remove root-level orphan files (#302)",
      "date": "2026-04-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/319",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 320,
      "title": "strip site-wide meta-gamification layer",
      "date": "2026-04-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/320",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 321,
      "title": "consolidate root spec docs into docs/ with status badges (closes #309)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/321",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 322,
      "title": "Add alpha() token helper; sweep demos cluster (issue #308)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/322",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 323,
      "title": "ship Auth.js v5 phase 1 (closes #303)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/323",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 324,
      "title": "Add per-IP rate limiting to public POST endpoints (#307)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/324",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 325,
      "title": "sweep cards cluster to alpha() helper",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/325",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 326,
      "title": "ship per-user game-progress persistence (PLAN.md Phase 2)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/326",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 327,
      "title": "expand API test coverage for Supabase write paths (#306)",
      "date": "2026-04-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/327",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 328,
      "title": "Door County Planner multi-user phase 1 (per-row schema + attribution + realtime)",
      "date": "2026-04-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/328",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 330,
      "title": "ship Door County profile pages + reusable site-wide profile hub (#310)",
      "date": "2026-04-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/330",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 331,
      "title": "claude: adopt .claude/ workflow (agents, commands, skills, rules)",
      "date": "2026-05-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/331",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 332,
      "title": "fix: restore homepage posts via JSON seed fallback",
      "date": "2026-05-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/332",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 333,
      "title": "claude: correct factual errors in .claude/ workflow (PR #331 follow-up)",
      "date": "2026-05-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/333",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 334,
      "title": "door-county-planner: ship issue #310 leftovers",
      "date": "2026-05-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/334",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 335,
      "title": "door-county-planner: surface errors, sign-out, status, attribution",
      "date": "2026-05-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/335",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 336,
      "title": "Door County planner: five deferred follow-ups",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/336",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 337,
      "title": "Fix Door County planner reactions/comments save (apply v2 schema; drop v1)",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/337",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 338,
      "title": "ukraine: realtime sync + trip schema snapshot",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/338",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 356,
      "title": "ukraine: phase 1 auth UX (name picker, identity menu, edit attribution)",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/356",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 357,
      "title": "Add /utilities homepage post + register tool-utilities-hub asset",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/357",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 358,
      "title": "ukraine: phase 2 photos (bucket, dispatch upload, stop hero)",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/358",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 359,
      "title": "fix: return Door County visitors to the planner after Google sign-in",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/359",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 360,
      "title": "feat(door-county-planner): let signing adults add custom activities",
      "date": "2026-05-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/360",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 362,
      "title": "feat(admin): wire Door County member metadata into Users tab",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/362",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 363,
      "title": "ukraine: swap shared-password cookie auth for NextAuth (DCP-style)",
      "date": "2026-05-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/363",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 364,
      "title": "ukraine: wire AppHeader sign-out to NextAuth",
      "date": "2026-05-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/364",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 365,
      "title": "ukraine: stamp updated_at on stop PATCH so attribution is truthful",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/365",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 366,
      "title": "crss: reviewer guide for Gina (summer 2026 weeks 2-6)",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/366",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 367,
      "title": "Add /heddle public landing page",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/367",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 368,
      "title": "crss: confirm-week script for serializing SME sign-off",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/368",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 369,
      "title": "ukraine: finish dispatch photo acceptance from #343",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/369",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 370,
      "title": "house: add unlisted sitter info page",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/370",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 371,
      "title": "heddle: self-serve sign-up + login at /heddle/login",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/371",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 372,
      "title": "house: v2 — TOC, smart links, copy buttons, mobile polish",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/372",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 373,
      "title": "ukraine: trip_day stamping + field-specific empty prompts (#346, #347)",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/373",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 374,
      "title": "ukraine: search & filter on dispatches (#350)",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/374",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 375,
      "title": "door-county: derive signing adults from permissions.json (#361)",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/375",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 376,
      "title": "ukraine: dispatch edit & delete (#345)",
      "date": "2026-05-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/376",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 377,
      "title": "ukraine: optimistic dispatches/stop edits + trip_config table",
      "date": "2026-05-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/377",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 378,
      "title": "ukraine: map view (#349) and shared packing list (#352)",
      "date": "2026-05-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/378",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 380,
      "title": "house: fill in sitter info for Katie's 2-5pm sit",
      "date": "2026-05-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/380",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 381,
      "title": "ukraine: fix 500 on first-time Google sign-in (apply next_auth schema)",
      "date": "2026-05-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/381",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 382,
      "title": "ukraine: expose next_auth schema to PostgREST so Google sign-in actually works",
      "date": "2026-05-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/382",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 383,
      "title": "heddle: add launch framework docs",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/383",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 384,
      "title": "heddle: mirror docs to GitHub Issues with drift-check guardrails",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/384",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 414,
      "title": "heddle: sitemap + robots for /heddle, no-index dashboard (M1-CONT-01)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/414",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 423,
      "title": "crss: stage Fall 2026 16-week course config (Gina)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/423",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 424,
      "title": "crss: rebalance Fall 2026 HR budget so validate.py is green",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/424",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 425,
      "title": "crss: ship Fall 2026 release (stages 4-6)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/425",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 426,
      "title": "crss: add semester selector to /crss/syllabus (Summer ↔ Fall 2026)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/426",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 427,
      "title": "crss: fix Fall 2026 syllabus week click crash",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/427",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "bugfix"
    },
    {
      "number": 428,
      "title": "crss: finish Fall 2026 rollout (syllabus PDF, diagnostic, semester-aware UI)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/428",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 429,
      "title": "crss: audit + tighten Fall 2026 syllabus meta (thematic module remapping)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/429",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 430,
      "title": "heddle: exam_members + exam_blueprints, replace admin-password auth",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/430",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 431,
      "title": "crss: scaffold Spring 2027 semester (verbatim copy of Fall 2026)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/431",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 432,
      "title": "heddle: loadBlueprint() reads from exam_blueprints + mirror M2-* milestones",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/432",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 441,
      "title": "heddle: lift item bank to /heddle/exams/[slug]/bank (M2-DASH-06)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/441",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 442,
      "title": "heddle: lift pipeline runner to /heddle/exams/[slug]/pipeline (M2-DASH-07)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/442",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 443,
      "title": "heddle: single 100-item final + DOCX zip end-to-end (M2-DASH-08)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/443",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 444,
      "title": "heddle: dashboard rewrite + exam home — Exams I own (M2-DASH-09)",
      "date": "2026-05-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/444",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 445,
      "title": "heddle: semester orchestrator + public /syllabus (foundation)",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/445",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 446,
      "title": "heddle: orchestrator step 2 — Claude-drafted syllabus + per-week editor",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/446",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 447,
      "title": "heddle: orchestrator step 3 — bank lock + select.py deploy_eligible gate",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/447",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 448,
      "title": "heddle: orchestrator step 4 — pipeline dispatch from semester",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/448",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 449,
      "title": "heddle: orchestrator step 5 — per-week review + approve/reject",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/449",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 450,
      "title": "heddle: orchestrator step 6 — final exam attached to semester",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/450",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 451,
      "title": "heddle: orchestrator step 7 — publish + public /syllabus viewer",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/451",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 452,
      "title": "heddle: bank sync + deploy_eligible gate end-to-end + /crss/syllabus redirect",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/452",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 453,
      "title": "heddle: Supabase Storage upload + course_artifacts + viewer prefers Storage URLs",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/453",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 454,
      "title": "heddle: surface legacy Summer/Fall 2026 on CRSS orchestrator index",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/454",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 455,
      "title": "heddle: add 'How it works' section for the full semester orchestrator",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/455",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 456,
      "title": "heddle: in-page product tour with eight live UI frames",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/456",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 457,
      "title": "heddle: question performance tracking for the item bank",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/457",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 458,
      "title": "heddle: in-product item authoring (manual + AI draft)",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/458",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 461,
      "title": "heddle: surface \"+ New Item\" entry point on Item Bank page",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/461",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 462,
      "title": "docs(heddle): regen PRD for Boyle with current feature surface",
      "date": "2026-05-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/462",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 463,
      "title": "heddle: rate-limit /api/heddle/inquiries (per-IP + per-email)",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/463",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 464,
      "title": "heddle: add Privacy + ToS pages (M1-LEGAL-01)",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/464",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 465,
      "title": "feat(ukraine): offline cache + queued dispatches service worker",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/465",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 466,
      "title": "docs(heddle): mark M2-DASH-06..09 shipped — close stale issues #437–#440",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/466",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 467,
      "title": "heddle: dashboard Inquiries + Access sections (M1-DASH-02 / #392)",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/467",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 468,
      "title": "docs(ukraine): capture Gina's real itinerary + open TBDs",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/468",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "docs"
    },
    {
      "number": 469,
      "title": "feat(heddle): guard against Tailwind class leaks under /src/app/heddle/**",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/469",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 470,
      "title": "docs(heddle): land RUNBOOK.md for M2-OPS-01",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/470",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 471,
      "title": "feat(heddle): honeypot bot trap on inquiries form (closes #417)",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/471",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 472,
      "title": "docs(heddle): scope 3 UI/UX milestones (M1-A11Y-01 / M1-DASH-03 / M1-LEAD-01)",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/472",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 476,
      "title": "heddle: mark M2-DASH-03 done in LAUNCH-PLAN",
      "date": "2026-05-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/476",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 477,
      "title": "heddle: phase 1 polish — a11y, skeletons, validation (#473 #474 #475)",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/477",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 478,
      "title": "heddle: warn on missing auth provider env vars at boot (#411)",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/478",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 479,
      "title": "heddle: close M1-A11Y-01 + ship M1-DASH-03 AccessSection empty state",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/479",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 480,
      "title": "heddle: tighten DemoForm + login validation UX (#475)",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/480",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 481,
      "title": "blog: add Invisible Architecture post to home feed",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/481",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 482,
      "title": "docs: add blog pipeline overview",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/482",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "docs"
    },
    {
      "number": 483,
      "title": "polish: home feed cards and post-body rendering",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/483",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 484,
      "title": "feat(admin): /admin/blog CRUD editor for home-page posts",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/484",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 495,
      "title": "feat(admin/blog): live markdown preview + drag-drop block editor",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/495",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 496,
      "title": "feat(door-county): chatroom schema (#490) + promote kids to signing members (#491)",
      "date": "2026-05-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/496",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 497,
      "title": "feat(door-county): [3/5+4/5] chat collections + photo upload",
      "date": "2026-05-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/497",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 498,
      "title": "feat(door-county): [5/5] chat tab UI — message list, composer, reactions",
      "date": "2026-05-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/498",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 499,
      "title": "feat(blog-editor): upload hero image to Supabase Storage (closes #487)",
      "date": "2026-05-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/499",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 501,
      "title": "fix(door-county): create chat tables in prod + allow photo-only posts",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/501",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 502,
      "title": "Blog editor v2: drafts, autosave, and per-save revision history",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/502",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 503,
      "title": "Blog editor v2: image/quote/callout/code blocks + AI rewrite/draft",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/503",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 504,
      "title": "Rewrite the six blog posts: richer blocks, sharper hooks, personal voice",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/504",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 505,
      "title": "docs(heddle): close 4 shipped-mitigation risks in the register",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/505",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 506,
      "title": "Reframe blog authorship voice from hand-built to directed",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/506",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 507,
      "title": "docs(heddle): add canonical master PRD (current + future state)",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/507",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 508,
      "title": "docs(heddle): place UX epic + agent spec, wire PRD refs, mirror epic into LAUNCH-PLAN",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/508",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 526,
      "title": "test(heddle): fix milestone-count assertion broken by UX epic mirror",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/526",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "bugfix"
    },
    {
      "number": 527,
      "title": "build(heddle): run parse-docs test in pre-commit on heddle doc edits",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/527",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 528,
      "title": "feat(heddle): director-facing vocabulary pass + hide raw item IDs (UX-001)",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/528",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 529,
      "title": "Recoverable error states across Heddle (UX-002)",
      "date": "2026-05-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/529",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 530,
      "title": "docs(auth): codify Google + magic link as default login provider set (M1-UX-03)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/530",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 531,
      "title": "Non-linear orchestrator step navigation (UX-004)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/531",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 532,
      "title": "docs(heddle): close M1-UX-02 via issue sync (UX-002)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/532",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 535,
      "title": "Async-operation UX for AI drafts (UX-005 / M2-UX-05)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/535",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 536,
      "title": "Make the Heddle orchestrator self-teaching (M2-UX-06)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/536",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 537,
      "title": "Heddle in-app empty states + first-run checklist (M2-UX-07)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/537",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 538,
      "title": "Add blueprint-diff surface for Heddle exams (M2-UX-08)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/538",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 539,
      "title": "Add per-exam Team management page to Heddle workspace (UX-009)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/539",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 540,
      "title": "Add \"Needs your attention\" surface + email digest (M2-UX-10)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/540",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 541,
      "title": "Add CSV column-mapping step to Heddle performance importer (M2-UX-11)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/541",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 542,
      "title": "Decide per-surface mobile strategy (UX-012 / M2-UX-12)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/542",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 543,
      "title": "Reusable consequence-preview pattern for Heddle write actions (M2-UX-13)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/543",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 544,
      "title": "Add typed, role-aware command registry for Heddle (M3-UX-14)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/544",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 545,
      "title": "Add heddle_events shared event substrate (M3-UX-19 / UX-019)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/545",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 546,
      "title": "Add menu primitive + registry-backed overflow menus for Heddle (M3-UX-15)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/546",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 547,
      "title": "Add Cmd-K omnibar command palette for Heddle (M3-UX-16)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/547",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 548,
      "title": "Add in-product AI agent \"Heddle\" (docked, action-grounded) (M3-UX-17)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/548",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 549,
      "title": "Finish director-vocabulary pass on the semester builder (M1-UX-01)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/549",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 550,
      "title": "Add job-based AI usage budget (M3-UX-18 / UX-018)",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/550",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 551,
      "title": "Refresh Heddle marketing copy + guided tour for the AI feature layer",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/551",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 552,
      "title": "Surface suggested actions in Heddle omnibar and agent dock",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/552",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 553,
      "title": "Command registry v1: extract a shared core, add the main-site registry",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/553",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 554,
      "title": "Command registry v2: omnibar — surface registry commands in site search",
      "date": "2026-05-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/554",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 555,
      "title": "Command registry v2: registry-driven Nav + public concierge AgentDock",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/555",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 556,
      "title": "Command registry v3: footer sitemap + richer concierge tools",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/556",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 557,
      "title": "Add suggested-action chips to the site concierge",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/557",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 558,
      "title": "Unify the Cmd-K omnibar and the AI concierge into one surface",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/558",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 559,
      "title": "Spring cleaning: remove dead code, stale drafts, tighten config",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/559",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 560,
      "title": "perf: optimize research paper figures via next/image",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/560",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 561,
      "title": "Add unified cross-content homepage feed",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/561",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 562,
      "title": "Make homepage feed stickier: featured lead, type filters, richer cards",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/562",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 563,
      "title": "Refresh mobile site nav into a hamburger panel",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/563",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 564,
      "title": "Sora: make R2 the live source for /sora with presigned large-file uploads",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/564",
      "surface": "sora",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 565,
      "title": "Add edge-card system: typed content relationships",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/565",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 566,
      "title": "Add Ukraine trip intake bot to capture open trip details",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/566",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 567,
      "title": "Hide site Ask/Search pill on app routes with their own bottom UI",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/567",
      "surface": "search",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 568,
      "title": "Apply Gina's Ukraine intake to the live trip",
      "date": "2026-05-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/568",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 569,
      "title": "Add Ukraine trip safety check-in feature",
      "date": "2026-05-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/569",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 570,
      "title": "Accuracy pass: Josephine TX collections submission (Batch JOSEPHINE-20260527)",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/570",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 571,
      "title": "Auth-gated Josephine collections review console",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/571",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 572,
      "title": "Set Patti Brooks's real email for collections access",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/572",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 573,
      "title": "Josephine console: guided wizard, court login, doc serving, finish flow",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/573",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "docs"
    },
    {
      "number": 574,
      "title": "Redaction --src default + Josephine admin runbook",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/574",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 575,
      "title": "Resend: accept RESEND_API_KEY + idempotency keys on Josephine emails",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/575",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 576,
      "title": "Josephine: case lookup info in wizard + browser doc redaction",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/576",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "docs"
    },
    {
      "number": 577,
      "title": "Josephine: Gina access + full-batch review (paged confirm) for Patti",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/577",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 578,
      "title": "Josephine: reusable batch reset + honest notify-failure UI",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/578",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 579,
      "title": "Add reviewer onboarding email for Josephine collections",
      "date": "2026-05-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/579",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 580,
      "title": "Josephine TX: polish pass — readable dates, shared court theme, data-layer tests",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/580",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "test"
    },
    {
      "number": 581,
      "title": "Josephine TX docs: PDF download, download-all, and an in-app reader",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/581",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "docs"
    },
    {
      "number": 582,
      "title": "Fix josephine --test send when AUTH_ADMIN_EMAILS is unset",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/582",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 583,
      "title": "Fix Josephine doc viewer 500: externalize pdfkit + jsdom",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/583",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 584,
      "title": "Switch Patti's onboarding email to login-page sign-in",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/584",
      "surface": "login",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 585,
      "title": "Fix persistent Josephine doc 500s: lazy PDF stack + drop jsdom",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/585",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 586,
      "title": "Add admin email console to CourtCollect / Josephine",
      "date": "2026-05-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/586",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 588,
      "title": "Wire up StoryScope toolkit: CI, essay route, validation",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/588",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 589,
      "title": "StoryScope: raise client timeout for large builds + publish the essay",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/589",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 590,
      "title": "Add StoryScope companion utilities to /utilities",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/590",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 591,
      "title": "StoryScope companion pack: homepage, game, narration, blog post",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/591",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 592,
      "title": "Add four utilities: JSON↔YAML, secret generator, .env inspector, Bauhaus tokens",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/592",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 593,
      "title": "Expand \"Human or AI?\" game deck",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/593",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 594,
      "title": "Add strata: git-history mining agent organization",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/594",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 595,
      "title": "Add /strata orchestration UI — actually runs the agents, streams output live",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/595",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 596,
      "title": "Run Strata on prod — dispatch a GitHub Actions runner, poll status, show the report",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/596",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 597,
      "title": "Fix silent Games-section loss in prod Strata runs",
      "date": "2026-05-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/597",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "bugfix"
    },
    {
      "number": 598,
      "title": "Add essay-ready Strata digest + honest biography birth",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/598",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 599,
      "title": "Add three utilities: Markdown previewer, JSONPath explorer, cURL → fetch",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/599",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 600,
      "title": "strata: full-history run report + essay-ready digest",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/600",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 601,
      "title": "strata: re-author essays 01 and 05 against real history",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/601",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 602,
      "title": "strata: author essays 03, 08, 10 + digest series block",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/602",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 603,
      "title": "strata: author the final five essays — series complete (02, 04, 06, 07, 09)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/603",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 604,
      "title": "Wire Strata series into /essays/strata + homepage blog post",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/604",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 605,
      "title": "Add lit review: teaching seniors vibe coding",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/605",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 606,
      "title": "Add senior-accessibility first-session cheat sheet",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/606",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 607,
      "title": "strata: wire the Museum and the City into the live site",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/607",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 608,
      "title": "strata: add the Graveyard + a live Organization as 3rd and 4th companions",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/608",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 609,
      "title": "strata: Atlas — the \"extract the why\" team (PRD + v1 agent)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/609",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "refactor"
    },
    {
      "number": 610,
      "title": "Add session-one lesson plan and pre/post STAM survey for seniors",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/610",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 611,
      "title": "strata: ship the Atlas Oracle surface (5th companion)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/611",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 612,
      "title": "strata: PRD for Compass, the \"where you're heading\" team",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/612",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 613,
      "title": "strata: Compass — the evidence board (agent + surface, 6th companion)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/613",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 614,
      "title": "strata: weekly self-refresh as a PR (background automation)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/614",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 615,
      "title": "strata: master Product Requirements Document",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/615",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 616,
      "title": "blog: bring the Strata homepage post current",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/616",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 617,
      "title": "Add /ai-class hub: QR landing page, gallery, admin, PWA",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/617",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 618,
      "title": "Fix /ai-class crash: use supabaseAdmin proxy directly",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/618",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 619,
      "title": "blog: add a Strata hero image",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/619",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 620,
      "title": "docs(mail): Shared Mail PRD",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/620",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 621,
      "title": "strata: serve the specs on-site + link everything from the homepage post",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/621",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 622,
      "title": "feat(mail): Phase 1 — capture & triage MVP",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/622",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 623,
      "title": "feat(mail): Phase 1 build — schema applied + multi-image batch pipeline",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/623",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "infra"
    },
    {
      "number": 624,
      "title": "feat(mail): finish Phase 1 — review UI, split/merge, due-soon lens + digest, per-group .ics",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/624",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 625,
      "title": "Add AI Class starter scaffold (day-one celebration page)",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/625",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 626,
      "title": "fix(mail): resize + chunk uploads to beat the 413 body-size limit",
      "date": "2026-05-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/626",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 627,
      "title": "fix(mail): feed card title + timezone-safe date-only deadlines",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/627",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 628,
      "title": "Add in-hub vibe-coding builder at /ai-class/build",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/628",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 629,
      "title": "feat(mail): Phase 2 — per-item reminders, snooze, mark-done-from-email",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/629",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 630,
      "title": "Rate-limit the public /api/ai-class/build endpoint",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/630",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 631,
      "title": "feat(mail): Phase 2 remainder — realtime + PWA/offline",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/631",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 632,
      "title": "feat(mail): Phase 3 — Google Calendar sync (shared calendar)",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/632",
      "surface": "calendar",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 633,
      "title": "feat(mail): Phase 3 — Google Drive archival of scans",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/633",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 634,
      "title": "refactor(mail): polish pass — correctness, consistency, UX, a11y",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/634",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "refactor"
    },
    {
      "number": 635,
      "title": "fix(mail): split re-parses all pages, not just the cover",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/635",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 636,
      "title": "Add Lawrence Manor TV control panel (/tv)",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/636",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 637,
      "title": "Polish /tv panel for mobile",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/637",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 638,
      "title": "feat(mail): richer extraction, copyable facts, vendor/account threading",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/638",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 639,
      "title": "Fix getActionGroup import in mail capability-link route",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/639",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 640,
      "title": "feat(mail): per-vendor view with running amount history",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/640",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 641,
      "title": "feat(mail): smart archive — \"safe to recycle\" lens + bulk archive",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/641",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 642,
      "title": "feat(mail): triage focus mode — guided \"Needs you\" decision queue",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/642",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 643,
      "title": "feat(mail): retention guidance + Keep shelf",
      "date": "2026-06-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/643",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 644,
      "title": "feat(mail): bill intelligence — priority, anomaly, autopay, mute-a-vendor",
      "date": "2026-06-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/644",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 645,
      "title": "Refresh Markdown → PDF utility (GFM parsing, PDF options, mobile UX)",
      "date": "2026-06-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/645",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 646,
      "title": "Make /utilities an installable, offline-capable PWA",
      "date": "2026-06-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/646",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 647,
      "title": "SEO pass: complete sitemap, harden robots, fix canonical + structured-data consistency",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/647",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 648,
      "title": "Add /search results route + wire Google sitelinks SearchAction",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/648",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 649,
      "title": "Polish Markdown → PDF: live page/word stats, save confirmation, reset",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/649",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 650,
      "title": "Level-up tools: SVG Optimizer persistence + Try-it examples",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/650",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 651,
      "title": "a11y: restore keyboard focus ring, harden reduced-motion, index ARIA",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/651",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 652,
      "title": "Add \"fork me\" sticker to each /utilities tool",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/652",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 653,
      "title": "Add /linkedin content studio: compose, schedule, AI assist, auto-publish",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/653",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 654,
      "title": "Phase 0: instrument /utilities traffic (Vercel Analytics + Search Console)",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/654",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 655,
      "title": "Harden the utilities \"fork me\" sticker (v2)",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/655",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 656,
      "title": "Harden /linkedin studio (v2): hashtag-safe escaping, permalink + cron hardening",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/656",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 657,
      "title": "Phase 1a: funnel homepage feed + concierge search into /utilities",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/657",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 658,
      "title": "Add blog post: a Fork button on every utility (essay + screenshots)",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/658",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 659,
      "title": "LinkedIn strategy layer: onboarding quiz + on-strategy Ideas generator",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/659",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 660,
      "title": "Phase 1b: syndicate tools in RSS/Atom + blog→tools rail",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/660",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 661,
      "title": "Phase 2a: per-tool SEO keywords for all 41 utilities",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/661",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 662,
      "title": "Register two essay assets so the bulk enrichment seed runs green",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/662",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 663,
      "title": "Phase 2c: distinct OG images for utility tool pages",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/663",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 664,
      "title": "Phase 2b: SERP-length meta descriptions for top-10 tools",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/664",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 665,
      "title": "Build the LinkedIn content orchestrator at /linkedin",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/665",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 666,
      "title": "Fix Ask/Search pill collision on /utilities + add global footer",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/666",
      "surface": "search",
      "discipline": "ai-agent-infra",
      "changeType": "bugfix"
    },
    {
      "number": 667,
      "title": "Add \"Add to Home Screen\" install prompt to the /ukraine PWA",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/667",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 668,
      "title": "Utilities PWA v2: controlled updates, app shortcuts, offline UX",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/668",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 669,
      "title": "Raise LinkedIn Drafter token cap + recover prose-wrapped JSON",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/669",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 670,
      "title": "Door County planner: payments ledger + budget UI polish, hide Ask/Search pill",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/670",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 671,
      "title": "Add email magic-link sign-in for the Door County planner",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/671",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 672,
      "title": "Add manual GitHub Actions workflow to send the Door County login-help email",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/672",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 673,
      "title": "Durable \"enter\" link: tap once to adopt the Door County profile",
      "date": "2026-06-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/673",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 674,
      "title": "Owner-only endpoint to issue Door County enter links (prod-signed)",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/674",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 675,
      "title": "Make /door-county-planner an installable, offline-capable PWA",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/675",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 676,
      "title": "Door County PWA v2: controlled updates, offline banner, manifest shortcuts",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/676",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 677,
      "title": "docs: add the Phase 3 utilities growth cadence checklist",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/677",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 678,
      "title": "Add comments and emoji reactions to /ukraine dispatches",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/678",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 679,
      "title": "v2: threaded replies, comment editing, notifications + \"new\" badge for /ukraine dispatch interactions",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/679",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 680,
      "title": "Door County profile: reflect settle-up payments",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/680",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 681,
      "title": "Harden + polish /ukraine dispatch interactions",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/681",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 682,
      "title": "Add \"both awake\" call window to /ukraine",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/682",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 683,
      "title": "Last Take: fix MiniNim win/lose inversion + harden Nim logic",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/683",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 684,
      "title": "Harden + polish Survivor's Circle (Josephus game)",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/684",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 685,
      "title": "Block-level copy + send-to controls on /ukraine",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/685",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 686,
      "title": "fix(mail): give iPhone capture three clear paths — camera, photos, files",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/686",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 687,
      "title": "Ephemeral words-of-affirmation placeholders",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/687",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 688,
      "title": "fix(ukraine): make \"Send to…\" open the share sheet instead of silently copying",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/688",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 689,
      "title": "ukraine: hover-to-translate Ukrainian phrases in dispatches",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/689",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 690,
      "title": "fix(ukraine): make \"Send to…\" work in the desktop PWA, not just mobile",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/690",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 691,
      "title": "refactor(claude): lift shared Claude client into src/lib/claude",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/691",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 692,
      "title": "feat(ukraine): editable words-of-affirmation notes editor (/ukraine/notes)",
      "date": "2026-06-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/692",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 693,
      "title": "fix(supabase): clear the Supabase security advisor (RLS + function hardening)",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/693",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 694,
      "title": "Add RECURRENCE — a 2.5D Three.js tower defense game",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/694",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 695,
      "title": "fix(supabase): pin next_auth.uid + capture trip_set_updated_at (advisor fully green)",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/695",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 696,
      "title": "Copy /ukraine blocks as an image, not text",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/696",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 697,
      "title": "v2: capture /ukraine blocks as literal WYSIWYG screenshots",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/697",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 698,
      "title": "v3: harden the /ukraine block screenshot capture",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/698",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 699,
      "title": "ukraine: make dispatch photo picker device-agnostic (not camera-only)",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/699",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 700,
      "title": "ukraine: polish + harden the dispatch photo picker",
      "date": "2026-06-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/700",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 701,
      "title": "Fix RECURRENCE 3D: enemies and projectiles were invisible (frustum culling)",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/701",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 702,
      "title": "Main site-wide PWA on a shared, extracted PWA layer",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/702",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 703,
      "title": "Recurrence: played onboarding, codex on demand, and HUD clarity",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/703",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 704,
      "title": "Redesign the Ask/Search trigger as a collapsible Bauhaus nub",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/704",
      "surface": "search",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 705,
      "title": "PWA core v3: navigation preload, install precache, bounded API cache",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/705",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 706,
      "title": "PWA core v4: save-for-offline durable reading",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/706",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 707,
      "title": "Ask/Search nub v2: gradient ring, primitives mark, scroll-quiet, touch state",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/707",
      "surface": "search",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 708,
      "title": "PWA core v5: gated Web Push foundation + Mail consumer",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/708",
      "surface": "mail",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 709,
      "title": "Recurrence v8: route the HUD down the specificity ladder (report-driven)",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/709",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 710,
      "title": "Blog post: \"A control that learned to get out of the way\"",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/710",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 711,
      "title": "Add homepage post: \"Five generations of a PWA layer\"",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/711",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 712,
      "title": "Recurrence: declutter the start screen (kill the text wall)",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/712",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 713,
      "title": "Fix: Supabase-backed content PRs not reaching the live site",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/713",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 714,
      "title": "Silence seeder ESM warning + Recurrence QA (restore design doc)",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/714",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "docs"
    },
    {
      "number": 715,
      "title": "Ukraine: server-render initial trip state so /ukraine loads on slow links",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/715",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 716,
      "title": "Recurrence: mobile-first contextual UI redesign",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/716",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 717,
      "title": "Ukraine: edge-cacheable public snapshot (no GPS) for refresh reads",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/717",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 718,
      "title": "Recurrence mobile: fill the viewport + fix inspector truncation",
      "date": "2026-06-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/718",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 719,
      "title": "Recurrence mobile v2: tap-a-tile-to-build, haptics, safe-area",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/719",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 720,
      "title": "Recurrence: fix install-card overlap + 2D arc() crash; add screenshot QA",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/720",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 721,
      "title": "Recurrence: in-game accessibility toggles (UI playbook Stage 4)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/721",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 722,
      "title": "Wire up the playtest games QA harness and gate",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/722",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 723,
      "title": "Recurrence: long-press tooltips for glyph controls (UI playbook Phase 2)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/723",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 724,
      "title": "Recurrence: radial build menu + anchor/node silhouette echo (UI playbook Phase 3)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/724",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 725,
      "title": "Add stale-game advisory mode to the playtest harness",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/725",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 726,
      "title": "weather: plain-language rain outlook (\"if & when will it rain\")",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/726",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 727,
      "title": "Add /receipts: household receipt scanner with vision parse + spending rollups",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/727",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 728,
      "title": "Add YouTube lyrics extraction script",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/728",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 729,
      "title": "Design /money umbrella + ship shared spending-category taxonomy",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/729",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 734,
      "title": "weather: UI + code polish pass",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/734",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 735,
      "title": "Suppress the search pill + install prompt on all game routes",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/735",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 736,
      "title": "Money Phase 1 — transaction ledger spine + Overview",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/736",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 737,
      "title": "Recurrence: play-test fixes (coach placement, radial edge-clamp, guide tag)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/737",
      "surface": "recurrence",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 738,
      "title": "Fix React #418 hydration crashes in Globe Trekkers and Human or AI",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/738",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 739,
      "title": "Money Phase 2 — Spending lens (trend + category/vendor breakdown)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/739",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 740,
      "title": "weather: declutter warnings, show rain window + rain-today",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/740",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 741,
      "title": "Money Phase 3 — Budget envelope editor",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/741",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 742,
      "title": "playtest smoke: inspect WebGL after the game starts, not at the cover screen",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/742",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 743,
      "title": "weather: surface near-term ~30% rain chances (fix card vs reality conflict)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/743",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 744,
      "title": "Contrast & legibility polish on stale games",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/744",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 745,
      "title": "feat(utilities): SQL viewer, formatter, and splitter tools",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/745",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 746,
      "title": "refactor(utilities): harden SQL suite on a shared tokenizer (v2)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/746",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 747,
      "title": "Fold receipts into /money + bridge it to the ledger",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/747",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 748,
      "title": "Money Phase 4 — Bills lens (read from Mail, pay → ledger)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/748",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 749,
      "title": "feat(utilities): SQL Pre-flight Check tool (v3)",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/749",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 750,
      "title": "blog: \"Will it rain?\" post on the /weather rain-outlook improvements",
      "date": "2026-06-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/750",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 751,
      "title": "blog: mp4 fallback for the weather reel + move media kit to scripts/blog-media",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/751",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 752,
      "title": "blog: Machine Mirror gameplay reel + extract shared blog-media engine",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/752",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "refactor"
    },
    {
      "number": 753,
      "title": "Add /money/ingest: bulk photo-dump triage into the ledger",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/753",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 754,
      "title": "chore(enrichment): full pipeline SEO/metadata refresh (local, unseeded)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/754",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "chore"
    },
    {
      "number": 755,
      "title": "blog: \"tools in motion\" reel for the /utilities post",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/755",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 756,
      "title": "Fix /money/ingest report undercounting past 1000 rows",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/756",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 757,
      "title": "Rules Stack: public civic corpus + address lookup + cited agent (Pingree Grove & Cambridge Lakes)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/757",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 758,
      "title": "Route mail/bills/to-dos into the Mail pipeline from /money/ingest",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/758",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "infra"
    },
    {
      "number": 759,
      "title": "Add semantic embeddings (vectorize) to /money/ingest",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/759",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 760,
      "title": "Rules Stack v2: broaden corpus retrieval recall (OR-tsquery fallback + literal phrasing)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/760",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 761,
      "title": "Rules Stack: UI polish (authority ladder, sources panel, deep links) + hardening",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/761",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 762,
      "title": "fix(blog): restore the /weather post + its missing enrichment_assets row",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/762",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 763,
      "title": "Hands-off drain worker for /money/ingest (Bearer-gated batch loops)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/763",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 764,
      "title": "Rules Stack Phase B: SEO deep pages (/rules/[topic], /rules/area/[n]) + Village PDF/CMS ingestion",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/764",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 765,
      "title": "Add the /money/ingest work pile — a searchable junk queue",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/765",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 766,
      "title": "Rules Stack Phase D-b: governing documents (public directory + private gated archive)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/766",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 767,
      "title": "Fix embed: batch images per Voyage request + resilient drain",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/767",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 768,
      "title": "Rules Stack: pgvector semantic search (hybrid retrieval, env-gated on VOYAGE_API_KEY)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/768",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 769,
      "title": "Rules Stack: Graph tab — the authority structure rendered (deterministic SVG, no deps)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/769",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "chore"
    },
    {
      "number": 770,
      "title": "Rules Stack: true geocoding — address box + in-area check + map pin (key-free Census)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/770",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 771,
      "title": "Rules Stack Phase D-a: Kane County LRS recorded-declaration scraper (Playwright)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/771",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 772,
      "title": "Add knowledge graph over the /money/ingest work pile",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/772",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 773,
      "title": "Rules Stack: wide v2 polish pass (agent docs tool, About refresh, a11y, dedup, SEO)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/773",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "docs"
    },
    {
      "number": 774,
      "title": "Rules Stack: graph mobile fallback + deep-page cross-nav + ISR revalidate",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/774",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 775,
      "title": "KG: alias-merge pass + extend extraction to mail/todo",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/775",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 776,
      "title": "Rules Stack: v2 hardening pass (rate limits, security tests, input clamps, ISR)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/776",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "test"
    },
    {
      "number": 777,
      "title": "Rules Stack: shareability pass (dynamic OG cards, social metadata, copy-link)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/777",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 778,
      "title": "Rules Stack: community contributions (self-updating wiki with a human gate)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/778",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 782,
      "title": "Rules Stack: email the admin on a new community contribution",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/782",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 783,
      "title": "Rules Stack: one-click apply — accepted neighborhood-confirm → crosswalk edit",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/783",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 784,
      "title": "Work brain (1/2): work-scoped rules playbook + graph slice",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/784",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 785,
      "title": "Rules Stack: public \"recently improved\" changelog + subscribe-to-updates",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/785",
      "surface": "rules",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 786,
      "title": "Work brain (2/2): ask-the-work agent",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/786",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 787,
      "title": "Organize the knowledge graph: salience · clusters · first-class domains",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/787",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 788,
      "title": "Work brain: semantic rule consolidation (near-duplicate merge)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/788",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 789,
      "title": "KG cluster mini-map (ego-graph) + fix kg_recompute_degree safeupdate",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/789",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 790,
      "title": "Subtle animated Ukrainian flag accents on /ukraine",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/790",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 791,
      "title": "Record the applied work-brain + consolidation schema in the repo",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/791",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 792,
      "title": "Add a work-consolidate-deep drain mode (0.83 threshold)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/792",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 793,
      "title": "Kanban board for llm_calendar_todos.json",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/793",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 794,
      "title": "Add /todos surface PRD + 6-issue delivery plan",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/794",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 801,
      "title": "Fix work_rule_candidate_pairs: plpgsql so SET statement_timeout sticks",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/801",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 802,
      "title": "todos #795: foundation — spine schema, access scaffold, category/due glue",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/802",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 803,
      "title": "Meetings & orders: sort the day's screenshots onto meetings",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/803",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 804,
      "title": "todos #796: the /todos lens — board/list UI + manual CRUD",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/804",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 805,
      "title": "Fix work-consolidate statement timeout (bounded resumable candidate scan)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/805",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 806,
      "title": "todos #797: calendar import — seed 36 to-dos from llm_calendar_todos.json",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/806",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 807,
      "title": "KG UI v2 — pagination, hardened fetches, polish",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/807",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 808,
      "title": "Pump up the /ukraine Ukrainian-flag theme (bolder colors + flag band)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/808",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 809,
      "title": "Meetings: temporal + visual-embedding refine for no-order photos",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/809",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 810,
      "title": "Flag treatment on sub-page cards + headers (packing, stops, call window)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/810",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 811,
      "title": "todos #798: Mail → todos bridge (the /mail connection)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/811",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 812,
      "title": "Meetings v2: per-day picker, auto transcript summarize, transcripts to bucket",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/812",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 813,
      "title": "todos #799: Money/Bills integration (the /money connection)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/813",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 814,
      "title": "todos #800: cross-surface polish (triage, badges, digest, export, docs)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/814",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "docs"
    },
    {
      "number": 815,
      "title": "Fold meetings-transcripts into the registered drain workflow",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/815",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 816,
      "title": "Homepage build-log post: \"More Ukrainian, please\" (with embedded video)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/816",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 817,
      "title": "Meetings: remove transcript PDFs from git (now in private bucket)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/817",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 818,
      "title": "todos: close the PRD gaps (recurrence, anomaly, email links, PWA)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/818",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 819,
      "title": "Org Knowledge Platform — design doc (docs/org/PRD.md)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/819",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "docs"
    },
    {
      "number": 827,
      "title": "Add /studio — a cinematic public video reel + a headless recording pipeline (with auth-gated capture)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/827",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "infra"
    },
    {
      "number": 829,
      "title": "todos #824: full RRULE recurrence + occurrence history",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/829",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 830,
      "title": "todos #825: bridge self-authored lists onto the board (one card per list)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/830",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 831,
      "title": "todos #826: Google Calendar two-way sync",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/831",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 832,
      "title": "Org Knowledge Platform — Epic 1 foundation (/org)",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/832",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 833,
      "title": "Add a games montage to /studio + a build-log post",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/833",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 834,
      "title": "Org Epic 1: graduate meetings/work-brain/kg views to /org/**",
      "date": "2026-06-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/834",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 835,
      "title": "blog: Unified To-Dos PRD post + free PDF download",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/835",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 836,
      "title": "Org Epic 2: knowledge lifecycle, audit log & versioning",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/836",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 837,
      "title": "Connect /studio to the YouTube Data API (ingest + upload)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/837",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 838,
      "title": "/launch personal command center — full surface, installable PWA, screenshot tool",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/838",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 839,
      "title": "Org Epic 3 (Phase 2): human-gated agent team — substrate + Reconciler",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/839",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 840,
      "title": "Add-ons marketplace (profile → settings → add-ons) + ship GA4",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/840",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 841,
      "title": "studio: scale video pipeline to 1080p / 4K / beyond",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/841",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "infra"
    },
    {
      "number": 842,
      "title": "Ask/Search v2: bottom-sheet, answer-first, semantic, owner omnibar, /ask archive, inline box",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/842",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 843,
      "title": "/studio analytics: YouTube Analytics warehouse + admin console + internal feed (Phase 1)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/843",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 844,
      "title": "ShareX integration: token-gated uploader, .sxcu builder, live spotlight, essay",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/844",
      "surface": "sharex",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 845,
      "title": "studio analytics: drop the misnamed HEDDLE_SITE_URL from the ingest cron",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/845",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 846,
      "title": "Org Epic 3 Phase 3 + Epic 4: full agent roster + Agents control surface",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/846",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 847,
      "title": "Org Curator: embedding-powered duplicate detection (Voyage KNN consolidation)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/847",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 848,
      "title": "/org/secrets: encrypted runtime config + API-key store (paste Voyage key → semantic search on)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/848",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 849,
      "title": "Org agents: run the roster hands-off on a daily schedule",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/849",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 850,
      "title": "IAM Principal Directory in /org (P0: read-only)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/850",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 851,
      "title": "studio: v2 hardening pass for the capture/encode/publish pipeline",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/851",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "infra"
    },
    {
      "number": 852,
      "title": "studio/analytics: v3 UI polish pass",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/852",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 853,
      "title": "IAM P1+P2: agent grants/ACL, owner, self-view + Agents↔Identity link",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/853",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 854,
      "title": "Auto-rebuild semantic search index on content auto-seed",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/854",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 855,
      "title": "IAM P3+P4: audit trail + the encrypted credential vault",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/855",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 856,
      "title": "IAM P5: per-agent browser sessions (reach gated surfaces as the agent)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/856",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 857,
      "title": "Polish /org surface: active-tab scroll + IAM row overflow fix",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/857",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 858,
      "title": "docs: IAM / Identities section in CLAUDE.md",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/858",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "docs"
    },
    {
      "number": 859,
      "title": "Mint self-generated bearer secrets into /org/secrets",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/859",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 860,
      "title": "Freelance engine Phase 1: auto-built public /hire portfolio",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/860",
      "surface": "freelance",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 861,
      "title": "Site organization sweep — PRs 1–4: IA restructure, /lab hub, 404 fixes",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/861",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 869,
      "title": "Built-in screen capture → clipboard in Ask/Search",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/869",
      "surface": "search",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 870,
      "title": "/hire v2: harden skill derivation + UI polish, dark mode & copy",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/870",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 871,
      "title": "Mint the full sweep of self-generated bearer secrets into /org/secrets",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/871",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 872,
      "title": "Capture → upload → branded /sx link (owner share variant)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/872",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 874,
      "title": "Freelance Phase 2: Upwork connector + human-gated proposal assistant",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/874",
      "surface": "freelance",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 875,
      "title": "Semantic Status Semaphores — interactive essay, two games, tool suite, studio scaffold",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/875",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 876,
      "title": "/inbox Phase 1: full email client for jake@ (Resend Inbound + reader + send + lead fan-out)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/876",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 880,
      "title": "v2 polish & hardening + Studio B-roll pipeline (#867)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/880",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "infra"
    },
    {
      "number": 881,
      "title": "freelance: semi-autonomous pipeline — fit scoring, batch auto-draft, owned-channel send, Upwork reads",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/881",
      "surface": "freelance",
      "discipline": "commerce-billing",
      "changeType": "infra"
    },
    {
      "number": 882,
      "title": "Fix flaky game-progress test (mock-bleed): re-import route per test",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/882",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 883,
      "title": "meetings: process 2026-06-09 1:1 with Lauren Horton into the work brain",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/883",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 884,
      "title": "docs: isometric architecture map",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/884",
      "surface": "architecture",
      "discipline": "research-field-data",
      "changeType": "docs"
    },
    {
      "number": 885,
      "title": "Resolve merge conflicts for #878 (secrets-store decouple) against current main",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/885",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 887,
      "title": "meetings: add 2026-06-09 Sam/Jacob touchbase (Victory Management netdown DEG path)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/887",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 889,
      "title": "meetings(seed): add Order 00336746 Sun Loan turnover to 2026-06-09",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/889",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 890,
      "title": "docs: design for hands-off meeting → work-brain automation",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/890",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 892,
      "title": "meetings: auto-author from transcripts + nightly cron (drop the hand-JSON)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/892",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 893,
      "title": "meetings: Google Drive capture front door (Piece 3)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/893",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 895,
      "title": "/todos board v2: drag-and-drop board (buckets + status) + rich detail drawer",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/895",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 896,
      "title": "Multi-tenant /todos: 1-click boards at /t/[slug] (+ per-user household endpoints)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/896",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 897,
      "title": "/todos card attachments + cover images",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/897",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 898,
      "title": "Speed up CI: node-default vitest env + Next.js/Playwright caches",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/898",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 899,
      "title": "Codebase review: timing-safe bearer gates, shared factories, migrations ledger",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/899",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 901,
      "title": "Task-from-a-photo: draft a task/to-do from an image (both drawers)",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/901",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 902,
      "title": "Household chores surface + guided onboarding intake",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/902",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 904,
      "title": "Sentry error reporting (env-gated) + schema apply-state sync",
      "date": "2026-06-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/904",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 910,
      "title": "Animated, touch- and presence-aware weather semaphores on /weather",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/910",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 911,
      "title": "Immersive, full-bleed animated weather sky on the /weather hero",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/911",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 912,
      "title": "Redesign /weather: full-screen atmosphere + macOS glass UI",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/912",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 913,
      "title": "Calm mode v2 — exact wins via completed_at, focus transparency, a11y + hardening",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/913",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 914,
      "title": "/weather sky: golden-hour palette, shooting stars, tap haptics",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/914",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 915,
      "title": "Calm mode v3 — quick capture, Right-now slot, load gauge, wins sparkline",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/915",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 916,
      "title": "Freelance lead intake layer: /hire form, digest fan-out, source scout",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/916",
      "surface": "freelance",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 917,
      "title": "Pipeline close-loop + weekly digest; Stripe billing rail with /hire fixed-scope offers",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/917",
      "surface": "billing",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 918,
      "title": "/weather: fix footer bleed + a photoreal sky pass (grain, god-rays, volumetric clouds, Milky Way)",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/918",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 919,
      "title": "/weather: optional per-condition video sky (5K loops over the CSS atmosphere)",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/919",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 920,
      "title": "Job-enrichment research agent + KG warm-lead scout",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/920",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 921,
      "title": "/weather: AI generator for the video sky (provider → ffmpeg → R2)",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/921",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 922,
      "title": "/today — the day-coach surface: one sweep of the personal OS + an AI motivational coach",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/922",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 923,
      "title": "Funnel wave 2: site-wide CTAs, more scout sources, tips + consult offer, newsletter capture",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/923",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 924,
      "title": "Add five new marketplace add-ons: Plausible, Giscus, Cal.com, search verification, Buttondown",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/924",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 926,
      "title": "Quick Task capture in the command drawer + triage classifier + automation_potential",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/926",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 927,
      "title": "Quick Task chord + pill ＋ nub + automation_potential filter/lens",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/927",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 928,
      "title": "Add multi-tenant Weather boards (/w) as a marketplace app",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/928",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 929,
      "title": "Meetings nightly: embed + refine photos in the pipeline",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/929",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 931,
      "title": "Agents Store: act-as bearers, token→session exchange, agent_jobs runner, operator UI",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/931",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 932,
      "title": "freelance: partner-referral lead intake (source='referral')",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/932",
      "surface": "freelance",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 933,
      "title": "Setup Center: guided integration tasks over /launch/secrets + marketp…",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/933",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 934,
      "title": "Weather boards v2: polish + hardening, launch post, and offline studio fixtures + hype reel",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/934",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 935,
      "title": "Weather video sky v2: drizzle/windy/dawn/blue-hour + /w themed sky packs",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/935",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 936,
      "title": "email: per-surface sender identities (stop the global From-line leak)",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/936",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 937,
      "title": "Weather boards: launch blog post + offline studio fixtures + hype reel",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/937",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 938,
      "title": "Register R2 + weather video-provider secrets in the internal secrets store",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/938",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 939,
      "title": "Studio fixtures pattern → Todo boards: /t/demo seed, shared reel engine, hype reel (+ the orphaned weather-reel work)",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/939",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 940,
      "title": "Studio fixtures pattern → Chores: seeded household board + hype reel",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/940",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 941,
      "title": "Weather Sky Studio: a gamified /launch board for uploading the sky clips",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/941",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 942,
      "title": "Gamify the Setup Center: XP, levels, badges + full credential-audit catalog sweep",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/942",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 943,
      "title": "Agents Store: Weather Sky operator — steward of the video-sky line",
      "date": "2026-06-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/943",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 944,
      "title": "Tame concurrent sessions: split CLAUDE.md into docs/surfaces/ + SessionStart sync hook",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/944",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 945,
      "title": "Setup Center game v2: next-quest spotlight, quest lines, cross-visit recap",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/945",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 946,
      "title": "docs: meta-prompt / playbook for the studio-fixtures pattern (→ /money, /mail)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/946",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "docs"
    },
    {
      "number": 947,
      "title": "Studio fixtures pattern → Money: seeded ledger + envelopes, hype reel (first run via the playbook)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/947",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 948,
      "title": "Token-source inventory harness: scanner + classified ledger + drift gate + Inventory view",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/948",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 949,
      "title": "CRSS syllabus route: retire the legacy ADMIN_PASSWORD gate → exam-role lattice",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/949",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 950,
      "title": "Blog: build log — taming concurrent Claude Code sessions",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/950",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 951,
      "title": "Studio fixtures pattern → Mail: seeded inbox + hype reel (the playbook's image case, §3f)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/951",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 952,
      "title": "docs: marketplace conversion roadmap + Trips PRD + demo-mode PRD",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/952",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 953,
      "title": "Studio brand kit: 720p–5K quality ladder, animated intro/sting/outro bumpers, xfade transitions",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/953",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 954,
      "title": "Strata: full-history data refresh, all eight agents registered, pipeline hardening",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/954",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "infra"
    },
    {
      "number": 955,
      "title": "studio: YouTube Shorts mode — hook-first cuts, 9:16 presets, safe-zone CTA outro, Shorts upload metadata",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/955",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 956,
      "title": "Marketplace demo mode Phase 1: live /w/demo + /t/demo, write guards, and the \"Start from this board\" clone CTA",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/956",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 958,
      "title": "CI: bump all workflows off node20-era actions (forced Node 24 lands June 16)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/958",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "chore"
    },
    {
      "number": 959,
      "title": "Marketplace demo mode Phase 2: demo/reel tile actions, ReelLightbox, friendly demo errors",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/959",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 960,
      "title": "Trips Phase 1: the spine — trips_* schema, templates, the home role, module shell, /trip/demo",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/960",
      "surface": "trip",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 961,
      "title": "studio: animated word-pop captions + all reels re-filmed with the full brand kit",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/961",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 963,
      "title": "Trips: /studio reel + marketplace tile",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/963",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 964,
      "title": "Studio soundtrack: offline generative music beds + transition whooshes through the renditions",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/964",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 965,
      "title": "Countdowns (/cd): the tiniest multi-tenant app — shared \"N days until\" boards + .ics",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/965",
      "surface": "countdown",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 966,
      "title": "Studio gestures + camera: tap ripples, swipe hints, focus spotlights, per-shot Ken Burns moves",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/966",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 967,
      "title": "v2 polish + hardening for the statement and document ingest lanes",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/967",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 968,
      "title": "Studio: re-film the whole gallery + auto-chapters, QA invariants, film-all CI",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/968",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 969,
      "title": "Trips Phase 2: the journal core — dispatches + packing + notes",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/969",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 970,
      "title": "Trips Phase 2b: dispatch photos — private bucket, GPS-strip, signed reads",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/970",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 971,
      "title": "Studio: youtube-sync backfill uploader + film-all covers the two new reels",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/971",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 972,
      "title": "Trips Phase 3: the group core — chat, settle-up money, plan board",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/972",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 973,
      "title": "studio: Shorts release train (one Short/week, CI-driven) + SRT closed-caption sidecars",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/973",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 974,
      "title": "Trips Phase 4: the long-distance specials — check-ins, call-window, map",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/974",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 975,
      "title": "Trips Phase 5: ship the marketplace half + the read-only archive importer",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/975",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 976,
      "title": "studio: automated narration — the voiceover speaks the subtitles, on the same clock",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/976",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 977,
      "title": "Growth wave 3: /tools public landing, newsletter double opt-in, research CTA, UTM + share links",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/977",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 978,
      "title": "docs: State of the Union codebase report + runnable Claude prompts",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/978",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 979,
      "title": "docs: refresh orientation docs + run State of the Union prompts A–J",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/979",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 989,
      "title": "Add /vision — five pitches from the resident AI",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/989",
      "surface": "vision",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 990,
      "title": "Open Notebook: newsletter send pipeline + public /changelog (vision pitch 01)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/990",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "infra"
    },
    {
      "number": 991,
      "title": "Agents Store: job codes, queue & schedules (outsourcing plane)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/991",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 992,
      "title": "Agents Store monitoring: incidents, alerting & a public /status page",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/992",
      "surface": "status",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 993,
      "title": "Add /p \"Projects\": public landing + neurodivergent-friendly client portals",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/993",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 994,
      "title": "docs: IA doctrine (docs/IA.md) + \"A Site Three Eras Old\" blog meta-prompt",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/994",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "docs"
    },
    {
      "number": 995,
      "title": "Console UX roadmap — closing the craft gap (docs)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/995",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 996,
      "title": "inbox: hydrate metadata-only inbound webhooks + alongside-Gmail relay",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/996",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 997,
      "title": "Agents Store: the games order line (gap analysis) + the АБЕТКА order dossier",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/997",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 998,
      "title": "Console UX Phase 0+1 — .con-* primitives + Vercel-parity row lists",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/998",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 999,
      "title": "Console UX Phase 2 — toasts, live polling, search/sort",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/999",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1000,
      "title": "inbox: sanitized HTML rendering + new-mail web push",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1000",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1001,
      "title": "Add GREENFIELD — the drift-gate garden game",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1001",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1002,
      "title": "Agents Store: ship the game-builder operator — games.fix drains the playtest backlog",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1002",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 1003,
      "title": "Console UX Phase 3 — persistent /launch left rail",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1003",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1004,
      "title": "Console UX Phase 4 — /status uptime bars + health sparklines",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1004",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1005,
      "title": "fix(secrets): add completion path for env tasks on Setup page",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1005",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 1006,
      "title": "Add DRIFT — the daily audit mode inside GREENFIELD",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1006",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1007,
      "title": "Wire search.index-freshness — a real runner for the index-drift canary",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1007",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1008,
      "title": "Wire the last two roadmap runners — links.broken-audit + concierge.smoke",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1008",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1009,
      "title": "Customize Kim Pigeon client portal for the real LinkedIn recovery scope",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1009",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1010,
      "title": "Fix seed-content failure: 7 blog assets missing from manifest + integrity gate",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1010",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 1011,
      "title": "fix(auth): stop edge middleware from 500ing the whole site (MIDDLEWARE_INVOCATION_FAILED)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1011",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "bugfix"
    },
    {
      "number": 1012,
      "title": "fix(auth): make edge middleware init-safe (site-wide 500 follow-up)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1012",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "bugfix"
    },
    {
      "number": 1013,
      "title": "fix(secrets): mobile-friendly /launch/secrets",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1013",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 1014,
      "title": "Onboard 4 new agents — SEO / a11y / security / perf auditors",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1014",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1015,
      "title": "🚨 hotfix: prod outage root cause — Sentry middleware wrapper (MIDDLEWARE_INVOCATION_FAILED)",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1015",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1016,
      "title": "feat(ops): ops harness — version endpoint, prod-parity build, probe, serve/stop, CI guardrail",
      "date": "2026-06-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1016",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1017,
      "title": "fix: agent-found issues — security headers + /work,/weather SEO",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1017",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 1018,
      "title": "feat(secrets): v2 — filters, collapsible sections, HUD compact mode",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1018",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1019,
      "title": "GREENFIELD v2: juice, coaching, readability, records",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1019",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1020,
      "title": "Portal v2: trust, activity timeline, FAQ, text-first contact + inline proof images",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1020",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1021,
      "title": "chore: hardening + debt-paydown sweep (agent-driven)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1021",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "chore"
    },
    {
      "number": 1022,
      "title": "Portal: hyper-polished Profiles status board for the 3 LinkedIn identities",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1022",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1023,
      "title": "feat(agents): gamified fleet onboarding (Secrets Setup Center template)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1023",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1025,
      "title": "Profiles: reframe the third card as Kim's possible duplicate profile",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1025",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1027,
      "title": "Portal: fillable per-profile fields, draft/hidden states + older-eyes readability pass",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1027",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1028,
      "title": "feat(ops): the Autonomous Operations Plane — doctrine + SLO catalog, wired live",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1028",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1029,
      "title": "Agents Store: the Credential steward (autonomous mint/apply/revoke governance over the credential estate)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1029",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1030,
      "title": "Profiles: pre-plan the 3 outcomes for the unconfirmed profile (one-tap decision chooser)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1030",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1031,
      "title": "feat(telegram): one-bot plugin plane + /admin/telegram console (Phase 1)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1031",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1032,
      "title": "Agents Store: the Credential supervisor (in-app custodian) + one-command operator onboarding",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1032",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1033,
      "title": "feat(manor): phase 0 foundation, schema plus bridge skeleton plus admin heartbeat",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1033",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1034,
      "title": "Studio Director: content→video authoring + human gate",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1034",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1035,
      "title": "feat(telegram): Phase 2 — human gates, /todo shortcut, lead + deploy alerts",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1035",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1036,
      "title": "Credential governance v2: vault sweep, rotation calendar, Estate tab, onboard hardening",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1036",
      "surface": "calendar",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1037,
      "title": "Studio Director Phase 3: render/upload handoff + channel rebrand checklist",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1037",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1038,
      "title": "feat(telegram): Phase 3 — capture, chores nudge, strata + trip companion",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1038",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1039,
      "title": "fix(telegram): Phase 3 Copilot review — 6 correctness fixes",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1039",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 1040,
      "title": "feat(manor): phase 1 state mirror, staging promotion, live board; retire sitter page",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1040",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1041,
      "title": "Director: one-click render from the console + in-app channel checklist",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1041",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1042,
      "title": "feat(manor): in-app gate verification panel + truthful-heartbeat and resync-provenance fixes",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1042",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "bugfix"
    },
    {
      "number": 1043,
      "title": "Studio Director v2: editorial gate, autonomy, and UX polish",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1043",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1044,
      "title": "fix(telegram): 8 bugs from v2 review pass",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1044",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 1045,
      "title": "Studio Director Phase 4: the LLM script agent",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1045",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1048,
      "title": "content: \"The bot that runs the house\" blog post",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1048",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1049,
      "title": "Director: voice the agent script in the filmed reel (closes #1046)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1049",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1050,
      "title": "studio: YouTube Short project for \"The bot that runs the house\"",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1050",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1051,
      "title": "feat(manor): phase 2 command loop, live controls, expiry honesty, verifier ladder",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1051",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1052,
      "title": "Director: /vision pitches as a compose source (closes #1047)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1052",
      "surface": "vision",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1053,
      "title": "agents:onboard: add the npm `--` separator to every flag-bearing command template",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1053",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1054,
      "title": "Studio Director Phase 5 tail: the release train",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1054",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1055,
      "title": "feat(manor): phase 3a scenes through the command pipeline, atomic and role-gated",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1055",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "infra"
    },
    {
      "number": 1056,
      "title": "Studio Director Phase 6: the analytics feedback loop",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1056",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1057,
      "title": "Supervisor mint verb: autonomous, DB-resolved, non-self bearer provisioning",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1057",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1058,
      "title": "Studio Director Phase 7: marketplace listing",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1058",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1059,
      "title": "feat(manor): phase 3b incidents engine + phase 4 public observability page",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1059",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1060,
      "title": "Studio Director Phase 8 (foundation): multi-tenant data model",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1060",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1061,
      "title": "Studio Director Phase 8: YouTube OAuth connect flow",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1061",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1062,
      "title": "Studio Director Phase 8: per-tenant render isolation",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1062",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1063,
      "title": "Studio Director Phase 8: open the console to connected tenants",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1063",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1064,
      "title": "Add meeting processing and comprehensive reporting system",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1064",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1065,
      "title": "Wire the Cloudflare R2 Data Catalog (Apache Iceberg REST)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1065",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1066,
      "title": "Blog: behind-the-scenes making-of the Telegram house bot (+ video)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1066",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1067,
      "title": "r2-catalog: analytics namespace + catalog:seed (tables via query engine)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1067",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1068,
      "title": "Auto-ship the telegram reel: wire it into the weekly release-train (no HITL)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1068",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1069,
      "title": "Release train: fail loud + push outcome to Telegram (kill the silent-green skip)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1069",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1070,
      "title": "setup-center: MANOR bridge + Studio Director tenant connect + DIRECTOR_SCRIPT_MODEL",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1070",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1071,
      "title": "Telegram: in-UI setup wizard + multi-tenant groundwork",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1071",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1072,
      "title": "setup-center: 6 UX quick wins (applies chip, age, source nudge, filter badge, redeploy banner)",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1072",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1073,
      "title": "Telegram multi-tenant: Stage 1 — secrets + provisioning foundation",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1073",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1074,
      "title": "fix(setup-center): only show applies chip when secret is already set",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1074",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 1076,
      "title": "Telegram Stage 2: per-bot webhook door + trust gate + admin bot switcher",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1076",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1077,
      "title": "Portal: reflect today's progress — access recovered + merge ticket filed",
      "date": "2026-06-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1077",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1078,
      "title": "Add live AI chat assistant to client portal",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1078",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1079,
      "title": "Portal: third identity is duplicate Company Pages (not a profile) + ticket corrected",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1079",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1080,
      "title": "Surface article-to-blog and enrichment pipeline as UI affordances",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1080",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "infra"
    },
    {
      "number": 1087,
      "title": "Add agency namespace to /p project portals",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1087",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1088,
      "title": "Add PR QA review agent — five-lens Claude reviewer on every PR",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1088",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1089,
      "title": "Low-cost global UI affordances — reading progress, share, highlight, TOC, shortcuts",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1089",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1090,
      "title": "ci: auto-seed client portals (projects.mjs → portal_projects) on merge",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1090",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1091,
      "title": "Global UI affordances v2 — polish and hardening",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1091",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1092,
      "title": "fix(portals): git-backed admin chat — re-seed can't clobber live edits",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1092",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "bugfix"
    },
    {
      "number": 1093,
      "title": "linkedin: multi-tenant foundation + shared tenancy scaffold",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1093",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1094,
      "title": "Add /org-recipe: drag-and-drop org structure designer",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1094",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1095,
      "title": "docs: document, analyze & correct sources for \"The Harness\" explainer",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1095",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "bugfix"
    },
    {
      "number": 1096,
      "title": "Add dark \"slide\" blog cover variant (conference-slide OG)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1096",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1097,
      "title": "docs: verify all \"The Harness\" citations against published sources",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1097",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1098,
      "title": "Entity Wars — deck battler engine + mobile board UI",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1098",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1099,
      "title": "docs: paste-ready slide copy for the two harness-deck polish notes",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1099",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1100,
      "title": "Entity Wars Step 3 — roguelike run (5 floors, draft picks, boss)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1100",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1101,
      "title": "feat(entity-wars): v2 — targeting, floor intros, card inspect, deck viewer, hand fan, damage floats",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1101",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1102,
      "title": "Secrets store v2: audited reveal, audit trail, full per-secret actions + mobile pass",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1102",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1103,
      "title": "fix(entity-wars): destruction-spell targeting (wrong fallback side + untappable opponent entity)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1103",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1104,
      "title": "docs(workflow-studio): RFC + epic for a visual Workflow Designer Studio",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1104",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "docs"
    },
    {
      "number": 1107,
      "title": "Add /rituals — household wellness suite (Phase 1: habits)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1107",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1116,
      "title": "/rituals Phase 2 — reading module (books + sessions)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1116",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1117,
      "title": "feat(games): register Entity Wars across the surfacing registries",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1117",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1118,
      "title": "Agents Store: branch-janitor operator + dedicated weekly workflow",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1118",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1119,
      "title": "/rituals Phase 3 — journal module + landscape-tablet layout",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1119",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1120,
      "title": "Add video to /ukraine dispatches",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1120",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1121,
      "title": "blog: \"Everything the model can't do alone\" — a harness engineering essay",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1121",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1122,
      "title": "/rituals Phase 4 — prep module (countdown events + checklists)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1122",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1123,
      "title": "Add supabase-migrator agent (entitled DB-migration doer)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1123",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1124,
      "title": "studio: complete ELEVENLABS_API_KEY narration wiring + docs",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1124",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1125,
      "title": "Fix /ukraine dispatch video upload type handling",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1125",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 1130,
      "title": "WFS P1: workflow data model — defs / runs / node_runs (#1109)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1130",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1131,
      "title": "Mitigate HEVC video playback in /ukraine dispatches (#1126)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1131",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1132,
      "title": "WFS Phase 1 engine: run orchestrator (#1110) + trigger layer (#1111)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1132",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1133,
      "title": "Transcode /ukraine dispatch videos to H.264 (#1126)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1133",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1134,
      "title": "Allow Supabase migration tools to run prompt-free",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1134",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1135,
      "title": "studio: raise film-all job timeout to 90m for narration",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1135",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1136,
      "title": "Poster thumbnails for /ukraine dispatch videos (#1127)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1136",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1137,
      "title": "WFS: workflow control API — start / advance / approve-gate (admin)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1137",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1138,
      "title": "WFS: first PMO triage workflow on the engine + node @/ alias loader",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1138",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1139,
      "title": "Dispatch-video session reports + animated walkthrough",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1139",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1140,
      "title": "studio: live-gameplay source (cloud-GPU agent) — Phase 0 foundation",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1140",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1141,
      "title": "studio: re-film the gallery (film-all)",
      "date": "2026-06-13",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1141",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1142,
      "title": "WFS: PM delivery core — pm.deliver (spec → human-gate) + risk classifier",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1142",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1143,
      "title": "WFS: PM delivery dispatch — close the loop (game-builder → pm-implement → draft PR)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1143",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1144,
      "title": "studio: live-capture agent (cloud-GPU) — Phase 1a + 1b draft",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1144",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1145,
      "title": "FB_Analysis: caption + multimodal-embed the screenshot corpus",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1145",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1146,
      "title": "WFS: PM auto-merge leg — fail-closed merge of the low-risk class",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1146",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1147,
      "title": "fb:embed — key preflight + make failed rows retryable",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1147",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1148,
      "title": "WFS: wf:enable ops tool + switch on pmo.triage / pm.deliver",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1148",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1149,
      "title": "portals: rename agency key pb → painted-bamboo + friendly/legacy URL aliases",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1149",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1150,
      "title": "fix(seed): run site:embed with the @/ alias loader so the semantic reindex stops failing",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1150",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1151,
      "title": "rituals automation — morning check-in, prep reminders, gate canary",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1151",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1152,
      "title": "studio: live-lane health canary + flaky enrichment-test fix",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1152",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1153,
      "title": "studio(live): launchable in mock mode + a deterministic mock-lifecycle gate",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1153",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1154,
      "title": "portals: verify command + portals.health-check Agents-Store job",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1154",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1155,
      "title": "FB_Analysis: daily auto-embed cron + /launch/fb console + health/search API",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1155",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1156,
      "title": "feat(agents): blog.post-health — a per-post content canary for the Agents Store",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1156",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1157,
      "title": "fix(agents): collapse duplicate site-health jobKinds (main is red from a 3-way merge)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1157",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1158,
      "title": "fix(agents): repair build-breaking merge corruption in the Agents Store catalog",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1158",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1160,
      "title": "Inbox readiness: go/no-go probe + /inbox/setup panel",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1160",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1161,
      "title": "launch: /launch/portals ops panel + fix duplicate jobKinds key",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1161",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1162,
      "title": "refactor(agents): derive operator jobKinds from JOB_CODES + catalog-integrity guard",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1162",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 1163,
      "title": "fix(test): de-race the enrichment-run 409 test — un-breaks main CI (red since #1154)",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1163",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1164,
      "title": "studio: content-type helper + fix enrichment run-route test hang",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1164",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1165,
      "title": "feat(launch): /launch/workflows console — monitor runs + approve human-gates",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1165",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1166,
      "title": "Inbox readiness canary → public /status \"Inbox receiving\"",
      "date": "2026-06-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1166",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1167,
      "title": "Pingree Grove → the metaverse: /rules/vr (WebXR authority ladder)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1167",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1168,
      "title": "Add /lcl — The Library of Choice Literature (Vol. I), searchable + cited",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1168",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1169,
      "title": "inbox: v2 mobile UI polish — responsive master/detail layout",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1169",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1170,
      "title": "lcl:transcribe — fail fast on auth errors (don't silently no-op)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1170",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 1171,
      "title": "The Grove: a persistent, enterable civic sim of Pingree Grove (/grove)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1171",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1172,
      "title": "inbox: v3 mobile polish — touch targets, iOS zoom fix, unread dots",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1172",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "bugfix"
    },
    {
      "number": 1173,
      "title": "The Grove: autonomous Town Crier (hourly selfDriven agent)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1173",
      "surface": "grove",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1174,
      "title": "inbox: v4 mobile polish — sticky back bar, skeletons, safe-area",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1174",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1175,
      "title": "inbox: v5 mobile polish — sender avatars, relative times, press feedback",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1175",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1176,
      "title": "The Grove: the FOIA Clerk NPC (track-and-report) + NPC roster architecture",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1176",
      "surface": "grove",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1177,
      "title": "inbox: v6 mobile polish — swipe to archive/trash + Undo snackbar",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1177",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1178,
      "title": "lcl: Tesseract OCR fallback to reach 63/63 leaves",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1178",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1179,
      "title": "inbox: v7 mobile polish — compose FAB, roomier composer, reduced-motion",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1179",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1180,
      "title": "The Grove, to scale: /grove/map — geolocated 3D model + fly-to-your-house",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1180",
      "surface": "grove",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1181,
      "title": "lcl: full Volume I catalog (35 → 192) from the printed index, with provenance tags",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1181",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1182,
      "title": "inbox: v8 mobile polish — attachment chips + list scroll restore",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1182",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1183,
      "title": "lcl: allow source 'photo'/'record' on lcl_selections (unblocks the full-catalog seed)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1183",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1184,
      "title": "inbox: perfect the reply/compose flow — reply-all, quoting, Cc/Bcc, ⌘↵",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1184",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1185,
      "title": "lcl: tidy the noisy OCR-fallback leaves into faithful prose digests",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1185",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1186,
      "title": "inbox: draft autosave/restore + Esc to close",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1186",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1187,
      "title": "inbox: forward action + empty-subject guard",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1187",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1211,
      "title": "inbox: triage bundle — star + Starred view, mark unread, unread badges",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1211",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1217,
      "title": "The Grove, to scale: denser MS footprints + Kane County parcels",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1217",
      "surface": "grove",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1218,
      "title": "inbox: inbound task fan-out → /todos (suggest + auto-create)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1218",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1219,
      "title": "Entity Wars v2: major mobile polish pass",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1219",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1220,
      "title": "inbox: route receipt attachments into /money",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1220",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1221,
      "title": "test: jsdom pragma for entity-wars haptics (enrichment pass backed out — see #1224)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1221",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 1222,
      "title": "inbox: bulk select + actions",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1222",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1223,
      "title": "test: fix entity-wars haptics test (jsdom env) — unblocks CI",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1223",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1225,
      "title": "inbox: multi-tenant SaaS foundation (schema, tenancy, inbound routing)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1225",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1226,
      "title": "inbox: tenant reader UI — /inbox/[slug] + inboxes home",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1226",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1227,
      "title": "inbox: readiness guard for unapplied tenancy schema (empty-inbox failure mode)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1227",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1228,
      "title": "docs: PM plan for all 96 open issues",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1228",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1229,
      "title": "lcl: page-by-page reader (/lcl/volume-1/pages) — closes #1207",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1229",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1230,
      "title": "enrichment: merge (don't replace) manifest assets on scan — fix #1224",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1230",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1231,
      "title": "ci: alert on silent cron-job failures (#983)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1231",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1232,
      "title": "inbox: remember \"show images\" per sender (#1196)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1232",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1233,
      "title": "lcl: mirror live lcl_media table into schema + surface doc",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1233",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "docs"
    },
    {
      "number": 1234,
      "title": "supabase: backfill DDL for CRSS exam-factory tables (#980)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1234",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 1235,
      "title": "ukraine: reclaim orphaned trip-videos storage objects (#1129)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1235",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1236,
      "title": "ukraine: upload progress indicator for large dispatch videos (#1128)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1236",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1237,
      "title": "lcl: restore full text for the two hero poems of Volume I",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1237",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1238,
      "title": "Add public /architecture system map with interactive ecosystem view",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1238",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1239,
      "title": "supabase: consolidate clients to sanctioned factories + CRSS guard (#985)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1239",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 1240,
      "title": "heddle: vocabulary pass — director concepts on the rendered surface (#509)",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1240",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1241,
      "title": "/architecture v2: plain-English rebuild with an animated journey player",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1241",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1242,
      "title": "docs(plan): record Heddle pause + Wave 1/2 progress",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1242",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1243,
      "title": "/architecture: \"Trace the Signal\" — a guided, gamified learning experience",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1243",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1248,
      "title": "Align the site's three top-level stories on one building-in-public spine",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1248",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1250,
      "title": "lcl: v2 polish + hardening for the restored-text reader",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1250",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1251,
      "title": "inbox: v2 polish & hardening — search sanitize, fail-loud reader, route guards",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1251",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1252,
      "title": "Harden spine alignment: single-source the tagline + identity, retire the legacy SEO line",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1252",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1253,
      "title": "lcl: v2 hardening pass — query-layer injection guards + reader polish",
      "date": "2026-06-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1253",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1254,
      "title": "inbox: per-tenant outbound sending identity (tenant compose/reply)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1254",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1255,
      "title": "Prune surfaces: delete /wilcox, publish /build-log, fix /rapid-il listing",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1255",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1256,
      "title": "lcl: content view + narration pipeline (the Listen mode)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1256",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "infra"
    },
    {
      "number": 1257,
      "title": "lcl: word-karaoke (Listen) + Watch mode (fal.ai Flux imagery)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1257",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1258,
      "title": "inbox: /inbox/setup readiness check for the tenant sending domain",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1258",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1259,
      "title": "inbox: plan tier scaffolding (Phase 3 gating, no payment yet)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1259",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1262,
      "title": "Unify the to-do UI: /t boards render the rich /todos app; /t/household → /todos",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1262",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1263,
      "title": "lcl: companion podcast — the two-host meta layer",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1263",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1264,
      "title": "Inbox: fix concierge pill obstructing mobile action buttons",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1264",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1265,
      "title": "Inbox: scope subject-based threading to the sender (no more cross-sender thread collapse)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1265",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1266,
      "title": "secrets: rebuild /launch/secrets as a clean console-kit Manager",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1266",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1267,
      "title": "Publishable /w weather boards; retire /weather into a public board",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1267",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 1268,
      "title": "chore(heddle): weekly STATUS.md refresh",
      "date": "2026-06-15",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1268",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "chore"
    },
    {
      "number": 1269,
      "title": "Inbox: one-shot re-threader to split pre-existing mis-merged threads",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1269",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1270,
      "title": "strata: weekly surface refresh",
      "date": "2026-06-15",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1270",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1271,
      "title": "Reclaim /weather as the Weather add-on's public marketing landing",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1271",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 1272,
      "title": "Rename console /launch → /platform + secret auto-sync (increment A)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1272",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1273,
      "title": "Publishable boards for /t, /trip, and /cd (the rest of the add-on family)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1273",
      "surface": "trip",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 1274,
      "title": "Make /platform + Marketplace first-class for signed-in users",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1274",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1275,
      "title": "docs(ops): delegation playbook + credentials runbook",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1275",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1276,
      "title": "Secret auto-sync (increment B): Sync button + drift pills in the console",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1276",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1277,
      "title": "Public-board polish: anon \"create your own\" CTA + branded per-board OG images",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1277",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1278,
      "title": "docs(ops): job specs for all 11 DELEGATE-bucket issues",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1278",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1279,
      "title": "GitHub Activity add-on + Marketplace top-nav slot",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1279",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1280,
      "title": "Secret auto-sync (increment C): revoke-propagation + auto-sync-on-save",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1280",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1281,
      "title": "docs(env): dedicated GITHUB_TOKEN row",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1281",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1282,
      "title": "docs(ops): Heddle UX agent run plan + gap-audit results",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1282",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1283,
      "title": "docs(heddle): mark M2-UX-04/07/10 done (verified shipped)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1283",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1284,
      "title": "Secret auto-sync (increment C3): surface mirror drift in the steward sweep",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1284",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1285,
      "title": "Add Games Console: a per-account library over the games marketplace",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1285",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1286,
      "title": "Heddle: async-op status UX for AI drafts (Closes #513)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1286",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1287,
      "title": "Heddle: in-context orchestrator step guidance (Closes #514)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1287",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1288,
      "title": "docs(heddle): mark M2-UX-05/06/08/11 done (agent run)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1288",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1289,
      "title": "Heddle: CSV bulk-import for the item bank (Closes #519)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1289",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1290,
      "title": "Move the Console library from Neon to the main Supabase project",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1290",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1291,
      "title": "/platform: \"Your boards\" — one console view of all your tenant boards",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1291",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1292,
      "title": "studio: CI workflow to film the #867 semaphores film as a draft",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1292",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1293,
      "title": "Add \"Facebook Ads are Weird\" essay; retire /platform/fb console",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1293",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1294,
      "title": "docs(heddle): mark M2-UX-11 done (#519 anti-reopen guard)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1294",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1295,
      "title": "Tenancy: anonymous create → claim on sign-in (all four board surfaces)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1295",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1296,
      "title": "Essay v2: zoomable screenshots + section jump-nav",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1296",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1297,
      "title": "Tenancy: daily cron to purge stale unclaimed anonymous boards",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1297",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1298,
      "title": "Add /apply — admin-only job-search engine (resume tailoring)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1298",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1299,
      "title": "Add /about — the front-door marketing page",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1299",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1300,
      "title": "inbox: feature cluster — snooze, mute, search, shortcuts, attachments + 6 more",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1300",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1301,
      "title": "Essay rewrite: Hitchens × Orwell voice + the paywall-gate thesis",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1301",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1302,
      "title": "db: forward drift gate for supabase SQL files (refs #981)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1302",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1303,
      "title": "/apply: one-click cover letter matching a generated resume",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1303",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1304,
      "title": "[WFS P2] Canvas node-graph editor + node palette (Closes #1112)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1304",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1305,
      "title": "/apply: in-app template designer + status tracker board",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1305",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1306,
      "title": "/apply: drag-and-drop tracker + cover-letter voice ingest",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1306",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1307,
      "title": "/apply: mobile/touch drag on the tracker (Pointer Events)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1307",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1308,
      "title": "/apply: serious v2 mobile pass (responsive forms, iOS zoom fix, mobile tracker)",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1308",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 1309,
      "title": "/apply v3: fit & gap analysis, interview prep, tracker CRM",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1309",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1310,
      "title": "LCL: restore-from-pages — segment page OCR into per-selection full_text",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1310",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1311,
      "title": "Add /revenue-engine — a falsifiable simulator for the networked-revenue-engine conviction",
      "date": "2026-06-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1311",
      "surface": "revenue-engine",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1312,
      "title": "Revenue Engine: objectives, ranking, recipes, decisions & scenarios",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1312",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1313,
      "title": "/apply v4: import a job posting from a URL (guarded fetch + extract)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1313",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "refactor"
    },
    {
      "number": 1314,
      "title": "Revenue Engine: comparison matrix, objective-aware search, shareable URLs & Entity Wars bridge",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1314",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1315,
      "title": "/apply v5 + v6: Discover feed + Insights dashboard (funnel stages)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1315",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1316,
      "title": "Redesign nav menu in a modern SaaS style (parallel UI token layer)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1316",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1317,
      "title": "Entity Wars v2: twenty new cards",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1317",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1318,
      "title": "/apply v7: auto-pilot (score → generate → v2 polish → v3 accuracy → track)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1318",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1319,
      "title": "THE PULL — a card-pack Skinner box (game)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1319",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1320,
      "title": "Entity Wars v2.1: new recipes, new sectors, v2-aware AI decks",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1320",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1321,
      "title": "THE PULL (PR 2/20): card + deck data model + seedable draw RNG",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1321",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1322,
      "title": "THE PULL (PR 3–4/20): collection persistence + sealed pack visual",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1322",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1323,
      "title": "Entity Wars v2.2: balance pass, smarter AI, card codex + bridge upgrade",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1323",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "chore"
    },
    {
      "number": 1324,
      "title": "THE PULL (PR 5/20): tear-to-open gesture",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1324",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1325,
      "title": "THE PULL (PR 6/20): crinkle + tear sound",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1325",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1326,
      "title": "Polish the desktop top bar into the modern --ui- style",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1326",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1327,
      "title": "THE PULL (PR 7/20): haptics layer",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1327",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1328,
      "title": "THE PULL (PR 8/20): the card spill",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1328",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1329,
      "title": "THE PULL (PR 9/20): card faces + rarity frames + holo tilt",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1329",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1330,
      "title": "THE PULL (PR 10/20): the reveal flip",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1330",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1331,
      "title": "Entity Wars: self-play telemetry + in-game Meta Report",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1331",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1332,
      "title": "Graduate the /blog index to the modern --ui- look",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1332",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1333,
      "title": "THE PULL (PR 11–12/20): inspect view + rarity sting/near-miss",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1333",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1334,
      "title": "THE PULL (PR 13/20): the deck content + inline-SVG glyph art",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1334",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1335,
      "title": "THE PULL (PR 14–15/20): hold-to-claim + claim juice",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1335",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1336,
      "title": "THE PULL (PR 16–20/20): resolution · schedule · collection · economy · hardening",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1336",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1337,
      "title": "Entity Wars: difficulty tiers + deeper core (hand size, recipe tuning, balance)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1337",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1338,
      "title": "Graduate the /essays index to the modern --ui- look",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1338",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1339,
      "title": "vision: refresh memo — the Open Notebook shipped",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1339",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1340,
      "title": "Light --ui- token refresh for /research neutrals",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1340",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1341,
      "title": "Entity Wars: new mechanics — mulligan + market events",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1341",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1342,
      "title": "THE PULL: dopamine-ledger polish (holo chip · rarity bars · locked shimmer)",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1342",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1343,
      "title": "THE PULL: expansion pack — more cards (→30) + sharper teeth",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1343",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1344,
      "title": "Entity Wars: multi-card plays per turn",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1344",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1345,
      "title": "Entity Wars: reactive / instant cards",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1345",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1346,
      "title": "Entity Wars: between-turns upgrade track",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1346",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "chore"
    },
    {
      "number": 1347,
      "title": "Graduate the homepage to the modern --ui- look",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1347",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1348,
      "title": "Modernize SubscribeInline (shared newsletter CTA) to --ui-",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1348",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1349,
      "title": "Light --ui- refresh for the /utilities palette",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1349",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1350,
      "title": "/apply Discover: per-card fit % + posted salary",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1350",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1351,
      "title": "/apply: unify the fit chip across Discover + Tracker",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1351",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1352,
      "title": "Remove duplicate Telegram bot blog post",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1352",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1353,
      "title": "Add in-UI tuning controls to the /apply Discover feed",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1353",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1354,
      "title": "v3: salary-floor filter + sort for the /apply Discover feed",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1354",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1355,
      "title": "v4: already-applied badge + saved searches for the /apply Discover feed",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1355",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1356,
      "title": "v5: saved-search email alerts for the /apply Discover feed",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1356",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1357,
      "title": "Owner-scope apply_resumes (multi-tenant data isolation)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1357",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1358,
      "title": "Add \"Not interested\" — dismiss postings from the /apply Discover feed",
      "date": "2026-06-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1358",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1359,
      "title": "THE PULL: animated card characters (prototype — 3 cards)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1359",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1360,
      "title": "THE PULL: card characters — legendary + epic tier (5 cards)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1360",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1361,
      "title": "THE PULL: card characters — rare tier (6 cards)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1361",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1362,
      "title": "THE PULL: card characters — uncommon tier (7 cards)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1362",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1363,
      "title": "THE PULL: card characters — common tier (7 cards) — set complete 30/30",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1363",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1364,
      "title": "THE PULL: hoist card-character keyframes to one shared style",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1364",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1365,
      "title": "apply(discover): add Arbeitnow + Jobicy as auto-sources",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1365",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1366,
      "title": "THE PULL: add the receipt — a lifetime odds mirror",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1366",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1367,
      "title": "/apply: add The Muse + Himalayas as Discover auto-sources",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1367",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1368,
      "title": "THE PULL: rarity FX ladder — glow, border & shimmer (1/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1368",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1369,
      "title": "/apply: add Working Nomads + We Work Remotely as Discover auto-sources",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1369",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1370,
      "title": "THE PULL: sparkles + rotating rays — the Legendary showpiece (2/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1370",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1371,
      "title": "THE PULL: grid tuning + reveal sparkle-pop (3/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1371",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1372,
      "title": "/apply: add 8 more Discover auto-sources (16 boards total)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1372",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1373,
      "title": "THE PULL: audio sting + pack-spill ambient match the FX ladder",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1373",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1374,
      "title": "THE PULL: collectible-card redesign + haptics ladder + first-legendary moment",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1374",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1375,
      "title": "/apply: add 7 strong Discover auto-sources (~23 total)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1375",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1379,
      "title": "/apply: expand ATS company coverage (Discover)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1379",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "test"
    },
    {
      "number": 1380,
      "title": "THE PULL: animated foil tilt on the collectible stat gem (1/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1380",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1381,
      "title": "THE PULL: collection completion meter + set-complete moment (2/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1381",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1382,
      "title": "THE PULL: dupe-to-shards crafting (pity currency) (3/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1382",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1383,
      "title": "/apply: richer search profile + remote/seniority/title filters for Discover",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1383",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1387,
      "title": "/apply: autopilot scan honors the saved Discover preference profile",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1387",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1388,
      "title": "THE PULL: gems + fake shop (monetization layer 1/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1388",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1389,
      "title": "THE PULL: The Reckoning end-screen + claim-from-inspect + claim-nub fix",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1389",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 1390,
      "title": "/apply: daily digest — drafted + new matches + follow-ups in one email",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1390",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1391,
      "title": "THE PULL: limited banner + rate-up + hard pity (monetization 3/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1391",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1392,
      "title": "secrets registry: add a `todo` flag + flag the daily-digest vars",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1392",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1393,
      "title": "THE PULL: big flip-to-back inspect view + procedural card back + treasure claim",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1393",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1397,
      "title": "THE PULL: social-proof layer — fake live feed + standing (1/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1397",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1398,
      "title": "/apply: site chrome + --ui- redesign + Overview dashboard",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1398",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1399,
      "title": "THE PULL: foil / variant duplicates — the variant chase (2/3)",
      "date": "2026-06-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1399",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1400,
      "title": "THE PULL: shareable pull-card image export (3/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1400",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1404,
      "title": "THE PULL: set-bonus deck-back skins + cosmetics locker (1/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1404",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1405,
      "title": "THE PULL: collector titles — milestone flair (2/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1405",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1406,
      "title": "THE PULL: pack-wrapper skins (3/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1406",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1407,
      "title": "/apply UI/UX pass: design-system conformance, honest fit + recency, control occlusion",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1407",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1408,
      "title": "THE PULL: hide the pack opener once a pack is opened (fix phantom packs)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1408",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 1409,
      "title": "THE PULL: claim only by flipping + treasure-claim juice",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1409",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1410,
      "title": "THE PULL: duplicate fusion — trade dupes up a tier",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1410",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1411,
      "title": "/apply v2: mobile tune-panel fix, hide-stale filter, fit-floor tiers",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1411",
      "surface": "apply",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 1415,
      "title": "the-pull: fix the Claim button never stabilizing (unblocks the playtest gate)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1415",
      "surface": "playtest",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1416,
      "title": "THE PULL: card mastery — duplicates as a progression spine (1/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1416",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1417,
      "title": "THE PULL: 10-pull — bulk open + guaranteed rare+ (2/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1417",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1418,
      "title": "THE PULL: daily quests — the engagement loop (3/3)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1418",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1419,
      "title": "THE PULL: fix four issues from the screenshot review",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1419",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 1420,
      "title": "THE PULL: rebuild the top nav as a chip toolbar",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1420",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1425,
      "title": "THE PULL: adaptive-manipulation engine — core + intervention log (1/4)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1425",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1426,
      "title": "THE PULL: the rest of the adaptive levers — loss-aversion, urgency, JIT offer, surprise reward (2/4)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1426",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1427,
      "title": "apply: make /apply public (temporary, owner request)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1427",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1428,
      "title": "THE PULL: the confession + honest-mode toggle (3/4)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1428",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1429,
      "title": "THE PULL: the cited essay — \"I built a Skinner box, then made it confess\" (4/4)",
      "date": "2026-06-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1429",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1430,
      "title": "Unratified (Invisible Infrastructure #6): Phase 1 scaffold + prose",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1430",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1431,
      "title": "Unratified Phase 2: the threaded nation and the seeded flip",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1431",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1432,
      "title": "novels(pandora): make the manuscript the single source of truth",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1432",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1433,
      "title": "Unratified Phase 3: the research shadow",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1433",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1434,
      "title": "Add /hire/agentic-workflows productized service page",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1434",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1435,
      "title": "novels(pandora): draft Act II — the Istanbul collision (Ch 6–12)",
      "date": "2026-06-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1435",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1436,
      "title": "novels(pandora): counseling interstitials A &amp; B (+ reader support)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1436",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1437,
      "title": "Unratified: OG cover, series cross-links, and a dedicated shadow route",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1437",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1438,
      "title": "Agentic Workflow Design page: discoverability, FAQ + structured data, guard test",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1438",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 1439,
      "title": "Branded \"WORK WITH ME\" OG card for the /hire funnel",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1439",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1440,
      "title": "novels(pandora): draft Act III — the reluctant partnership (Ch 13–18) + Interstitial C",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1440",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1441,
      "title": "Unratified: a live diagnostic run on the reader's nation",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1441",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1442,
      "title": "RFC: Engagements — the service-delivery spine",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1442",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1443,
      "title": "Engagements E1: pure lifecycle spine + schema + accessor seam",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1443",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1444,
      "title": "Engagements E2: service template + instantiate + won→deliver seam",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1444",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1445,
      "title": "Unratified: add a homepage blog post",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1445",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1446,
      "title": "novels(pandora): Act IV — the revelation &amp; the choice (Ch 19–24). Book 1 complete. 🎬",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1446",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1447,
      "title": "Engagements E3: Delivery admin tab + control routes + portal write-through",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1447",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1448,
      "title": "Unratified: ElevenLabs audio narration + listen-first player",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1448",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1449,
      "title": "Engagements E4: close the loop into the weekly pipeline digest",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1449",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1450,
      "title": "Fix Unratified narration workflow: rebase-and-retry the push",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1450",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 1451,
      "title": "Engagements E5: the case-study hybrid WFS leg (event + def, human-gated)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1451",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1452,
      "title": "Engagements E6: port the priced catalog offers to templates (epic complete)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1452",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1453,
      "title": "Gina Book 1: integrate Act I QA + simulate the Workshop over Acts II–III",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1453",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 1454,
      "title": "Unratified narration: serve the audio outside Git LFS",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1454",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1455,
      "title": "Engagements: ship the WFS client-nudge leg (E5)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1455",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1456,
      "title": "Engagements: ship the WFS handoff-packet leg (E5)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1456",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1457,
      "title": "Engagements: cron staleness driver for the nudge leg (E5)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1457",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1458,
      "title": "Unratified v2: mobile and accessibility hardening",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1458",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1459,
      "title": "Unratified: deeper pass on the threaded nation and the relabel",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1459",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1460,
      "title": "ci: raise prod-parity build heap to 6 GB to stop build-and-probe OOMs",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1460",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1461,
      "title": "Add homepage blog posts for the three kickoff topics",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1461",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1462,
      "title": "Engagements: portal-summary driver for the case-study leg (E5)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1462",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1463,
      "title": "Unratified: the named nation becomes the constitution's title",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1463",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1464,
      "title": "Engagements: fill driver for the handoff-packet leg (E5 complete)",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1464",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1465,
      "title": "Engagements: schedule the three delivery drivers on a daily cron",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1465",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1466,
      "title": "Homepage refresh: generative + video covers, magazine feed, unified social art",
      "date": "2026-06-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1466",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1467,
      "title": "Add essay: a multidisciplinary framing of zero US traffic deaths",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1467",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1468,
      "title": "Flagship looping cover videos (3 posts)",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1468",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1469,
      "title": "Homepage blog pipeline: index alignment, self-healing reindex, seed reconciliation, ISR",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1469",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "infra"
    },
    {
      "number": 1470,
      "title": "Feed v2: answer-engine kickers, wider magazine grid, +3 cover videos",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1470",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1471,
      "title": "Zero-traffic-deaths essay: v2 copy, slide cover, cinematic cover video",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1471",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1472,
      "title": "Engagements: fix wf:nudge default stale window (was 0 days, not 3)",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1472",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "bugfix"
    },
    {
      "number": 1473,
      "title": "Cover videos on the article hero + 6 more flagship posts",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1473",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1474,
      "title": "Engagements: give the handoff creation scaffold its engagement context",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1474",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1475,
      "title": "Gina Book 1: polish + the writing pipeline as an in-house workflow",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1475",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1476,
      "title": "Ten more flagship cover videos (22 total)",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1476",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1477,
      "title": "Add two homepage blog posts: finished novel + in-house n8n",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1477",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1478,
      "title": "Finish the catalog: 32 more cover videos (54 total)",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1478",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1479,
      "title": "Add refund postscript to the Ugly Baby essay",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1479",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1480,
      "title": "Add the Store — a public catalog of the site's reusable systems",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1480",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1481,
      "title": "Door County: add Backyard Birthday Olympics event",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1481",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1482,
      "title": "Add /upcycle — free-marketplace ingestion pipeline",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1482",
      "surface": "upcycle",
      "discipline": "platform-admin",
      "changeType": "infra"
    },
    {
      "number": 1483,
      "title": "Rename game \"The Pull\" to \"Skinner Box\"",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1483",
      "surface": "the-pull",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1484,
      "title": "Add shared household calendar (/calendar) — Phase 1",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1484",
      "surface": "calendar",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1485,
      "title": "upcycle: wire Trash Nothing to its real v1.4 API; defer Nextdoor",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1485",
      "surface": "upcycle",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1486,
      "title": "Door County Olympics v2: shared module, fairness, scoring",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1486",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1487,
      "title": "Calendar Phase 2 — two-way Google Calendar sync",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1487",
      "surface": "calendar",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1488,
      "title": "upcycle v2: vision triage, Telegram find alerts, map view + filters",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1488",
      "surface": "upcycle",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1489,
      "title": "Add /radio — a persistent site radio over the site's own narrated audio",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1489",
      "surface": "radio",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1490,
      "title": "Add Painted Bamboo music station to /radio",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1490",
      "surface": "radio",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1491,
      "title": "Fix broken blog cover/OG images (move /api/og handlers off the edge runtime)",
      "date": "2026-06-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1491",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 1492,
      "title": "Blog cover/OG v2: edge-runtime guard, editorial default cover, and the n8n post brought into Voice/Style compliance",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1492",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1493,
      "title": "n8n cover: 9:16 social cut",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1493",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1494,
      "title": "Blog Voice/Style: embed 9:16, purge em dashes corpus-wide, and gate it forever",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1494",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1496,
      "title": "Calendar Phase 3 — /today spine, event→todo bridge, .ics feed",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1496",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1497,
      "title": "chore(heddle): weekly STATUS.md refresh",
      "date": "2026-06-22",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1497",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "chore"
    },
    {
      "number": 1498,
      "title": "research: The Sorting Machine, Wartime Edition (Invisible Infrastructure #7)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1498",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1499,
      "title": "strata: weekly surface refresh",
      "date": "2026-06-22",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1499",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1500,
      "title": "research: v2 refinement — The Sorting Machine, Wartime Edition",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1500",
      "surface": "sorting-machine-wartime",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1501,
      "title": "outreach: private admin console for collaboration drafts (+ UCU Stage 2 emails)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1501",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1502,
      "title": "Finish + theme The Pandora Threshold; ratify the Experience Manifest",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1502",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1503,
      "title": "research: v3 — The Sorting Machine, Wartime Edition (empirical + comparative + explorable)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1503",
      "surface": "sorting-machine-wartime",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1504,
      "title": "research: make the AI-systems papers runnable — test the claims (SAGEN, LLM-QP, Classification)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1504",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "test"
    },
    {
      "number": 1505,
      "title": "Add the Legibility Gap: field-data hub for Invisible Infrastructure",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1505",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1506,
      "title": "The Liminal /listen + audit /novels against the Experience Manifest",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1506",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1507,
      "title": "research: cross-paper Claims Ledger + CI drift guard (wave 2)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1507",
      "surface": "claims",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1508,
      "title": "Deepen the three lighter Legibility Gap trackers into interactives",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1508",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1509,
      "title": "research: external essays join the self-verifying program + Beautiful Unfinished gets a voice (wave 3)",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1509",
      "surface": "essays",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1510,
      "title": "Add the calibrated village microsimulation to the Legibility Gap",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1510",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1511,
      "title": "Darken Weight of Salt + give The Liminal a cover-film hero",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1511",
      "surface": "novels",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1512,
      "title": "Add the non-registry-proof comparative catalogue to the Legibility Gap",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1512",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1513,
      "title": "First quarterly refresh of the Legibility Gap, plus a freshness trail",
      "date": "2026-06-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1513",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1514,
      "title": "v2 polish pass on the Legibility Gap: wayfinding, masthead, accessibility",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1514",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1515,
      "title": "Audit /store against the Experience Manifest; retrofit Pandora hero to CoverVideo",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1515",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1516,
      "title": "narration: budget-aware ElevenLabs pipeline that honors a monthly cap",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1516",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1517,
      "title": "Serve the code on /store detail pages — curated artifacts + portable spec",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1517",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1518,
      "title": "Ukrainian-language `/uk` SEO subtree + i18n primitives",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1518",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1519,
      "title": "i18n: rebrand the Ukrainian locale to \"UA\" (route, codes, chip)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1519",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1520,
      "title": "Extend curated Store artifacts to six more items",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1520",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1521,
      "title": "Add in-app GA4 traffic snapshot with organic-search share (/admin/analytics)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1521",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1522,
      "title": "Finish curated Store artifacts — all 14 items now serve code",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1522",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1523,
      "title": "ci(gate): raise Playwright webServer timeout 300s → 600s",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1523",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1527,
      "title": "Add one-command OAuth setup for the GA4 traffic reader",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1527",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1528,
      "title": "i18n: Ukrainian blog translation pipeline (/ua/blog/[slug])",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1528",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "infra"
    },
    {
      "number": 1529,
      "title": "Add /comics — \"Merge Conflicts\", a daily comic strip drawn in code",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1529",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1531,
      "title": "i18n: Ukrainian companion for Invisible Infrastructure (/ua/research/...)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1531",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1532,
      "title": "Make GA4 reporting a one-click connector (marketplace add-on + Connect button)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1532",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1533,
      "title": "i18n: Ukrainian companion for The Sorting Machine, Wartime Edition",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1533",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1534,
      "title": "Upgrade the Store: faceted category pages + machine-readable /store/llms.txt",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1534",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "chore"
    },
    {
      "number": 1535,
      "title": "comics: schedule a full quarter of daily strips (91 new)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1535",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1539,
      "title": "Add Top organic search queries (Search Console) to /admin/analytics",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1539",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1540,
      "title": "i18n: localize the top Nav + NavMenu (Ukrainian chrome parity)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1540",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1541,
      "title": "Add weekly organic-traffic digest email",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1541",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1542,
      "title": "i18n: admin editor for blog *_ua translation fields",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1542",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1543,
      "title": "Add Cyrillic Quest — a Ukrainian alphabet learning game",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1543",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1544,
      "title": "Add reusable UA research-companion pipeline + The Sorting Machine translation",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1544",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1545,
      "title": "comics: live, ACL-gated content calendar (DB-backed + /admin/comics)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1545",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1546,
      "title": "i18n: localize the Invisible Infrastructure interactive instrument (/ua)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1546",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1547,
      "title": "feat(telegram): ship the /ask concierge command",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1547",
      "surface": "concierge",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1548,
      "title": "ci: make comics seed resilient (+ fix the seed-content failure blocking it)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1548",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 1549,
      "title": "comics: per-strip OpenGraph images",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1549",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1550,
      "title": "i18n: localize Invisible Infrastructure's deep analytical prose (/ua)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1550",
      "surface": "invisible-infrastructure",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1551,
      "title": "comics: per-strip transcript, ComicStory JSON-LD, panel a11y",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1551",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1552,
      "title": "comics: audio-friendly \"Listen\" affordance",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1552",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1553,
      "title": "Add Store stacks + 5 new systems (19 items, 5 curated bundles)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1553",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1554,
      "title": "Cyrillic Quest v2 — mastery map, keyboard play, Drill rounds, polish",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1554",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1555,
      "title": "i18n: localize the Wartime Edition interactive instrument (/ua)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1555",
      "surface": "sorting-machine-wartime",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1556,
      "title": "Add Telegram unbuilt-feature reminder script",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1556",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1557,
      "title": "Build the 3 remaining Telegram bot features (upcycle / note-to-self / CRSS flashcard)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1557",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 1558,
      "title": "Make the Store's usage metrics live (6 of 9 dead counters become real)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1558",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1559,
      "title": "Deepen the Ukrainian edition: /ua index hubs + three research companions",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1559",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1560,
      "title": "Wire the last three Store counters to real events (free-boards / og / radio)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1560",
      "surface": "radio",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1561,
      "title": "Refresh /today: fix dark mode, add Dailies ledger + 30-day Review",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1561",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 1562,
      "title": "Redesign /rituals: theme-aware, bolder wellness suite",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1562",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1563,
      "title": "Homepage blog post: a build log on the Ukrainian edition",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1563",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1564,
      "title": "Cyrillic Quest v3 — Type recall mode + travel phrasebook",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1564",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1565,
      "title": "Reframe the Ukrainian-edition post around the whole /ua surface",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1565",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1566,
      "title": "Calm v2 (1/5): shared design module + migrate /rituals",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1566",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1567,
      "title": "comics: v2 — arms + gestures, think/shout bubbles, RSS · random · keyboard nav",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1567",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1568,
      "title": "Calm v2 (2/5): /todos theme-aware + v2 redesign",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1568",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1569,
      "title": "Calm v2 (3/5): /chores theme-aware + v2 redesign",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1569",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1570,
      "title": "Calm v2 (4/5): /today full v2 redesign",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1570",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1571,
      "title": "Ukrainian twins for Essays / Games / Work (clear the last 3 /ua EN chips)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1571",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1573,
      "title": "Calm v2: converge /money + /platform onto the shared module",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1573",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1574,
      "title": "Four more Ukrainian research companions (/ua/research 10 of 15)",
      "date": "2026-06-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1574",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1575,
      "title": "Three more Ukrainian research companions (/ua/research 13 of 15)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1575",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1576,
      "title": "Add /cholent — unlisted Cholent Shabbat dinner invitation + RSVP loop",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1576",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1577,
      "title": "Final two Ukrainian companions: /ua/research fully Ukrainian (15/15)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1577",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1578,
      "title": "Fill in Cholent Shabbat details (address, wifi, host phone)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1578",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1579,
      "title": "Cholent Shabbat → Thursday June 25, tighter invitation copy",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1579",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1580,
      "title": "Add /podcast surface — \"Between Systems\" interview show",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1580",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1581,
      "title": "Custom warm-paper OG/social card for /cholent",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1581",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1582,
      "title": "Improve /cholent OG card: RSVP call-to-action + sharper layout",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1582",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1583,
      "title": "Fix recurring \"Loading chunk N failed\" ChunkLoadError",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1583",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1584,
      "title": "Make /cholent a recurring three-Thursday series",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1584",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1585,
      "title": "Podcast v2: shareable guest cards, share buttons, transcripts, directory-ready RSS",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1585",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1586,
      "title": "Fix PWA Update button obscured by Ask/Search nub on /cholent",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1586",
      "surface": "cholent",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 1587,
      "title": "Podcast v3: invitation generator, audiogram clip cards, embeddable player",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1587",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1588,
      "title": "Remove the PWA installable layer site-wide",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1588",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1601,
      "title": "Podcast v4: admin \"Publish a guest\" generator (/podcast/publish)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1601",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1602,
      "title": "Podcast v5: relationship engine — follow-up generator, referral chain, pipeline",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1602",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "infra"
    },
    {
      "number": 1603,
      "title": "Podcast v6: guest press kit + square/portrait quote-graphic OG variants",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1603",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1604,
      "title": "Podcast v6: per-guest analytics — view/share/embed counts (admin)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1604",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1605,
      "title": "Laravel learning sandbox (first foray)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1605",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1606,
      "title": "Podcast v4: audio upload → Storage bucket auto-fill",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1606",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1607,
      "title": "Add /benchmarks — a public, self-checking LLM/AI/retrieval evals surface",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1607",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1608,
      "title": "Podcast: generated channel cover art (#1599) + Claude draft-assist script (#1592)",
      "date": "2026-06-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1608",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1609,
      "title": "Bring the PWA-layer essay current after the removal (epilogue + dead-link fix)",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1609",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1610,
      "title": "benchmarks: add bench-run Action to replace synthetic results with real runs",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1610",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1611,
      "title": "Add Fly.io deploy workflow for laravel-sandbox",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1611",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1620,
      "title": "Podcast: public guest roster + guests.json + Cmd-K registration",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1620",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1621,
      "title": "Podcast: guest-prep generator /podcast/prep + admin hub /podcast/admin",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1621",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1622,
      "title": "Podcast: Podcasting 2.0 feed namespace + social share-intent links",
      "date": "2026-06-25",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1622",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1623,
      "title": "Podcast: public \"apply to be a guest\" intake → podcast_pitches",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1623",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1631,
      "title": "Add Render Blueprint for browser-only Laravel deploy",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1631",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1632,
      "title": "Podcast distribution: subscribe hub + OPML, vCard, transcript route + player card",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1632",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1633,
      "title": "Podcast: Telegram ping to host on new guest pitch",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1633",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1634,
      "title": "Podcast: register in /store catalog + /architecture map",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1634",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1635,
      "title": "Podcast: ground Ask/concierge in podcast content",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1635",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1636,
      "title": "Add /ua/podcast Ukrainian edition (#1624)",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1636",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1641,
      "title": "Podcast funnel: be-a-guest landing + nominate-a-guest flow (#1637, #1638)",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1641",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1642,
      "title": "Podcast discovery: topic filter + /podcast/network referral graph (#1639, #1640)",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1642",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1643,
      "title": "Add Railway config for laravel-sandbox deploy",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1643",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1644,
      "title": "Surface OAuth redirect URI on /admin/analytics setup card",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1644",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1645,
      "title": "Add SKINNER BOX (/pull) to the studio video-gen pipeline",
      "date": "2026-06-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1645",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "infra"
    },
    {
      "number": 1646,
      "title": "studio: publish skinner-box-reel to the /studio gallery",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1646",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1647,
      "title": "studio: SKINNER BOX \"Reckoning\" reel (narrated) + seedLocalStorage engine hook",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1647",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1648,
      "title": "Add FRONDS — a push-your-luck dill-harvest game",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1648",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1649,
      "title": "Fronds v2: rebalance the push-your-luck core + harden",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1649",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1650,
      "title": "Fronds: per-season weather modifier",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1650",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 1651,
      "title": "Fronds: sound effects + shareable daily result card",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1651",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1652,
      "title": "studio: publish the narrated \"Reckoning\" reel to the /studio gallery",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1652",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1653,
      "title": "Reskin /fronds as an absurdist field guide to fake dill botany",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1653",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1654,
      "title": "Fronds v2: a between-plant pop quiz you cannot study for",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1654",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1655,
      "title": "Fronds v3: collectible codex + a bone-dry academic foreword intro",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1655",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1656,
      "title": "Fronds v4: shareable result card — codex flex + copy-as-PNG",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1656",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1657,
      "title": "Remove Laravel sandbox and deploy configs",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1657",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1658,
      "title": "Redesign /podcast with a bespoke \"broadcast booth × editorial\" theme",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1658",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1659,
      "title": "docs(bar-exam): design meta-prompt + Phase-1 implementation sketch",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1659",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1660,
      "title": "Benchmarks v2: analytics, deep pages, bigger datasets",
      "date": "2026-06-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1660",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1661,
      "title": "Benchmarks: re-aim the surface at curious newcomers",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1661",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1662,
      "title": "Fronds: you play as Rob, who knows a thing or two about dill",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1662",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1663,
      "title": "feat(bar-exam): attempt-spine schema + refined Phase-1 spec",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1663",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1664,
      "title": "feat(study): diagnostic practice loop over the attempt spine",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1664",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1665,
      "title": "Homepage: art-piece Bauhaus hero canvas",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1665",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1666,
      "title": "fix(study): point attempt.question_id FK at base table public.questions",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1666",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1667,
      "title": "feat(bar-exam): Phase-0 content doc + sample MBE bank (study loop live)",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1667",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "docs"
    },
    {
      "number": 1668,
      "title": "Fronds: Rob discovers the fakes, and the Guide comes apart",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1668",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1669,
      "title": "feat(bar-exam): attorney-review gate prompt + verdict→seed bridge",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1669",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1670,
      "title": "Fronds: drop the invented \"carvone-locked\" from the seeds footer",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1670",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1671,
      "title": "Fronds: audit fixes — em-dash sweep, BOLT RISK, score math, ✦ legend",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1671",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "bugfix"
    },
    {
      "number": 1672,
      "title": "Fronds: start-screen redesign + color/contrast pass",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1672",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1673,
      "title": "Homepage hero: interaction-driven converge, Ask-wired gap, mobile pass",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1673",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1674,
      "title": "Add a diff-scoped em-dash gate (blocks new U+2014, not the backlog)",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1674",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1675,
      "title": "Homepage hero: richer, layered parallax",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1675",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1676,
      "title": "Fronds: start-screen polish — v2 flourishes + a living frond backdrop",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1676",
      "surface": "fronds",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1677,
      "title": "Add /week surface — weekly schedule hub + Frank's task board",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1677",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1678,
      "title": "fix: /week and /week/frank 500 — jsonb labels filter",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1678",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1679,
      "title": "Close 11 completed issues + wire /radio cross-link for podcast",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1679",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1680,
      "title": "feat(bar): public marketing landing at /bar",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1680",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1681,
      "title": "WFS P2+P3: run canvas overlay, plan API, catalog defs, and seeder",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1681",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1682,
      "title": "WFS P4: NL draft, templates, import/export, run permalinks, cost preview",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1682",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1683,
      "title": "Open issues cleanup: close done items, add LCL interactive essays",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1683",
      "surface": "lcl",
      "discipline": "research-field-data",
      "changeType": "refactor"
    },
    {
      "number": 1684,
      "title": "Homepage: living index, path row, audio band, notation-threaded feed",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1684",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1685,
      "title": "feat(align): quarterly values + goals alignment session",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1685",
      "surface": "align",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1686,
      "title": "fix: update claude-haiku-4-5 model ID to dated snapshot in all features",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1686",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1687,
      "title": "feat(align): v2 cross-quarter history dashboard at /align/history",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1687",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1688,
      "title": "fix(v2): update sonnet-4 and opus-4.7 model IDs to current versions",
      "date": "2026-06-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1688",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1689,
      "title": "feat(align): per-quarter top-tier value picks",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1689",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1691,
      "title": "feat(lcl): add Who Wrote This? game + weekly selection spot (#1210, #1213)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1691",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1692,
      "title": "fix(games): backfill Entity Wars enrichment + guard against silent-drop class (#1105 Phase 0)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1692",
      "surface": "entity-wars",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 1694,
      "title": "feat(studio): add /kettle standalone page + sss-kettle shot, completing Epic 6 code (#867)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1694",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1695,
      "title": "feat(align): wire top-tier picks into AI insight + commit summary",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1695",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1704,
      "title": "docs(heddle): close 7 milestone issues + reconcile 4 already-closed ones",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1704",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1705,
      "title": "feat(align): shared per-value color map (wizard ↔ dashboard parity)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1705",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1706,
      "title": "feat(align): surface per-value notes on the history trend cards",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1706",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1707,
      "title": "feat(align): top-tier soft cap + Claude-suggested picks",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1707",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1708,
      "title": "feat(align): quarter switcher in the wizard header",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1708",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1709,
      "title": "feat(align): carry an unfinished intention forward into the new quarter",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1709",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1710,
      "title": "feat(align): mid-quarter nudge to close out past-quarter intentions",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1710",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1712,
      "title": "feat(align): narrated synthesis (listen affordance on the Phase 4 read)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1712",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1714,
      "title": "perf(heddle)+a11y: WCAG AA pass on landing/login + mobile font de-bloat",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1714",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1716,
      "title": "feat(blog): Workflow Designer build tour post + reel script",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1716",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "infra"
    },
    {
      "number": 1717,
      "title": "docs: competitive frame vs a Spark-based visual pipeline designer",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1717",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1718,
      "title": "strata: weekly surface refresh",
      "date": "2026-06-29",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1718",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1719,
      "title": "docs(wfs): Phase 0 kernel RFC (audit + migration plan)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1719",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1720,
      "title": "feat(wfs): Phase 3 — capability + effects layer (fail-closed chokepoint)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1720",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1721,
      "title": "feat(wfs): Phase 2 — typed ports",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1721",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1722,
      "title": "feat(wfs): Phase 4 — uniform trigger ingress + row-change source",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1722",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1723,
      "title": "feat(wfs): Phase 5 — durable, resumable execution (event log, flagged)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1723",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1724,
      "title": "feat(wfs): Phase 6 — sub-workflow as a node (migration complete)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1724",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1725,
      "title": "feat(wfs): enable durable runs in production (default on, kill switch)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1725",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1726,
      "title": "feat(wfs): follow-on 1 — log-primary resume (opt-in)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1726",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1727,
      "title": "feat(wfs): follow-on 2 — durable mid-compute retry",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1727",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1728,
      "title": "feat(wfs): follow-on 3 — tenant-scoped grant effect",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1728",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1729,
      "title": "Add /reading: curated reading lists (Summer 2026 MIT)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1729",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1730,
      "title": "feat(wfs): canvas effects preview (Phase 3 in the editor)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1730",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1731,
      "title": "feat(wfs): canvas run-log timeline (Phase 5 in the run overlay)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1731",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1732,
      "title": "Reading v2: search, sort, deep-links, and an at-a-glance panel",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1732",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1733,
      "title": "feat(wfs): canvas typed-port hints (Phase 2 in the editor)",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1733",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1734,
      "title": "Reading v3: per-book permalink pages with cross-links",
      "date": "2026-06-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1734",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1735,
      "title": "feat(wfs): canvas sub-workflow picker (Phase 6 in the editor)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1735",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1736,
      "title": "Reading v4 + v5: a per-device shelf, and the Summer 2025 list",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1736",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1737,
      "title": "feat(wfs): canvas per-output-port typed-edge handles",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1737",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1738,
      "title": "Reading: backfill four more MIT lists (Summer 2021–2024)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1738",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1739,
      "title": "wf: load .env.local in run-workflow CLI",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1739",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1740,
      "title": "Reading v6: cross-list author &amp; publisher hubs",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1740",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1741,
      "title": "Reading v7: cross-list subject hubs (the third facet)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1741",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1742,
      "title": "wfs: content-ops product MVP (content.draft-approve-publish)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1742",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1743,
      "title": "Reading v8: corpus-wide explorer (/reading/all)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1743",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1744,
      "title": "content-ops: tenant-facing console at /content (UI slice 1)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1744",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1745,
      "title": "Reading v9: \"the shelf in numbers\" (/reading/stats)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1745",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1746,
      "title": "Add HTML Table Extractor utility",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1746",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1747,
      "title": "content-ops: per-tenant roster (multi-member workspaces)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1747",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1748,
      "title": "content-ops: scheduled per-tenant digests (cron path)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1748",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1749,
      "title": "Reading v10: pick of the day + Surprise me (/reading/random)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1749",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1750,
      "title": "content-ops: channel adapters (typed delivery targets)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1750",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1751,
      "title": "content-ops: grant-pinned (owner-gated) publish",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1751",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1752,
      "title": "HTML Table Extractor v2: Wikipedia import, file drop, per-table controls",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1752",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1753,
      "title": "content-ops: per-tenant spend ledger",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1753",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1754,
      "title": "Reading v11–v20: covers, gallery, tracking, paths, feed, graph & more",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1754",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1755,
      "title": "content-ops: real newsletter delivery via Resend",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1755",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1756,
      "title": "HTML Table Extractor v3: in-table transforms + SQL/LaTeX/JSON-rows export",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1756",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1757,
      "title": "Reading: real cover images (Google Books / Open Library)",
      "date": "2026-06-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1757",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1758,
      "title": "Reading: v2 \"literary broadsheet\" design system (index prototype)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1758",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1759,
      "title": "/social: autonomous, human-gated fediverse content studio (Mastodon + Bluesky)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1759",
      "surface": "social",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1760,
      "title": "content-ops: real LinkedIn delivery (enqueue to the studio gate)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1760",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1761,
      "title": "Reading v2: roll the \"literary broadsheet\" system across the whole surface",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1761",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1762,
      "title": "/social v2: threads, media + link cards, engagement metrics, broader sourcing",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1762",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 1763,
      "title": "Reading v2: per-page polish, editorial covers, accent/type tune",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1763",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1764,
      "title": "docs(env): capture recommended Claude Code web cloud-environment config",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1764",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1765,
      "title": "Consolidation strategy (\"Foundry & Slate\") + unify the ACL ladder + fix the data-layer map",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1765",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1766,
      "title": "content-ops: usage billing (spend ledger → Stripe settlement)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1766",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1767,
      "title": "/social v3: replies Inbox, smart scheduling, analytics dashboard, Threads",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1767",
      "surface": "analytics",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1768,
      "title": "fix(build): stop npm ci failing on Railway when .git is absent",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1768",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1769,
      "title": "Fix broken video on \"The Workflow Designer is running\" blog post",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1769",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 1770,
      "title": "Move GraphMy from the Lab into the Utilities hub (+ launch post & reel)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1770",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1771,
      "title": "GraphMy: seed a worked-example graph + CI reel workflow (film the launch post)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1771",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1772,
      "title": "studio: GraphMy reel (filmed) for the launch post",
      "date": "2026-07-01",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1772",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1773,
      "title": "docs(design): brainstorm a critical-analysis podcast — The Legibility Desk",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1773",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "docs"
    },
    {
      "number": 1774,
      "title": "refactor(tenancy): migrate /t /w /trip /cd onto makeTenancy (is_public + shared accessors)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1774",
      "surface": "trip",
      "discipline": "tools-boards",
      "changeType": "refactor"
    },
    {
      "number": 1775,
      "title": "fix(graphmy): resolve Stripe keys DB-first + put GraphMy back on the map",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1775",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 1776,
      "title": "refactor(games): collapse the 8 uniform math-game shells into one /games/[game] route",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1776",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "refactor"
    },
    {
      "number": 1777,
      "title": "feat(legibility): The Legibility Desk — a self-checking critique podcast (first slice)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1777",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1778,
      "title": "Add Page Weight utility (page-size analyzer + HAR viewer)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1778",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1779,
      "title": "Add server-key Claude Token Counter utility",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1779",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1780,
      "title": "refactor(ical): extract the shared RFC5545 core the three .ics emitters rolled",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1780",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 1781,
      "title": "chore(consolidation): enrichment-CLI verify result (BLOCKED) + iam↔ledger credential drift-gate",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1781",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "chore"
    },
    {
      "number": 1782,
      "title": "Token counter v2: per-model cost + context-window usage",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1782",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1783,
      "title": "Page Weight: dataviz pass on the by-type and party visualizations",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1783",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1784,
      "title": "refactor(showkit): share the RSS builder + feed helpers across /podcast and /legibility",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1784",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "refactor"
    },
    {
      "number": 1789,
      "title": "Token counter v3: expected-output field → output + total cost",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1789",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1790,
      "title": "lib/gcal: share the Calendar REST client across /calendar + /todos",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1790",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1794,
      "title": "Page Weight v3: HAR compare, cache/compression analysis, shareable links",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1794",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1795,
      "title": "feat(legibility): cross-episode scorecard + subjects index",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1795",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1796,
      "title": "Page Weight v4: request waterfall + downloadable PNG report card",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1796",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1797,
      "title": "feat(legibility): human-gated AI draft pipeline (scripts/legibility)",
      "date": "2026-07-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1797",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1798,
      "title": "Blog post: a Claude token counter with no API key",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1798",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1799,
      "title": "trips: pre-cutover audit + runbook for the /ukraine → /trip archive (#1785)",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1799",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1800,
      "title": "games: re-home game_progress from Neon into MAIN Supabase (#1786)",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1800",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 1801,
      "title": "foundry: per-registry drift gates (billing, telegram, tenancy, addons, store, commands)",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1801",
      "surface": "billing",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1802,
      "title": "Vision quest: July 2026 repo assessment memo",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1802",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1807,
      "title": "/vision: the July 2026 memo — five mechanisms, not five bets",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1807",
      "surface": "vision",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1808,
      "title": "Content-distribution graph: ontology, 100-channel census, seeded + verified edges",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1808",
      "surface": "distribution",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1809,
      "title": "/distribution: the graph rendered + the omnichannel-console PRD",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1809",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1810,
      "title": "Omnichannel slice 1: registry-driven publisher dispatcher + Nostr",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1810",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1818,
      "title": "Omnichannel: X + Farcaster publishers (one module + one edge each)",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1818",
      "surface": "social",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1819,
      "title": "Footer sitemap: consolidate to hub links only",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1819",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1820,
      "title": "Omnichannel slice 2: identity column + accounts registry surfacing",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1820",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1821,
      "title": "Omnichannel slice 3: graph-driven targets + per-edge schedule windows",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1821",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1822,
      "title": "Omnichannel slice 4: T3 auto-syndicate fan-out + kernel governance",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1822",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1823,
      "title": "Omnichannel slice 5: identity firewall + per-identity voice packs",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1823",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1824,
      "title": "Omnichannel slice 6: the Channels tab (console face)",
      "date": "2026-07-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1824",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1825,
      "title": "Harden the omnichannel console: close the fail-open publish seams",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1825",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1826,
      "title": "Red-line guard on every publish rail + outreach quarantine + /vision corrections",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1826",
      "surface": "vision",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1833,
      "title": "Footer sitemap v2+v3: Media column, semantic placement, drift gate",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1833",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1834,
      "title": "Site-wide /llms.txt: the answer-engine front door",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1834",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1835,
      "title": "Harden the LinkedIn orchestrator: fail-closed gate + status-guarded writes",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1835",
      "surface": "linkedin",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1836,
      "title": "Close the three landmine issues + stage the Extraction Series and case-study drafts",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1836",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1837,
      "title": "IndexNow: ping the Bing pool when seeded content goes live",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1837",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1838,
      "title": "Omnichannel follow-ups: X refresh serialization, site-origin media, full-text Telegram gate, publisher tests, Nostr reads",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1838",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 1839,
      "title": "Dataset JSON-LD: the two civic datasets enter Google Dataset Search",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1839",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1840,
      "title": "Comics → social: the SVG-to-PNG derivation transform",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1840",
      "surface": "comics",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1841,
      "title": "Two dark-built publishers (Telegram channel, dev.to) + the Nostr feedback edge",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1841",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1842,
      "title": "Floating Page Weight badge + modal on /utilities pages",
      "date": "2026-07-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1842",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1843,
      "title": "docs: add the Capabilities series — a full map of what the repo can do",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1843",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1844,
      "title": "Core Web Vitals lens (LCP/CLS/INP) for the Page Weight tool",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1844",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1845,
      "title": "docs: file the triaged 2026-07-04 external capabilities review",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1845",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1856,
      "title": "Week-1 hardening: automerge guard extension, capabilities drift gate, REC-8 doc fixes",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1856",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1857,
      "title": "docs: video-pipeline-v2 brainstorm (repo-verified) + /sora historical note",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1857",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1858,
      "title": "docs: answer the video-pipeline open questions + W1 phase-gated PRD",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1858",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1859,
      "title": "AI spend ledger, daily digest, /platform card, and monthly budget brake",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1859",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1860,
      "title": "docs: execute W1 Phase 0 — verify-first findings, gate PASS on the Descript path",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1860",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1861,
      "title": "Weekly backup verification workflow + disaster-recovery runbook",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1861",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 1862,
      "title": "Capabilities chapter 08: security, privacy, and resilience",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1862",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1863,
      "title": "legibility: W1 Phase 1 — the in-house episode pipeline + player captions",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1863",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1864,
      "title": "Seed-time publish gate for the blog seeder",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1864",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1865,
      "title": "legibility: W1 Phase 2 — the Descript edit node + the LLM QA rung",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1865",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1866,
      "title": "Measure the human gate: per-rail pending metrics, /platform/gates, draft expiry",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1866",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1867,
      "title": "Data retention map + weekly third-party-data sweep",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1867",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1868,
      "title": "blog: the episode-production-line build log, with three inline visuals",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1868",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1869,
      "title": "Rate-limit coverage audit: every write endpoint limited, gated, verified, or ledgered",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1869",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "test"
    },
    {
      "number": 1870,
      "title": "Blog: the review loop, explained with diagrams",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1870",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1871,
      "title": "Manual-integrations hackathon plan — 2026-07-04",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1871",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1872,
      "title": "Add /hackathon: admin-only manual-integrations burn-down board",
      "date": "2026-07-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1872",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1873,
      "title": "Hackathon board v2 + v3 + v4: self-verifying probes, recap, burn-down chart",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1873",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1874,
      "title": "Hackathon board v5: cross-device sync, pace projection, more probes",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1874",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1875,
      "title": "Hackathon board v6: Telegram milestone pings, Up Next strip, wake lock",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1875",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1876,
      "title": "Hackathon board v7: file recap to changelog draft, deploy widget, auto-check",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1876",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1877,
      "title": "Hackathon board v8–v12: smoke tests, X-ray, blocked state, report, kickoff, live ground truth",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1877",
      "surface": "hackathon",
      "discipline": "platform-admin",
      "changeType": "test"
    },
    {
      "number": 1878,
      "title": "Register HEDDLE_SITE_URL as managed synced config + telegram-cron fallback",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1878",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1879,
      "title": "Backup verify: bump to Postgres 17 client + restore container",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1879",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "chore"
    },
    {
      "number": 1880,
      "title": "Backup verify round 2: pgdg repo so pg_dump 17 actually installs",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1880",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1881,
      "title": "BACKUP-DR Q1 facts + backup-verify rounds 3 & 4 (pg_wrapper bypass, smoke tolerance)",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1881",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1882,
      "title": "Backup verify round 4: restore smoke tolerates out-of-scope object errors",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1882",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1883,
      "title": "GraphMy: throttle down purchases, keep the free tier (S5 decision)",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1883",
      "surface": "graphmy",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 1884,
      "title": "Upcycle: record the s7-upcycle decision (Nextdoor/FB dropped until partner API)",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1884",
      "surface": "upcycle",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1885,
      "title": "apply: s6-apply finding — daily-digest owner is UNSET in Actions (set one secret)",
      "date": "2026-07-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1885",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1886,
      "title": "agents: fix enqueueJob writing camelCase principalKey (agent_jobs queue never filled)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1886",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1887,
      "title": "site-health: probe /feed.xml, not the nonexistent /rss.xml",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1887",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1888,
      "title": "podcast: real square cover art (unblocks Apple/Spotify submission)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1888",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1889,
      "title": "social: sharpen the drafting engine (strategy spine, few-shot, repair loop)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1889",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1890,
      "title": "newsletter: value-first visual digest + kill dead private-PR links",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1890",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1891,
      "title": "hackathon: a recurring multi-round ritual (hub + per-round boards)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1891",
      "surface": "rituals",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1892,
      "title": "blog: publish \"A two-rung gate for AI-tested games\" extraction essay",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1892",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1893,
      "title": "platform/burn: scheduled-job heartbeat + monthly spend dashboard",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1893",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1894,
      "title": "strata: weekly surface refresh",
      "date": "2026-07-06",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1894",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1895,
      "title": "burn-read follow-ups: harden the supabase noop stub, diagnose the todos 500, fix grove-tick",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1895",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 1896,
      "title": "crss: fail loudly on a misfiled service-role key (crss-weekly RLS failure)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1896",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 1897,
      "title": "social: Default Send (send-unless-vetoed), flag-gated OFF",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1897",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1898,
      "title": "newsletter: de-jargon the \"Also shipped\" section",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1898",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1899,
      "title": "docs(social): scope Phase 2 walled-garden expansion (Facebook + Instagram)",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1899",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1900,
      "title": "[SCHEDULED 13:00 UTC] blog: parallel agents on a 559k-line repo without rot",
      "date": "2026-07-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1900",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1901,
      "title": "feat(social): Facebook Page publisher (omnichannel Phase 2 slice 1)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1901",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1902,
      "title": "studio(semaphores): real --dry-run + preflight doctor for the long-form film (#867)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1902",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1903,
      "title": "studio: reuse a /studio/director YouTube connection for local uploads",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1903",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1904,
      "title": "feat(social): Instagram publisher — the media-first shape (Phase 2 slice 2)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1904",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1905,
      "title": "studio: render + publish the Semaphores film from a surface (no terminal)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1905",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1906,
      "title": "newsletter v2: turn /changelog into a publication (per-issue pages, feed, redesigned front page)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1906",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1907,
      "title": "studio: channel picker on the Semaphores film panel",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1907",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 1908,
      "title": "voice: /voice de-LLM-ify capture surface (v1)",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1908",
      "surface": "voice",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1909,
      "title": "voice: fix broken mobile layout on /voice",
      "date": "2026-07-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1909",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1910,
      "title": "voice: bootstrap the profile with an archival essay corpus",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1910",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1911,
      "title": "newsletter: the world-class pass (share, archive, OG, feeds, dark email, + editorial voice layer)",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1911",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1912,
      "title": "newsletter: \"email me a test\" — see an issue in your own inbox on demand",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1912",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "test"
    },
    {
      "number": 1913,
      "title": "newsletter: hero cover image + word-boundary summary trim",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1913",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1914,
      "title": "voice: build the v2 de-LLM-ify rewriter",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1914",
      "surface": "voice",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1915,
      "title": "newsletter: stop printing the hero headline twice",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1915",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1916,
      "title": "voice: batch backfill — point the de-LLM-ify rewriter at existing site content",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1916",
      "surface": "voice",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1917,
      "title": "voice: topic-vocab discount in the meter + the backfill sweep driver",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1917",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1918,
      "title": "Remove Josephine client PII from committed permissions.json (#1806)",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1918",
      "surface": "josephine",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1919,
      "title": "showkit: relocate the shared show leaves out of @/app/podcast",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1919",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1920,
      "title": "wfs(enrichment): make enrichment.pipeline an honest parity proof (re: #1788)",
      "date": "2026-07-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1920",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "infra"
    },
    {
      "number": 1921,
      "title": "docs: shelve the Heddle launch push + shutter the /lcl roadmap",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1921",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "docs"
    },
    {
      "number": 1922,
      "title": "inbox: Gmail Takeout mbox importer + cutover runbook (#1205)",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1922",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 1923,
      "title": "docs(adr): draft REC-6 ADR for shared-Supabase blast radius",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1923",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 1924,
      "title": "Podcast v4: auto-transcript from audio (podcast:transcribe)",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1924",
      "surface": "podcast",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1925,
      "title": "benchmarks: flip /benchmarks to real data (one real bench-run) + fix the run path",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1925",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "bugfix"
    },
    {
      "number": 1926,
      "title": "benchmarks: monthly scheduled bench-run (self-refreshing /benchmarks)",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1926",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1927,
      "title": "Add /tashkent — interactive 3D map of Tashkent airport with an Arrival Walkthrough",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1927",
      "surface": "tashkent",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1928,
      "title": "/tashkent v2 UI polish: hide the floating pill, mobile-first scene chrome",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1928",
      "surface": "tashkent",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1929,
      "title": "Fix mobile React #418 hydration mismatch (window-reading useState)",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1929",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1930,
      "title": "/tashkent v3: a living airfield - night lighting on real TAS time, Ride the landing, traffic",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1930",
      "surface": "tashkent",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 1931,
      "title": "Homepage blog proposals (week of 2026-07-09) + /tashkent privacy scrub",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1931",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1932,
      "title": "Publish 5 blog posts on a daily cadence + a scheduled-release date gate",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1932",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1933,
      "title": "Take Gina off the automated email distros (per-user notify opt-out)",
      "date": "2026-07-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1933",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1934,
      "title": "Add a captured reel to the \"airport from open data\" post",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1934",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1935,
      "title": "Centralized comment-catcher with 12h reply auto-send for /social",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1935",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1936,
      "title": "Rebuild the airport reel with real motion, narration, and sound",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1936",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1937,
      "title": "Add unified social brand: profile, assets, and per-network copy",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1937",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1938,
      "title": "newsletter: make the Open Notebook sell + a welcome drip (Phase 1)",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1938",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1939,
      "title": "Add a co-admin tier; invite Boyle Wong as a platform/content admin",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1939",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1940,
      "title": "Default the /social reply auto-send on",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1940",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1941,
      "title": "newsletter: referral loop + /changelog as a selling page (Phase 2)",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1941",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1942,
      "title": "Make the airport reel motion smooth (deterministic 30fps capture)",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1942",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1943,
      "title": "Public /voicefit meter for the de-LLM-ify blog CTA",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1943",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1944,
      "title": "Add \"The Country That Lives Elsewhere\" — Ukrainian diaspora essay",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1944",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1945,
      "title": "Add Ukrainian twin of the diaspora essay + locale-aware blog visuals",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1945",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1946,
      "title": "reading: masthead starlight, popcorn read-along, and \"the desk\"",
      "date": "2026-07-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1946",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1947,
      "title": "Signature interactive diaspora essay (v2) + enshrine the raise-the-bar standard",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1947",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1948,
      "title": "Add \"Signed, With Assistance\" essay on the AI diligence statement",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1948",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1949,
      "title": "research/legibility-machine: askbot open-vocabulary confabulation corpus (v0.1.0)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1949",
      "surface": "legibility-machine",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1950,
      "title": "Add /huggingface: first-expedition field notes + live Hub trending observatory",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1950",
      "surface": "huggingface",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1951,
      "title": "Legibility Machine v2: prospective collector, determinism re-probe, gated DUA export, new page sections",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1951",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1952,
      "title": "atelier: Phase 1, the masthead animation chooser on /reading",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1952",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1953,
      "title": "Immersive globe opening for the diaspora essay",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1953",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1954,
      "title": "HF expeditions 02+03: /semantic-shelf in-browser search + the retrieval benchmark shootout",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1954",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1955,
      "title": "Add /admin/legibility-machine: the DUA human-gate console",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1955",
      "surface": "legibility-machine",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1956,
      "title": "Social Desk slices 1+2: tenancy chassis + tenant credential vault",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1956",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1957,
      "title": "Add the paste-ready OSF registration + the IRB determination package",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1957",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1958,
      "title": "atelier: Phase 2, inline copy editing + the commit-to-source tray",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1958",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1959,
      "title": "Airport reel: 60fps, the ElevenLabs voice, and richer camera moves",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1959",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1960,
      "title": "Social Desk slices 3+4: registry credential seam + tenant-voice draft pipeline",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1960",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1961,
      "title": "Add /chat: the site concierge as a full-page public chat",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1961",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1962,
      "title": "Legibility Machine: pre-registration v2 rigor pass (theory, design, methodology, data)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1962",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1963,
      "title": "Migrate the machine-mirror reel to motion + narration + sound",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1963",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1964,
      "title": "atelier: edit anything, an editable-regions registry + generic in-place editor",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1964",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1965,
      "title": "Legibility Machine v3 adversarial pass: fix a fatal re-identification break; aggregates-only public tier",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1965",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1966,
      "title": "Migrate the utilities reel to motion + narration + sound",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1966",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1967,
      "title": "Add a site-wide cookie-consent banner",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1967",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1968,
      "title": "Benchmarks: make /benchmarks/retrieval readable by a non-engineer",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1968",
      "surface": "benchmarks",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 1973,
      "title": "Social Desk slices 5–7: gate + publish, spend + billing, public face",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1973",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1974,
      "title": "Legibility Machine: propagate v3 prereg hardening; build the tier-C seeding pipeline",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1974",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "infra"
    },
    {
      "number": 1975,
      "title": "Atelier: one-click PR-open, and the Phase 3 harness dock (first slice)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1975",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1976,
      "title": "privacy: v2 refresh — disclose two undocumented cookies, fix invisible CTA",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1976",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 1977,
      "title": "Diaspora essay v2: voice-fit pass, term chips, links, SEO, /ua rebuild",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1977",
      "surface": "voice",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1978,
      "title": "Dedupe autoscroll/submit logic between the Atelier harness dock and /chat + Cmd-K",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1978",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1980,
      "title": "chat.jakelawrence.xyz host alias + real token streaming for /chat",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1980",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1981,
      "title": "Credential supervisor v3: autonomous mint-on-unset for platform secrets",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1981",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1982,
      "title": "The Botnet Observatory: study #2, a harm-labeled fediverse botnet census",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1982",
      "surface": "social",
      "discipline": "distribution-growth",
      "changeType": "feature"
    },
    {
      "number": 1983,
      "title": "Legibility Machine: freeze v0.2.0 and seed the tier-C ledger for real",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1983",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 1984,
      "title": "Legibility Machine: reconcile prereg prose to v0.2.0; build the retention-survival collector",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1984",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1985,
      "title": "todos: fix the listTodos 500 that broke the 8am/8:30am reminder crons",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1985",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 1986,
      "title": "Botnet Observatory: build the admin DUA export console (study #2 milestone)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1986",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 1987,
      "title": "Make /chat a general-purpose assistant, not just the site concierge",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1987",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1988,
      "title": "Atelier: the write-capable harness (Phase 3, second slice)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1988",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1994,
      "title": "docs(botnet-observatory): go-live runbook for opening the study window",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1994",
      "surface": "botnet-observatory",
      "discipline": "research-field-data",
      "changeType": "docs"
    },
    {
      "number": 1995,
      "title": "Study #1 release runbook + v4 QA pass (three register-blockers found)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1995",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 1996,
      "title": "Add stop, copy, and retry message actions to /chat",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1996",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 1997,
      "title": "Atelier: token/style edits (the Palette treatments inspector)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1997",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 1998,
      "title": "Add \"Three trips into Hugging Face\" homepage blog post",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1998",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 1999,
      "title": "Atelier: the harness tasks affordance",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/1999",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 2000,
      "title": "Atelier: cross-device DB draft store (opt-in cloud sync)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2000",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 2001,
      "title": "Atelier Phase 4: generalize beyond /reading (surface registry) + fix #2000 build break",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2001",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "bugfix"
    },
    {
      "number": 2002,
      "title": "Resolve the Study #1 v4 QA blockers: prereg amendments, two-track disclosure, hardened collector",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2002",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2003,
      "title": "Build the botnet-observatory honeypot (sensor) arm instrument",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2003",
      "surface": "botnet-observatory",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2004,
      "title": "Blog: celebrate PR #2000 with a confetti milestone post 🎉",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2004",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2005,
      "title": "Sensor arm v2: correct zap attribution, NIP-04 DM decryption, honest follow-churn",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2005",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2006,
      "title": "Study #1 protocol paper: the OSF-attachable pre-registration PDF + reproducible builder",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2006",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2007,
      "title": "Add the Legibility Machine companion wiki (study #1)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2007",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2008,
      "title": "PR-2000 celebration post v2: full-page confetti with sound + illustrated tour",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2008",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2009,
      "title": "Study #1: prospective cron, Track-1 disclosure notice, and the protocol paper on /research",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2009",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2010,
      "title": "Design doc: /research overhaul (Eurostar × JSTOR)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2010",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "docs"
    },
    {
      "number": 2011,
      "title": "/research overhaul: departures board, catalog records, route map (all phases)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2011",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2012,
      "title": "/research reskin: Eurostat × JSTOR (the intended reference)",
      "date": "2026-07-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2012",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2013,
      "title": "PR-2000 celebration post v3: full-bleed opening, the Merge Wall, uncut stats",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2013",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2014,
      "title": "SAGEN-Bench: Phase 0 instruments + S3 knockout lattice (pilot, 64/64)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2014",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2015,
      "title": "Studies #1 & #2: drop external pre-registration, arm the Study #1 window",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2015",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2017,
      "title": "Mint the K=3 test identities for the Study #1 prospective window",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2017",
      "surface": "identities",
      "discipline": "platform-admin",
      "changeType": "test"
    },
    {
      "number": 2018,
      "title": "Add /platform/secrets slots for the three LM test-identity nsecs",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2018",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "test"
    },
    {
      "number": 2019,
      "title": "Fix invisible h1 titles on the study surfaces in light theme",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2019",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2020,
      "title": "/research record pages: JSTOR landings, PDFs unburied, new research OG treatment",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2020",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2025,
      "title": "SAGEN-Bench v2: rubric externals, frozen corpus, power, free confirmatory arms + registration package",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2025",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2026,
      "title": "SAGEN-Bench: public release bundle at /downloads/sagen-bench/v1 (repo is private; the bundle is the record)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2026",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2027,
      "title": "Add PDF render pipeline for the SAGEN-Bench pre-registration",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2027",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "infra"
    },
    {
      "number": 2028,
      "title": "SAGEN-Bench release: index.html landing + redirect (bare /v1 URL 404ed)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2028",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2029,
      "title": "SAGEN-Bench: DOI stamp + the registered paid window harness (S1-live + S2)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2029",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2030,
      "title": "sagen-paid-window: guard the commit step when no window dir exists",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2030",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2031,
      "title": "sagen-paid-window: never lose paid results again (artifact + always-commit + graceful account-limit halt)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2031",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2032,
      "title": "sagen-paid-window: exempt raw window data from the em dash gate + artifact restore",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2032",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2033,
      "title": "sagen-paid-window: grant actions:read for the artifact restore step",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2033",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2034,
      "title": "SAGEN-Bench: publish the registered results (ledger, paper addendum, bundle v2)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2034",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2035,
      "title": "SAGEN ELI5: plain-language \"Put To The Test\" section for the general reader",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2035",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "test"
    },
    {
      "number": 2036,
      "title": "SAGEN: dedicated /research/sagen/bench results page",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2036",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2037,
      "title": "SAGEN: Ukrainian companion translation + v8 PDF paper addendum",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2037",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2038,
      "title": "SAGEN: v9 reconciliation + v10 reviewer-response reframe (+ persistence ablation)",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2038",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2039,
      "title": "ops: cut AI/infra build, CI, and token spend at the source",
      "date": "2026-07-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2039",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2040,
      "title": "research: add three sourced citations to Sorting Machine (Wartime Edition)",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2040",
      "surface": "sorting-machine-wartime",
      "discipline": "civic-public-data",
      "changeType": "feature"
    },
    {
      "number": 2041,
      "title": "Add Pingree Grove Studies: a civic field-data series",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2041",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2042,
      "title": "Add /narrator studio: priced narration assignments + phone recorder",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2042",
      "surface": "studio",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 2043,
      "title": "Add site-wide ELI5 explainer video system",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2043",
      "surface": "eli5",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 2044,
      "title": "Narrator v2: the house sound — Painted Bamboo intros, beds & outros",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2044",
      "surface": "narrator",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 2045,
      "title": "Narrator: on-screen teleprompter with the actual prose per piece",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2045",
      "surface": "narrator",
      "discipline": "studio-media",
      "changeType": "feature"
    },
    {
      "number": 2046,
      "title": "Pingree Grove Studies thread 2: where your tax dollar goes",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2046",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2047,
      "title": "Pingree Grove Studies thread 3: the board's decisions",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2047",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2048,
      "title": "SAGEN: ship persistence ablation in the public bundle + fix paper release URLs",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2048",
      "surface": "sagen",
      "discipline": "ai-agent-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2049,
      "title": "Pingree Grove: fix release 404s + add the FOIA engine",
      "date": "2026-07-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2049",
      "surface": "pingree-grove",
      "discipline": "research-field-data",
      "changeType": "bugfix"
    },
    {
      "number": 2050,
      "title": "strata: weekly surface refresh",
      "date": "2026-07-14",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2050",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2051,
      "title": "Add the Lightning Course: an interactive Ukrainian zero-to-B2 tool",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2051",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2052,
      "title": "ops: cut AI/infra spend — pass 2 (routine Opus → Sonnet + brake the metered agentic CI)",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2052",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2053,
      "title": "FOIA engine: editable drafts + non-opaque create errors",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2053",
      "surface": "foia",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2054,
      "title": "Ukrainian Frequency: a lemma-based open frequency list (research field data)",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2054",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2055,
      "title": "ops: enforce the AI-spend brake by default + meter the agentic CI path",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2055",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2056,
      "title": "Ship Ukrainian Frequency thread 05: the vocabulary-size self-test",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2056",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "test"
    },
    {
      "number": 2057,
      "title": "lightning: ship the real GRAC/BRUK build-your-own frequency-lemma deck",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2057",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2058,
      "title": "lightning: admin site button to generate frequency-deck audio in batches",
      "date": "2026-07-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2058",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2060,
      "title": "lightning: make the Roadmap a trackable 12-month plan",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2060",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2061,
      "title": "blog: v2 of \"Would anyone pay for the harness?\" with interactive harness demos",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2061",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2062,
      "title": "blog: relocate author images to public/images + wire portrait into the About block",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2062",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2063,
      "title": "lightning: an in-browser yes/no vocabulary-size test",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2063",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "test"
    },
    {
      "number": 2064,
      "title": "lightning: add a daily-practice coach to the Progress tab",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2064",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2065,
      "title": "blog: bump agentic-workflow-service-research _reviewedAt so the seed applies",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2065",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "chore"
    },
    {
      "number": 2066,
      "title": "Claude/workshop progression system yfj6u8",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2066",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2067,
      "title": "lightning: add a bring-your-own-text C-test under a Measure tab",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2067",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "test"
    },
    {
      "number": 2068,
      "title": "lightning: back up and restore all progress as a JSON file",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2068",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2069,
      "title": "blog + hire: buyer-reframe the essay, and make it echo the offer",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2069",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2070,
      "title": "lightning: add a Recall (production) mode to the alphabet trainer",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2070",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2071,
      "title": "lightning: show an SRS review forecast on the Flashcards tab",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2071",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2072,
      "title": "lightning: add a mastery heatmap to the alphabet Chart",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2072",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2073,
      "title": "lightning: add a study-activity calendar heatmap to Progress",
      "date": "2026-07-15",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2073",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2074,
      "title": "lightning: resume the last-visited tab on a bare visit",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2074",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2075,
      "title": "lightning: make new-cards-per-session configurable in Flashcards",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2075",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2076,
      "title": "lightning: export the flashcard deck for Anki",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2076",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2077,
      "title": "lightning: add a copy-to-clipboard progress share card",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2077",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2078,
      "title": "lightning: project from your actual study pace, not just the slider",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2078",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2079,
      "title": "workshop: scaffold the physical bench (Pi, cameras, LCD, speakers, sensors)",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2079",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2080,
      "title": "vocab-test v2: fix mobile stat-grid stacking, chart a11y, and quiz re-renders",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2080",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 2081,
      "title": "docs: scope Tinker fine-tune for /voice + corpus census",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2081",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 2082,
      "title": "workshop: invert the meta-game — craft to grow the shop, not perfect a set",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2082",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2083,
      "title": "Railway Deployment #6a3478 fix: pin Node 20 in .nvmrc",
      "date": "2026-07-17",
      "author": "railway-app[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2083",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2084,
      "title": "lightning: getting-started on-ramp + de-jargon for a general audience",
      "date": "2026-07-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2084",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2085,
      "title": "workshop: let any player configure their real bench + garage in-app",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2085",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2086,
      "title": "Add /sadie — a tap-first \"get to know you\" quest surface",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2086",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2087,
      "title": "Add AQI Dashboard at /aqi",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2087",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2088,
      "title": "Fix /aqi data fetching (Open-Meteo us_aqi variable)",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2088",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 2089,
      "title": "Geolocate /aqi to the visitor's local air quality",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2089",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2090,
      "title": "Add /noah — a tap-first \"get to know you\" quest surface",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2090",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2091,
      "title": "Add a credentialed owner-report sender (Telegram + email)",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2091",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 2092,
      "title": "owner-report: resolve EMAIL_FROM from the secrets store",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2092",
      "surface": "secrets",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2093,
      "title": "Noah's GAUNTLET (cognitive challenge rebuild) + American English house rule",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2093",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2094,
      "title": "/aqi: live AirNow headline + hourly/daily history + 7-day heatmap",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2094",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2095,
      "title": "/aqi: richer pollutant cards, interactive charts, blended AQI scale bar",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2095",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2096,
      "title": "Add /landon: a gentle read-aloud picture quest for a 6-year-old",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2096",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2097,
      "title": "Gauntlet: Focus (untimed) mode + per-question capture",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2097",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2098,
      "title": "Add /noah/coach: a coach-assisted course over Noah's missed questions",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2098",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2099,
      "title": "/aqi: weather/wind/UV, wildfires (FIRMS), health guidance, multi-sensor sources",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2099",
      "surface": "weather",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2100,
      "title": "/aqi v2: blended score across all sources + exploded per-source cards",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2100",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2101,
      "title": "Add /gauntlet: public cognitive-challenge app with optional sign-in and saved runs",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2101",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2102,
      "title": "/aqi: harden the source blend against dead/offline sensors",
      "date": "2026-07-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2102",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2103,
      "title": "Fix seed:edges so the \"Seed Supabase content\" workflow stops failing (#2016)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2103",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 2104,
      "title": "Gauntlet second pass: fix unreadable questions, add INTEL hints, fold in /noah, harder tier + progression",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2104",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 2105,
      "title": "/aqi v3: denser cards (sparklines, trends, copy/share) + AQI reference table",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2105",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2106,
      "title": "/aqi: Copy/Share buttons capture the card as an image (like /ukraine)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2106",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2107,
      "title": "Add /family — an imagining of a family single sign-on",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2107",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2108,
      "title": "Turn the /family suites into a real guardian checklist",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2108",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2109,
      "title": "Build Phase 1 of the private family hub (/family/hub)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2109",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2110,
      "title": "Family hub Phase 2: credential vault + age-of-majority handoff",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2110",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2111,
      "title": "/aqi: \"Right now, for you\" guidance card (persona-aware actions + best-time)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2111",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2112,
      "title": "Family hub: the access library (grant apps, tools & licenses to use)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2112",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2113,
      "title": "Family access library: seat pools, request-access & live Google connect",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2113",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2114,
      "title": "Expand the family access catalog + add the /family/store marketplace",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2114",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2115,
      "title": "Double the family catalog (~112 apps) + per-item /family/store/[id] SEO pages",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2115",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2116,
      "title": "/aqi: UI/UX polish — sticky AQI bar + jump nav, focus/hover, skeleton",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2116",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2117,
      "title": "Tag every app by how it's used + build the launch machinery per tag",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2117",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2118,
      "title": "Family Layer 3: provisioning connectors for api-class apps",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2118",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2119,
      "title": "Living Workshop → Bench Twin: hardened mechanics spec + project plan (P0)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2119",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2120,
      "title": "ci: diagnose pr-qa-review instant failures",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2120",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2121,
      "title": "ci: capture and clean up after pr-qa-review diagnostic",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2121",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "refactor"
    },
    {
      "number": 2122,
      "title": "Family Layer 3: live provisioning drivers (Google Workspace, Microsoft 365, GitHub Education)",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2122",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2123,
      "title": "Gauntlet Family Ops: take-turns family mode with a live couch link",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2123",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2125,
      "title": "Bench Twin P1: full-bleed canvas twin shell, SAVE v3, landscape-only",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2125",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2126,
      "title": "Family hub: activity feed, starter packs, and guardian notifications",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2126",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2127,
      "title": "Gauntlet Family Ops v2: harden the live link, polish the couch",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2127",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2128,
      "title": "Bench Twin P2: Intake — photo capture, vision draft, placement recommender",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2128",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2129,
      "title": "Bench Twin P3: photo verify, drift audits, Bench Integrity, ring unlocks",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2129",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2130,
      "title": "Family hub: weekly guardian digest",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2130",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2131,
      "title": "Gauntlet live screen v3: the family broadcast dashboard",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2131",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2132,
      "title": "Bench Twin P4: recipes, the wishlist unlock graph, capacity from verified builds",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2132",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2133,
      "title": "Gauntlet live v4: the couch plays along, with a live leaderboard",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2133",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2134,
      "title": "Family hub: per-person front door, wayfinding, pack-provisioning, store categories, digest preview, overview",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2134",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2135,
      "title": "Bench Twin P5+P6: real money in the Ledger + the live hardware Rig",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2135",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2136,
      "title": "Family hub: real onboarding empty state + full-bleed minimal chrome",
      "date": "2026-07-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2136",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2137,
      "title": "Family UI/UX refresh: collapsible hub, per-person view, one chrome across the surface",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2137",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2138,
      "title": "Gauntlet live v5: watchable specials, mobile tap fix, guaranteed bet window",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2138",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "bugfix"
    },
    {
      "number": 2139,
      "title": "Bench Twin cleanup: anon demo twin, real-story landing, v2 engines retired",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2139",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "refactor"
    },
    {
      "number": 2140,
      "title": "Family hub: Settings, &quot;Needs you&quot; rollup, and The Heir slices 1-2 (dependent login + agency)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2140",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2141,
      "title": "lightning: add a Ukrainian keyboard typing trainer (production drill)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2141",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2142,
      "title": "lightning: native-speaker audio pipeline for the alphabet (phonology surface)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2142",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "infra"
    },
    {
      "number": 2143,
      "title": "Family hub: The Heir slice 3 (the graduation) — ownership transfer + portable packet",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2143",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2144,
      "title": "lightning: native-first audio (Lightning Course) over synthesized TTS",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2144",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2145,
      "title": "lightning-audio: allow native wav/ogg/flac in the storage bucket",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2145",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2146,
      "title": "lightning: starter-deck audio, audio credits, dictation drill, handwriting tracer",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2146",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2147,
      "title": "lightning: populate starter-deck audio manifest (full 138 coverage: 22 native + 116 TTS)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2147",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "test"
    },
    {
      "number": 2148,
      "title": "Family hub: the graduation runway — drive guardians toward the handoff",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2148",
      "surface": "family",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2149,
      "title": "Family: flip the public /family page from imagining to real",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2149",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2150,
      "title": "Family: a real OpenID Connect provider (\"Sign in with the Family\")",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2150",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2151,
      "title": "Bench Twin: cell-level placement — the twin becomes spatial",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2151",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2152,
      "title": "Family: guardian-consent verifiable credentials (the family as issuer)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2152",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2153,
      "title": "lightning: design memo for the realtime voice tutor",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2153",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2154,
      "title": "Family: the graduation mints a DID (Step 3) + v2 hardening of the identity provider",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2154",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2155,
      "title": "lightning: voice tutor Slice 0 — the auto-EI speaking loop (on-device ASR + Claude)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2155",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2156,
      "title": "Bench Twin: inbound orders + the skill map awake",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2156",
      "surface": "workshop",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2157,
      "title": "Family: privacy-preserving age-assurance credentials",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2157",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2158,
      "title": "aqi: location search + presets, calmer geolocation, AA-safe chips",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2158",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2159,
      "title": "Family: credential revocation via a Bitstring Status List",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2159",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2160,
      "title": "lightning: voice tutor — native Ukrainian TTS + Phase 1 conversation partner",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2160",
      "surface": "ukraine",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2161,
      "title": "lightning: voice tutor Phase 2 + 3 — pronunciation coach + phoneme scoring",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2161",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2162,
      "title": "aqi: fix health-facing correctness defects (blend freshness, fire wording, forecast labels)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2162",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "bugfix"
    },
    {
      "number": 2163,
      "title": "aqi: signature spread bar + 24h ribbon + persona page state + real sensor map",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2163",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2164,
      "title": "lightning: voice tutor — realtime \"Live\" mode + default-on flag",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2164",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2165,
      "title": "lightning: integrate the voice tutor as a first-class \"Speaking\" tab",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2165",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2166,
      "title": "aqi: reclaim the wasted header (drop redundant title, compact location header)",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2166",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2167,
      "title": "lightning: no device-voice audio + a conversational Coach front door",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2167",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2168,
      "title": "aqi: Now / Today / Why / Trust section IA + scroll-spy sticky bar",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2168",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2169,
      "title": "family: make the runway visible with a three-sibling lifecycle interaction",
      "date": "2026-07-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2169",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2170,
      "title": "aqi: split the AirNow forecaster discussion three ways (§9.4)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2170",
      "surface": "aqi",
      "discipline": "tools-boards",
      "changeType": "feature"
    },
    {
      "number": 2171,
      "title": "family: a document vault that watches expiry and travels at graduation",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2171",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2172,
      "title": "fix(deploy): make ffmpeg-static optional so a GitHub 403 can't fail the Vercel install",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2172",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2173,
      "title": "docs: CrewAI utilization deep-dive strategy memo",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2173",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 2174,
      "title": "docs: LangGraph utilization deep dive",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2174",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "docs"
    },
    {
      "number": 2175,
      "title": "Add a model picker to /chat",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2175",
      "surface": "chat",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2176,
      "title": "lightning: make Iskra the voice-persona home + fix the mobile talk path",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2176",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "bugfix"
    },
    {
      "number": 2177,
      "title": "Add HF open-model research crew (CrewAI, off-Vercel, CI-only)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2177",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2178,
      "title": "Add Hugging Face open models to the /chat picker",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2178",
      "surface": "huggingface",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2179,
      "title": "strata: weekly surface refresh",
      "date": "2026-07-20",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2179",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2180,
      "title": "fix(deploy): exclude on-device ML runtime from /lightning traces (250 MB function limit)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2180",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "bugfix"
    },
    {
      "number": 2181,
      "title": "Add /council: a Mixture-of-Agents surface",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2181",
      "surface": "council",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2182,
      "title": "Deploy Radar: stream Vercel deploy events + detect production stalls",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2182",
      "surface": "deploys",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2183,
      "title": "chore(pwa): finish the PWA teardown — remove orphaned manifest icons + slim generators",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2183",
      "surface": "chores",
      "discipline": "household-ops",
      "changeType": "chore"
    },
    {
      "number": 2184,
      "title": "Android launcher: personal home-screen launcher (auth foundation + app scaffold)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2184",
      "surface": "auth",
      "discipline": "auth-identity",
      "changeType": "feature"
    },
    {
      "number": 2185,
      "title": "blog: ship the deploy-radar dev-log post (fills the homepage gap)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2185",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2186,
      "title": "Mobile app factory: replicable Expo scaffold + honest release roadmap",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2186",
      "surface": "mobile",
      "discipline": "mobile-launcher",
      "changeType": "feature"
    },
    {
      "number": 2187,
      "title": "legibility-machine: fix regime_change_template false-positive freeze (#2059)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2187",
      "surface": "legibility-machine",
      "discipline": "research-field-data",
      "changeType": "bugfix"
    },
    {
      "number": 2188,
      "title": "blog: v2 of the deploy-radar post (de-LLM-ify pass + more animation)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2188",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2189,
      "title": "legibility-machine: harden the prospective arm (clean exit + relay redundancy)",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2189",
      "surface": "legibility-machine",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2190,
      "title": "blog: v3 of the deploy-radar post (add the war-story beat)",
      "date": "2026-07-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2190",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2191,
      "title": "Android launcher Phase 3–4: native Money + Ask screens, Today widget, notifications",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2191",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2192,
      "title": "Gauntlet mobile v1: first app stamped from the factory",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2192",
      "surface": "gauntlet",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2193,
      "title": "Council v2: Review mode (adversarial QA layer)",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2193",
      "surface": "council",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2194,
      "title": "Define \"necessary cost\" on the LLM-QP research page",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2194",
      "surface": "llm-qp",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2195,
      "title": "blog: the model council post (mixture-of-agents, with fan-out + rebuttal visuals)",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2195",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2196,
      "title": "blog: council post v2, the fully visual edition (film + interactive run + chart + table)",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2196",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2197,
      "title": "blog: council post v3, sound and shapes (narrated reel + scenario picker + verdict-shape gallery)",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2197",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2198,
      "title": "blog-media: 9:16 narrated social cut of the model-council reel",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2198",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2199,
      "title": "notifications: site-wide mute switch across push, Telegram, and email",
      "date": "2026-07-21",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2199",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 2200,
      "title": "Ukrainian Frequency thread 02: CEFR alignment (honestly scoped)",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2200",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2201,
      "title": "research: Counting the Killings, a police open-data essay combo",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2201",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2202,
      "title": "research(police-shootings): rigor pass v0.1.1 - primary-sourced matrix, split FBI series, methodology",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2202",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2203,
      "title": "research(police-shootings): v0.2.0 record-level layer - overlap + honest capture-recapture",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2203",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2204,
      "title": "Add year-by-year statistics and trend reading to police-shootings essay 06",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2204",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2205,
      "title": "Add One Load-Bearing Company research surface",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2205",
      "surface": "load-bearing-company",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2206,
      "title": "One Load-Bearing Company: commit the citation ledger, cut v2 then v3",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2206",
      "surface": "load-bearing-company",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2207,
      "title": "Police-shootings dataset v0.3.0: the verified-claims layer",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2207",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2208,
      "title": "Ukrainian Frequency thread 02, Plan B: open-CEFR-field census + gold worklist",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2208",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2209,
      "title": "Redesign the Counting the Killings series index as an evidence board",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2209",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2210,
      "title": "ci: give prod-parity build headroom + a warm Next.js cache",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2210",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2211,
      "title": "v2 pass on the evidence board: third counter, honest dashes, jump-list, ledger claims",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2211",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2212,
      "title": "One Load-Bearing Company: full show-your-work layer (published ledger, hashed release, live verify)",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2212",
      "surface": "load-bearing-company",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2213,
      "title": "ci: path-gate the two extra PR builds + warm prod-parity cache",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2213",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2214,
      "title": "Make the Counting the Killings series link-heavy, inside and out",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2214",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2215,
      "title": "One Load-Bearing Company: verified primary-source deep links per edge",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2215",
      "surface": "load-bearing-company",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2216,
      "title": "Ukrainian Frequency thread 03: the derussification pass",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2216",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2217,
      "title": "Essay 07 (What a Real Count Would Take) + evidence-first OG card",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2217",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2218,
      "title": "Ukrainian Frequency thread 04: audio and paradigms",
      "date": "2026-07-22",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2218",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2219,
      "title": "Deepen Ukrainian Frequency thread 04 to the full top-12,000",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2219",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2220,
      "title": "Wire research thread 04 paradigms + IPA into Lightning flashcards",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2220",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2221,
      "title": "Wire research thread 03 derussification into Lightning flashcards",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2221",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2222,
      "title": "Extend the Lightning frequency deck from top-2,000 to top-5,000",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2222",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2223,
      "title": "ukrainian-frequency: validated CEFR overlay (thread 02) from PULS",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2223",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2224,
      "title": "Essay 08 \"The Two Whys\" + the DCRA and GAO receipts wired into essays 02 and 07",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2224",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2225,
      "title": "Fix CI AI-spend telemetry (migration 0012) and pin the QA workflow's Claude CLI",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2225",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "bugfix"
    },
    {
      "number": 2226,
      "title": "Findings 08-09 + essay 09: the blind-spot synthesis and the disparity layer (dataset v0.4.0)",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2226",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2227,
      "title": "Make the Lightning audio harvest survive Commons rate limits",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2227",
      "surface": "lightning",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2228,
      "title": "Final series review: accuracy and staleness fixes across Counting the Killings",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2228",
      "surface": "police-shootings",
      "discipline": "research-field-data",
      "changeType": "bugfix"
    },
    {
      "number": 2229,
      "title": "Fix major white space on /research/ukrainian-frequency",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2229",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "bugfix"
    },
    {
      "number": 2230,
      "title": "Prominent in-page EN/UA switch on Ukrainian Frequency",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2230",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2231,
      "title": "Localize the remaining English on the /ua Ukrainian Frequency page",
      "date": "2026-07-23",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2231",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2232,
      "title": "Essays 10-11: where the ratio comes from, and the officer ledger audited by the same rules",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2232",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2233,
      "title": "Essay 12: The Word Mandated + the survey denominator for essay 10",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2233",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2234,
      "title": "Add Goose Patrol to the math games library",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2234",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2235,
      "title": "Harden Goose Patrol: extract a tested engine, lock the pedagogy",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2235",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "refactor"
    },
    {
      "number": 2236,
      "title": "Add /research/ice-claims: \"How Would I Know?\", a methodology inventory for ICE claims",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2236",
      "surface": "ice-claims",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2237,
      "title": "Goose Patrol: make the scoreboard honor Press's tie",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2237",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2238,
      "title": "ice-claims v2: close the corpus's open items + plain-language layer + UI polish",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2238",
      "surface": "ice-claims",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2239,
      "title": "inbox: relay mail sent from the Gmail forward target",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2239",
      "surface": "inbox",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 2240,
      "title": "ice-claims: a narrated edition, through the budget-aware ElevenLabs pipeline",
      "date": "2026-07-24",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2240",
      "surface": "ice-claims",
      "discipline": "research-field-data",
      "changeType": "infra"
    },
    {
      "number": 2241,
      "title": "research: \"Ninety-Seven Percent Off,\" an essay on the token relay market",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2241",
      "surface": "relay-market",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2242,
      "title": "Essay: Seeing like a model (the Claude 5 context doctrine, audited against this repo's own constitution)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2242",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2243,
      "title": "Add \"The Legible Fold\": an interactive AlphaFold essay and demo (research #22)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2243",
      "surface": "alphafold",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2244,
      "title": "Seeing like a model, follow-ups: flagship cover video + the pre-registered context-doctrine experiment",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2244",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2245,
      "title": "research: downloadable dataset + /ua twin for the relay-market essay",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2245",
      "surface": "relay-market",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2246,
      "title": "essay: The napkin math is public now, on the Kimi-K3 open-weights release",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2246",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2247,
      "title": "strata: weekly surface refresh",
      "date": "2026-07-27",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2247",
      "surface": "strata",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2248,
      "title": "Add /inference: the site's own provider metrics table (HF-style)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2248",
      "surface": "inference",
      "discipline": "ai-agent-infra",
      "changeType": "feature"
    },
    {
      "number": 2249,
      "title": "AlphaFold v2: p53 domain strip + smooth backbone ribbon",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2249",
      "surface": "alphafold",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2250,
      "title": "research: price-cliff hero + responsive type for the relay market essay",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2250",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2251,
      "title": "Serve an OpenAI-compatible /v1 gateway with first-party keys",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2251",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2252,
      "title": "Seeing like a model v2: board polish, completed experiment registration, 9:16 cover cut",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2252",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2253,
      "title": "atelier: publish without a deploy (Phase 5) + the homepage becomes editable",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2253",
      "surface": "atelier",
      "discipline": "novels-atelier",
      "changeType": "feature"
    },
    {
      "number": 2254,
      "title": "Context-doctrine experiment: launch state (runner, frozen run spec, scripted scorer; battery pending permission)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2254",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2255,
      "title": "ci: fix the prod-parity OOM by serializing static generation under CI",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2255",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "bugfix"
    },
    {
      "number": 2256,
      "title": "Add /gather: unlisted Family Nights scheduling + polling board",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2256",
      "surface": "gather",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2257,
      "title": "ci: shrink the prod-parity CI heap ceiling + webpack memory optimizations",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2257",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2258,
      "title": "Ukrainian Frequency: join the author-shared Borodin A1 lexical minimum (the closed seam)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2258",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2259,
      "title": "Polish + harden /gather (Family Nights v2)",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2259",
      "surface": "gather",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2260,
      "title": "Claude/context engineering essay bo7qd4",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2260",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2261,
      "title": "Bump internal/external link density and fix private-repo CTAs across research + blog surfaces",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2261",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 2262,
      "title": "Add PCUH Teacher's Guide to the CEFR field census; fix stale comment",
      "date": "2026-07-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2262",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "bugfix"
    },
    {
      "number": 2263,
      "title": "Add the /gather screening gate: Gina picks her nights first",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2263",
      "surface": "gather",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2264,
      "title": "Fix private-repo 404 links in two more blog posts (+ regression guard)",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2264",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 2265,
      "title": "Give the /gather screener a free-pick 90-day calendar",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2265",
      "surface": "calendar",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2266,
      "title": "Join the open-access A2 lexical minimum into Ukrainian Frequency thread 02",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2266",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2267,
      "title": "Accuracy pass on the A2 lexical-minimum join: fold Latin homoglyphs, drop rank 0",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2267",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2268,
      "title": "Add /spend, an unlisted data-first vendor spend reconciliation",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2268",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2269,
      "title": "ci(prod-parity): drop source-map work in parity CI so the build fits the runner",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2269",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2270,
      "title": "Rewrite /spend for a non-technical reader, and set all four spending limits",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2270",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2271,
      "title": "Cut August further: two meters off, two subscriptions cancelled",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2271",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2272,
      "title": "Thread 06, the genre split: test whether \"off-list\" means rare or just unreported",
      "date": "2026-07-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2272",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 2273,
      "title": "ops: freeze all 54 scheduled workflows for the spend break",
      "date": "2026-07-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2273",
      "surface": "spend",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2274,
      "title": "docs: correct the cron-freeze restore map for what actually happened",
      "date": "2026-07-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2274",
      "surface": "docs",
      "discipline": "docs-process",
      "changeType": "bugfix"
    },
    {
      "number": 2275,
      "title": "CRSS: grant Gina owner on the crss exam + a reusable member-grant script",
      "date": "2026-08-26",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2275",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 2276,
      "title": "CRSS: mark 0014 applied, document the paused-project failure mode",
      "date": "2026-08-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2276",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 2277,
      "title": "CRSS: replace the hardcoded admin password with real session auth",
      "date": "2026-08-27",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2277",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 2278,
      "title": "Add the DPF Cleaning Chicago parts catalog, hardened and with two marketplace channels",
      "date": "2026-08-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2278",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2279,
      "title": "CRSS: syllabus review tooling for Fall 2026 (backfill + 4 review aids)",
      "date": "2026-08-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2279",
      "surface": "crss",
      "discipline": "crss-exam-prep",
      "changeType": "feature"
    },
    {
      "number": 2280,
      "title": "Add /research/other-cheek: a 1995 seminar paper, scored against thirty years",
      "date": "2026-08-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2280",
      "surface": "other-cheek",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2281,
      "title": "Reframe /research/other-cheek around the author, plus an accuracy pass",
      "date": "2026-08-28",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2281",
      "surface": "other-cheek",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2282,
      "title": "ops: restore deploy-watch, the one job the freeze should not have kept",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2282",
      "surface": "deploys",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2283,
      "title": "Rebuild the DPF catalog from real inventory and real contact details",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2283",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2284,
      "title": "Make the page the document: paper and red pen first, register an afterthought",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2284",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2285,
      "title": "Add an admin uploader that feeds photos and documents into the DPF catalog",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2285",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2286,
      "title": "Reader UX, motion, mobile, and the Spock premise",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2286",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2287,
      "title": "Ratify the connection-wizard standard, with three connectors built to it (plus a DPF client seat)",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2287",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2289,
      "title": "Read-only DNS cutover preflight for the DPF catalog (/admin/dpf/dns)",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2289",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2290,
      "title": "A scrolly twin for Other Cheek",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2290",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2292,
      "title": "A Search optimization engine for Google Ads, and the dashboard over it",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2292",
      "surface": "ads",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2293,
      "title": "Other Cheek story: the polish pass",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2293",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2294,
      "title": "DPF DNS wizard: the standing verify mode",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2294",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2295,
      "title": "Heddle week review: fix the Details 404 and make step 5 a real review",
      "date": "2026-08-29",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2295",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "bugfix"
    },
    {
      "number": 2296,
      "title": "Heddle week review: the reviewer's toolkit (find, listen, track, request changes)",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2296",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2297,
      "title": "The shop owner's cutover page (/admin/dpf/cutover)",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2297",
      "surface": "admin",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2298,
      "title": "Collect product-listing data into a listings board",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2298",
      "surface": "listings",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2299,
      "title": "Heddle week review: Heddle makes the requested changes, in the page",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2299",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2300,
      "title": "DPF: ready the product pages for real photography, and plan the Cloudflare edge",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2300",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2301,
      "title": "The ordered DPF DNS cutover, and its rollback",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2301",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2302,
      "title": "Harden the listings collector: three real defects",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2302",
      "surface": "listings",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2303,
      "title": "Heddle week review: surface the mock exam, the document the reader was hiding",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2303",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2304,
      "title": "Publish Greg's product photography and track the units held back from the catalog",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2304",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2305,
      "title": "Heddle: surface the practice final, reconcile all 16 weeks to the item bank",
      "date": "2026-08-30",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2305",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2306,
      "title": "Heddle: review a week by question, and fix the question itself",
      "date": "2026-08-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2306",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "bugfix"
    },
    {
      "number": 2307,
      "title": "All seven listings have a page, and the board links to them",
      "date": "2026-08-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2307",
      "surface": "listings",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2308,
      "title": "Heddle: catch duplicates across weeks, review from the keyboard",
      "date": "2026-08-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2308",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2309,
      "title": "Heddle: a director's overview, in the language a director already owns",
      "date": "2026-08-31",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2309",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2310,
      "title": "Bring the catalog briefing in line with what actually shipped",
      "date": "2026-09-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2310",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2311,
      "title": "Heddle week review: let her write the document, and say which store is talking",
      "date": "2026-09-01",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2311",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2312,
      "title": "Heddle week review: a polish pass, and the verdict nobody gave",
      "date": "2026-09-02",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2312",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2313,
      "title": "Narrow the DPF worker to /parts, and record the measured zone baseline",
      "date": "2026-09-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2313",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2314,
      "title": "Italian as Black: a decision audit of 902 games, catalog #24",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2314",
      "surface": "italian-as-black",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2315,
      "title": "Heddle multi-credential banks: Phase 0 recon and Phase 1 blueprints",
      "date": "2026-09-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2315",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2316,
      "title": "Heddle Phase 2: credential blueprints as first-class data",
      "date": "2026-09-03",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2316",
      "surface": "heddle",
      "discipline": "heddle-product",
      "changeType": "feature"
    },
    {
      "number": 2317,
      "title": "Blueprint coverage in the UI, and the Phase 3 authoring pipeline",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2317",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "test"
    },
    {
      "number": 2318,
      "title": "Restore the item-bank write path, which never existed",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2318",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2319,
      "title": "Put ChessGuessr's review schedule on the shared FSRS module",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2319",
      "surface": "chessguessr",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2320,
      "title": "The bank draft review surface, and the Phase 3 gate becomes measurable",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2320",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2321,
      "title": "Add a verified copy-then-delete path for shrinking Supabase storage",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2321",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2322,
      "title": "Make the storage archive runnable, and back up what it would orphan",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2322",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2323,
      "title": "Make the Fall 2026 review something Gina can actually sit down and do",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2323",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2324,
      "title": "Fail the backup smoke when a restore silently does not happen",
      "date": "2026-09-04",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2324",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2325,
      "title": "Record the backup drill that finally proved the restore",
      "date": "2026-09-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2325",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2326,
      "title": "Add /watch: a tiered streaming-catalog sync over TMDB",
      "date": "2026-09-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2326",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2327,
      "title": "Fix four defects in the Italian trainer, then make it actually teach",
      "date": "2026-09-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2327",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2328,
      "title": "Add the household's watch lists to /watch",
      "date": "2026-09-05",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2328",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2329,
      "title": "Distribution: measure the state, then argue for a theory",
      "date": "2026-09-06",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2329",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2330,
      "title": "Freeze Study #1: the S5 evidence harness, and the gap the window actually has",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2330",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2331,
      "title": "Schedule the backlog, and fail the build when a slot is missed",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2331",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2332,
      "title": "Record the assigned Cloudflare pair and let the owner's page report the move",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2332",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2333,
      "title": "Record the parity proof taken before the DPF nameserver change",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2333",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2334,
      "title": "Deploy the DPF catalog worker from GitHub Actions, and record the nameserver change",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2334",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "feature"
    },
    {
      "number": 2335,
      "title": "Record Phase 4, and land the Cloudflare wizard fix that missed the last merge",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2335",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2336,
      "title": "Name the two causes of the DPF deploy token's 10000 before wrangler hides them",
      "date": "2026-09-07",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2336",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2337,
      "title": "Phase 1: rebuild the DPF site off Squarespace, minus the images that are not the client's",
      "date": "2026-09-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2337",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2338,
      "title": "Strike two unattributable part numbers, ship three licensed images",
      "date": "2026-09-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2338",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2339,
      "title": "Take workers_dev back out: it never worked and it hid a working deploy",
      "date": "2026-09-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2339",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2340,
      "title": "Route the assets and the orphaned pages, or /parts serves unstyled with dead links",
      "date": "2026-09-08",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2340",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2341,
      "title": "Turn the review URL on, and keep it out of search",
      "date": "2026-09-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2341",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2342,
      "title": "Make the noindex on the review copy actually fire",
      "date": "2026-09-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2342",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2343,
      "title": "Take every page back off the customer domain until he approves it",
      "date": "2026-09-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2343",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2344,
      "title": "Actually delete the routes, because wrangler will not",
      "date": "2026-09-09",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2344",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2345,
      "title": "Fix the path bug that stopped the reconcile before its first API call",
      "date": "2026-09-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2345",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2346,
      "title": "MANOR bridge: runnable systemd unit + install.sh",
      "date": "2026-09-10",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2346",
      "surface": "manor",
      "discipline": "workshop-house",
      "changeType": "feature"
    },
    {
      "number": 2347,
      "title": "Watch: make a renamed streaming service diagnose itself",
      "date": "2026-09-11",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2347",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2348,
      "title": "Ukrainian frequency: the B1 extension (stages 2 to 4) and its pipeline plan",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2348",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "infra"
    },
    {
      "number": 2349,
      "title": "fix(watch): --list-providers actually lists providers",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2349",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2350,
      "title": "fix(watch): resolve Apple TV+ from the real provider list",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2350",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "bugfix"
    },
    {
      "number": 2351,
      "title": "Ukrainian frequency: open feature resources for the gap-fill model, each as its own ablation step",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2351",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2352,
      "title": "feat(watch): Paramount+ tracks Premium, completing the registry",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2352",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2353,
      "title": "Distribution: log the ukrainian-frequency-v1 slot, the note to the PULS authors sent",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2353",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2354,
      "title": "Ukrainian frequency: the Wiktionary derived-term family graph, the open fallback for the PULS word families",
      "date": "2026-09-12",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2354",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2355,
      "title": "Ukrainian frequency: bring the PULS note's figures up to the shipped model",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2355",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2356,
      "title": "perf(watch): a wire format for the snapshots, and stop logging a baseline as change",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2356",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2357,
      "title": "feat(watch): restore the nightly schedule, and let the rating say how many voted",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2357",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2358,
      "title": "Ukrainian frequency: decode the apostrophe entities in the PULS join and rebuild every tier on it",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2358",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2359,
      "title": "Ukrainian Frequency: the text profiler (thread 06)",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2359",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2360,
      "title": "Ukrainian Frequency: fix the apostrophe in the thread-04 paradigm join",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2360",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "bugfix"
    },
    {
      "number": 2361,
      "title": "Profiler: stop the gloss list claiming an unmatched word is off the list",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2361",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2362,
      "title": "Ukrainian Frequency: crosswalk the two lexical minimums against the validated CEFR profile",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2362",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2363,
      "title": "Crosswalk: CC-BY-SA, because every row carries a PULS level",
      "date": "2026-09-13",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2363",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2364,
      "title": "Ukrainian frequency: widen the PULS POS join and take the minima feature out of the gap-fill model (WO-0)",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2364",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2365,
      "title": "Add /appointments: private household appointments board",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2365",
      "surface": "appointments",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2366,
      "title": "Ukrainian frequency: ukvocab package, Zenodo tooling, the hosted lemmatizer with its deploy path, and the upstream worklists (WO-1 to WO-5)",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2366",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2367,
      "title": "Appointments: full contact card + a real bookable date",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2367",
      "surface": "appointments",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2368,
      "title": "Restore household-comms crons (todos, calendar, telegram)",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2368",
      "surface": "todos",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2369,
      "title": "Add architecture brief: automated public agent hackathon platform",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2369",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2370,
      "title": "Swap agent-hackathon round-one pick from ICE Claims to Italian as Black chess",
      "date": "2026-09-14",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2370",
      "surface": "ice-claims",
      "discipline": "research-field-data",
      "changeType": "feature"
    },
    {
      "number": 2371,
      "title": "Add the DPF catalog About page from Greg's own company description",
      "date": "2026-09-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2371",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2374,
      "title": "Scope the price instruction to cleaning, and date the CARB case correctly",
      "date": "2026-09-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2374",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2375,
      "title": "Scope the Volvo hold to paid ads, and give the California notice its precedent",
      "date": "2026-09-16",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2375",
      "surface": "ads",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2376,
      "title": "DPF platform: the whole PRD of 2026-09-16",
      "date": "2026-09-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2376",
      "surface": "platform",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2377,
      "title": "DPF: demo the add flow, mark up the copy, edit a part's words",
      "date": "2026-09-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2377",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2378,
      "title": "Ukrainian frequency: the multiword table (B1 extension, stage 3)",
      "date": "2026-09-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2378",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2379,
      "title": "Ukrainian frequency: the deposit gap the multiword table left, and the nlp_uk re-lemmatization",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2379",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2380,
      "title": "DPF: answer a HEAD on the review pages instead of throwing",
      "date": "2026-09-17",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2380",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2381,
      "title": "Playtest gate: the runner runs out of disk, not memory",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2381",
      "surface": "playtest",
      "discipline": "devops-quality",
      "changeType": "feature"
    },
    {
      "number": 2382,
      "title": "A dispatch workflow that can mint the Zenodo DOI",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2382",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2383,
      "title": "DPF: act on Greg's answers, and take the cleaning off the parts shelf",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2383",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2384,
      "title": "DPF: nine of Greg's answers, one narrowed rule, and the ad plan",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2384",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "feature"
    },
    {
      "number": 2385,
      "title": "Add design-sync config for claude.ai/design",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2385",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2386,
      "title": "Zenodo: send a User-Agent, and say why a refusal happened",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2386",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2387,
      "title": "Storybook as the design-system workbench (redesign, phase 1)",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2387",
      "surface": "storybook",
      "discipline": "devops-quality",
      "changeType": "feature"
    },
    {
      "number": 2388,
      "title": "Record the minted Zenodo DOI for frequency",
      "date": "2026-09-18",
      "author": "github-actions[bot]",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2388",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2389,
      "title": "DPF: fix the D1 switch-on procedure, then use it to actually bind D1",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2389",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 2390,
      "title": "Zenodo: a test a mint could break, and a parity step that missed it",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2390",
      "surface": "tests",
      "discipline": "devops-quality",
      "changeType": "test"
    },
    {
      "number": 2391,
      "title": "Three candidate design languages, switchable in Storybook (redesign, phase 3)",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2391",
      "surface": "storybook",
      "discipline": "devops-quality",
      "changeType": "feature"
    },
    {
      "number": 2393,
      "title": "Pin the Claude Design project id for design-sync",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2393",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2394,
      "title": "DPF: bind R2, and fix the two bugs that running it for the first time exposed",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2394",
      "surface": "dpf",
      "discipline": "commerce-billing",
      "changeType": "bugfix"
    },
    {
      "number": 2395,
      "title": "Publish the Storybook workbench to GitHub Pages",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2395",
      "surface": "storybook",
      "discipline": "devops-quality",
      "changeType": "feature"
    },
    {
      "number": 2396,
      "title": "CI: the concurrency comment claimed a guarantee it does not give",
      "date": "2026-09-18",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2396",
      "surface": "ci",
      "discipline": "devops-quality",
      "changeType": "infra"
    },
    {
      "number": 2398,
      "title": "Lemmatizer doc: the setup step named a secret the workflow never reads",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2398",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "docs"
    },
    {
      "number": 2399,
      "title": "The External Witness: a game played on the real pages of this site",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2399",
      "surface": "games",
      "discipline": "games-interactive",
      "changeType": "feature"
    },
    {
      "number": 2401,
      "title": "Ads: Google sunset developer tokens, and our gate could never pass",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2401",
      "surface": "ads",
      "discipline": "platform-admin",
      "changeType": "feature"
    },
    {
      "number": 2402,
      "title": "Lemmatizer: the Fly app is called lemmatizer, and a preflight that proves it",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2402",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2403,
      "title": "Lemmatizer: deploy through Fly's registry, because GHCR is private and must stay so",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2403",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2404,
      "title": "Revert the External Witness",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2404",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2405,
      "title": "Distribution: make the research work discoverable, and give the newsletter an acquisition plan",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2405",
      "surface": "newsletter",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2406,
      "title": "Blog: the month the best number got worse, with the visual that shows why",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2406",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2407,
      "title": "Blog cover: film the leaking feature, not a title card",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2407",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "feature"
    },
    {
      "number": 2408,
      "title": "Covers: a portable recorder, and a loop that films as one whole period",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2408",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2409,
      "title": "IndexNow: a refused ping is no longer a silent one",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2409",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2410,
      "title": "Unblock red main, and flip the Telegram edge live on its own stated condition",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2410",
      "surface": "telegram",
      "discipline": "comms-messaging",
      "changeType": "feature"
    },
    {
      "number": 2411,
      "title": "Ukrainian Frequency: make the prose tier drift-guarded like the data tier",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2411",
      "surface": "ukrainian-frequency",
      "discipline": "language-learning",
      "changeType": "feature"
    },
    {
      "number": 2412,
      "title": "Secrets ledger: classify COVERS_CHROMIUM_PATH, unblocking the inventory gate",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2412",
      "surface": "money",
      "discipline": "household-ops",
      "changeType": "feature"
    },
    {
      "number": 2413,
      "title": "Pace the social queue: 2x/day per channel, and give it a clock",
      "date": "2026-09-19",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2413",
      "surface": "general",
      "discipline": "general-infra",
      "changeType": "feature"
    },
    {
      "number": 2414,
      "title": "Blog: fix the broken hero and the day-early date on the erratum post",
      "date": "2026-09-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2414",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    },
    {
      "number": 2415,
      "title": "Blog dates: fix the four early-morning stamps, and drop the guard's allowlist",
      "date": "2026-09-20",
      "author": "jake0lawrence",
      "url": "https://github.com/jake0lawrence/jakelawrence.xyz/pull/2415",
      "surface": "blog",
      "discipline": "content-editorial",
      "changeType": "bugfix"
    }
  ],
  "trackers": [
    {
      "n": "1",
      "title": "The corpus"
    }
  ]
}