{
  "day": "2026-10-28",
  "merges": 246,
  "baseline_merges_per_day": 280,
  "lines_added": 88016,
  "lines_removed": 874,
  "files_changed": 1701,
  "busiest_hour": {
    "hour": 22,
    "merges": 15
  },
  "hours": [
    13,
    11,
    10,
    9,
    10,
    11,
    10,
    11,
    8,
    7,
    11,
    10,
    12,
    9,
    9,
    11,
    8,
    12,
    13,
    9,
    10,
    8,
    15,
    9
  ],
  "agents": [
    [
      "Claude Sonnet 5.5",
      212
    ],
    [
      "Claude",
      32
    ],
    [
      "Claude Opus 5.5",
      2
    ]
  ],
  "products": [
    {
      "name": "ai-bookkeeper",
      "merges": [
        {
          "sha": "93c29c0fbf1af05ced4aae0d67a106c1844ee72d",
          "at": 1793145716000,
          "title": "ai-bookkeeper: S-corporation election worksheet (scorp), with QBI limits, salary sweep and break-even",
          "pr": 10991,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 296,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-when-an-s-corp-election-pays-for-itself.md",
            "ventures/ai-bookkeeper/scorp.mjs",
            "ventures/ai-bookkeeper/scorp.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "ec63b52a5ee3e81b7a43cb46ba39f941c9c13272",
          "at": 1793146783000,
          "title": "ai-bookkeeper: self-employed health insurance and retirement deductions in the federal estimate",
          "pr": 10993,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: self-employed health insurance and retirement deductions in the federal estimate",
            "post: shorten description",
            "ai-bookkeeper: CLI tests find cli.mjs from the test file, not the cwd; trim two post descriptions",
            "post: trim description",
            "flagships: bring ai-bookkeeper next: under its 2,000-character cap"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 11,
          "lines_added": 138,
          "lines_removed": 13,
          "added_files": [
            "docs/posts/2026-10-28-your-own-health-premiums-lower-your-estimated-tax.md",
            "prompts/runs/2026-10-28-session_01AcxTtGcyAc3kkesbFBcfxg.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "dab5df50bc0cb1eeafa8e23473e2a081ce35eb4f",
          "at": 1793149039000,
          "title": "ai-bookkeeper: estimated-payment due dates skip DC holidays (Emancipation Day, MLK Day)",
          "pr": 11001,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 76,
          "lines_removed": 5,
          "added_files": [
            "docs/posts/2026-10-28-estimated-tax-due-dates-holidays.md",
            "ventures/ai-bookkeeper/estimated-due-dates.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6e97bc0ab6d8f62b238affdecde6de0b753c5568",
          "at": 1793149907000,
          "title": "redteam: ai-bookkeeper deposits 2026-10-28",
          "pr": 11007,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: ai-bookkeeper deposits 2026-10-28",
            "redteam: record PR number"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 2,
          "lines_added": 200,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtHbhYtha13ruMy1no4.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5ffbe5f6c609c0f2ef6c49733f3511b4562356a7",
          "at": 1793149961000,
          "title": "ai-bookkeeper: child tax credit in the federal estimate",
          "pr": 11008,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: child tax credit in the federal estimate",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 132,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-children-lower-your-estimated-tax.md",
            "prompts/runs/2026-10-28-session_01E5sJKnnTS8HfReAtriXgY4.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d945de18ae75725e61950dd9093c9d977455b56d",
          "at": 1793150444000,
          "title": "ai-bookkeeper: QBI wage limit and service phase-out in the federal estimate",
          "pr": 11010,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: QBI wage limit and service phase-out in the federal estimate",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 203,
          "lines_removed": 8,
          "added_files": [
            "docs/posts/2026-10-28-qbi-deduction-stops-at-the-threshold.md",
            "prompts/runs/2026-10-28-session_01E5sJKmU7qaLfk3HUh6xm6B.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "96e7a23821aa916336c16bf36be4e8f860247caa",
          "at": 1793152654000,
          "title": "ai-bookkeeper: itemised deductions and net investment income tax in the federal estimate",
          "pr": 11012,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 70,
          "lines_removed": 7,
          "added_files": [
            "docs/posts/2026-10-28-the-3-8-percent-tax-freelancers-with-investments-forget.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8dca2808a0a42ea1c45b46c3d7d347c8546b5abc",
          "at": 1793152686000,
          "title": "ai-bookkeeper: child credit, service and business-wage fields on the estimate page",
          "pr": 11013,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 38,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-two-kids-take-4400-off-a-100000-estimate.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "44f9c02999d0bd0f610cffef7c5e93699c3cd455",
          "at": 1793152733000,
          "title": "ai-bookkeeper: age 65, blindness and the senior deduction in the federal estimate",
          "pr": 11011,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 57,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-29-a-65-year-old-freelancer-and-the-senior-deduction.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "455992b32d72035c38be5a201922fc870b6da074",
          "at": 1793153386000,
          "title": "ai-bookkeeper: script the 2027 revenue-procedure probe",
          "pr": 11015,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: script the 2027 revenue-procedure probe"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 3,
          "lines_added": 97,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtJ1zneNmWxneLkTPu1.json",
            "ventures/ai-bookkeeper/eval/revproc-probe.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "fa1160f6b977c5afec00c821132ad19516ed6638",
          "at": 1793154254000,
          "title": "ai-bookkeeper: repair receipt dates OCR half-read",
          "pr": 11021,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: repair receipt dates OCR half-read (date right 79.2% to 80.2% on 626 SROIE scans)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 127,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-receipt-dates-ocr-cannot-read.md",
            "prompts/runs/2026-10-28-session_01E5sJKj3fcY95QXUqUiJrXz.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3132feb589ad16ada2656c5e3495e0a3d504b4ed",
          "at": 1793156265000,
          "title": "ai-bookkeeper: age 65 / blind fields on the tax estimate card",
          "pr": 11024,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 33,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-age-65-senior-deduction-in-the-estimate.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "078802d82da4f3c1989ba4fef5326640c42bbe6c",
          "at": 1793156349000,
          "title": "ai-bookkeeper: earned income credit from a passed schedule in the federal estimate",
          "pr": 11025,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 78,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-earned-income-credit-in-the-estimate.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "fd75c339f6740c17a149b3703ee6a7d3eeeb2b08",
          "at": 1793160532000,
          "title": "ai-bookkeeper: pin Missouri sales tax due dates read from dor.mo.gov",
          "pr": 11037,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin Missouri sales tax due dates read from dor.mo.gov; post",
            "prompts: run record for ventures run",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 87,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-missouri-sales-tax-due-dates.md",
            "prompts/runs/2026-10-28-session_01AcxTtL1bHHL8xoM7acUP9e.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "af303632f2ab0595a843fa5415caad9c9dc14d46",
          "at": 1793163632000,
          "title": "ai-bookkeeper: cash-basis profit and loss from invoices and bills",
          "pr": 11044,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: cash-basis profit and loss from invoices and bills"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 251,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-cash-basis-profit-from-invoices-and-bills.md",
            "prompts/runs/2026-10-28-session_01EhTJVP4RJeFifupawdDjbi.json",
            "ventures/ai-bookkeeper/cashbasis.mjs",
            "ventures/ai-bookkeeper/cashbasis.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7fa1fc08a7febbae49dabbb173383dcad33897fd",
          "at": 1793164186000,
          "title": "ai-bookkeeper: built-in 2025 earned income credit matching the IRS table",
          "pr": 11047,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: built-in 2025 earned income credit matching the IRS table",
            "ai-bookkeeper: post front matter, run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 90,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-the-earned-income-credit-now-ships-with-the-irs-numbers.md",
            "prompts/runs/2026-10-28-session_01AcxTtKjrEfkBwyeCVMFaT1.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "0807bf5d282096252bcd2eb509abf5d91def471e",
          "at": 1793164340000,
          "title": "ai-bookkeeper: cash-basis profit and loss on the page",
          "pr": 11050,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: cash-basis profit and loss on the page",
            "prompts: run record for cash-basis page slice",
            "docs: post front matter"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 71,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-cash-basis-profit-on-the-page.md",
            "prompts/runs/2026-10-28-session_01E5sJKnGBGTGsm6jSZ4B9jg.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "67ca00ab63a5c2bddbd066e542772aac83d22ff9",
          "at": 1793164774000,
          "title": "ai-bookkeeper: cash-basis view in the agent engine's analyze()",
          "pr": 11051,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: cash-basis view in the agent engine's analyze()",
            "prompts: run record for cash-basis analyze slice"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 144,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-agents-can-now-ask-ai-bookkeeper-for-cash-basis-profit.md",
            "prompts/runs/2026-10-28-session_01E5sJKm4R4Vz5GS82QVEfVj.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5d57df916f13a9c72f00a522ba36f7d99ed9e411",
          "at": 1793167115000,
          "title": "ai-bookkeeper: browser check for the cash-basis card; note loose part-payment match",
          "pr": 11054,
          "agent": "Claude",
          "models": [],
          "track": "research",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 3,
          "lines_added": 81,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-testing-a-cash-basis-profit-and-loss-in-a-real-browser.md",
            "ventures/ai-bookkeeper/eval/browser-cashbasis.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "995b031d153ce72497012aa8c3a84db0c976b502",
          "at": 1793167323000,
          "title": "redteam: estimatedtax 2026-10-28",
          "pr": 11055,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: estimatedtax 2026-10-28 (hoh QBI threshold boundary test)",
            "redteam: record PR number",
            "redteam: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 3,
          "lines_added": 187,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-red-team-the-hoh-qbi-threshold-had-no-test.md",
            "prompts/runs/2026-10-28-session_01EhTJVNg87Gv9ku52ZbPa63.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "e4b25983c692c52613ace18b2757fd1c4ac8fe26",
          "at": 1793167864000,
          "title": "ai-bookkeeper: part-payment by party name needs two words",
          "pr": 11056,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: part-payment by party name needs two words; post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 156,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-generic-word-should-not-pay-an-invoice.md",
            "prompts/runs/2026-10-28-session_01AcxTtJEnV1MdKjhPfCqft3.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8e6c970e25356949e655ff6ff92877f4b9735d81",
          "at": 1793170852000,
          "title": "redteam: ai-bookkeeper ledger.mjs 2026-10-28",
          "pr": 11066,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: ai-bookkeeper ledger.mjs 2026-10-28",
            "redteam record: pr 11066"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 2,
          "lines_added": 189,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVKg4KQQ61LW6R3caXz.json",
            "ventures/ai-bookkeeper/ledger-guards.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5a0d2780538c3f28602539ac9845a82c7d03da20",
          "at": 1793171482000,
          "title": "ai-bookkeeper: built-in 2026 earned income credit (Rev. Proc. 2025-32)",
          "pr": 11069,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: built-in 2026 earned income credit from Rev. Proc. 2025-32"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 97,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-2026-earned-income-credit-built-in.md",
            "prompts/runs/2026-10-28-session_01AcxTtJYx88SBRXSTogbkYv.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "0646ea189477199281615faff48473fcd53d9ad7",
          "at": 1793171662000,
          "title": "ai-bookkeeper: earned income credit field on the estimate card",
          "pr": 11070,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 3,
          "lines_added": 5,
          "lines_removed": 3,
          "added_files": [],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d336b4d389e060842a595eb8d50b1d701269e062",
          "at": 1793174344000,
          "title": "ai-bookkeeper: property test for the built-in 2025/2026 earned income credit (phase-in, plateau, monotone phase-out, ends)",
          "pr": 11075,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 1,
          "lines_added": 18,
          "lines_removed": 0,
          "added_files": [],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "9b4f8cde4128a068b59ba83c97656612e3596fd7",
          "at": 1793182204000,
          "title": "ai-bookkeeper: annualized income installments (Form 2210 Schedule AI worksheet)",
          "pr": 11093,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: annualized income installments (Form 2210 Schedule AI worksheet)",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 8,
          "lines_added": 220,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-seasonal-income-and-the-quarterly-estimate-trap.md",
            "prompts/runs/2026-10-28-session_01EhTJVNLHG45JqCkSCD8UyM.json",
            "ventures/ai-bookkeeper/annualized.mjs",
            "ventures/ai-bookkeeper/annualized.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "c2578285d3e63951b610e21dcf5f1273f4bdba5b",
          "at": 1793182235000,
          "title": "ai-bookkeeper: pin Illinois sales tax due dates and discount from ST-1 instructions",
          "pr": 11096,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin Illinois sales tax due dates and discount from the state's ST-1 instructions"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 60,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtGECCUdmvqfLp8YV4p.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b0746e5f40725c340f1bd73483e618f5ea56c3f4",
          "at": 1793182828000,
          "title": "ai-bookkeeper: annualized installments button on the page (Schedule AI)",
          "pr": 11099,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: annualized installments button on the page (Schedule AI)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 7,
          "lines_added": 85,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-lumpy-income-estimated-tax-button.md",
            "prompts/runs/2026-10-28-session_01E5sJKiexs7gvbk2CwpL54k.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3eefb15de5f138720906986e1839a818251e36aa",
          "at": 1793185234000,
          "title": "ai-bookkeeper: EITC Schedule EIC $50-band midpoint option (--eitc-table)",
          "pr": 11104,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 16,
          "lines_removed": 4,
          "added_files": [],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "52a53e0777a50434c189eff599b60d178e74afc6",
          "at": 1793186815000,
          "title": "ai-bookkeeper: pin Schedule AI factors by derivation, post",
          "pr": 11111,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin Schedule AI factors and percentages by derivation, post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 89,
          "lines_removed": 5,
          "added_files": [
            "docs/posts/2026-10-28-checking-schedule-ai-factors-without-the-form.md",
            "prompts/runs/2026-10-28-session_01E5sJKihCJmfsa5X2sUFnPj.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "2727cd368e68cec10738c75ead0fce7d9358085a",
          "at": 1793188946000,
          "title": "ai-bookkeeper: per-month sales tax discount cap (IL 1.75%, $1,000/mo) + post",
          "pr": 11114,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 38,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-a-sales-tax-discount-cap-that-scales-with-the-filing-period.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8c91ff09c96b9d6de24ebe705695fb4cd519de71",
          "at": 1793189423000,
          "title": "ai-bookkeeper: Texas 0.5% timely discount pinned + post",
          "pr": 11118,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: Texas 0.5% timely discount pinned (1.25% prepayment not modelled) + post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 154,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-texas-sales-tax-discount-two-answers.md",
            "prompts/runs/2026-10-28-session_01AcxTtGUujFDqbJ92KkJMpW.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "cc6fdf3517432ad42dadfb7b7bda5d6ffbc1cc58",
          "at": 1793190428000,
          "title": "ai-bookkeeper: warn when a late sales tax payment may forfeit the timely discount",
          "pr": 11120,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: warn when a late sales tax payment may forfeit the timely discount + post",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 87,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-sales-tax-discount-lost-if-you-pay-late.md",
            "prompts/runs/2026-10-28-session_01AcxTtL9mRKESuDcpADev1Q.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "0837f0811451d2f18413b780f0950d92e0c6aeb6",
          "at": 1793190902000,
          "title": "ai-bookkeeper: pin sales tax discount due-date boundary + post",
          "pr": 11122,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin sales tax discount due-date boundary + post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 3,
          "lines_added": 77,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-paid-on-the-due-date-keeps-the-sales-tax-discount.md",
            "prompts/runs/2026-10-28-session_01E5sJKkz19HUEnm1w2SLzqH.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4fd368cf9b781d7f9eff8b6d92075ead09c7db79",
          "at": 1793196390000,
          "title": "ai-bookkeeper: DC annual sales tax return ends Sep 30, due Oct 20",
          "pr": 11134,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "ai-bookkeeper: DC annual sales tax return ends Sep 30, due Oct 20 + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 79,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-dc-annual-sales-tax-return-due-october-20.md",
            "prompts/runs/2026-10-28-session_01EhTJVMj6BqFveRy4bDgXqn.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "577d4f9c8213d7c523daeecf1ec1b8dccab9df8b",
          "at": 1793196581000,
          "title": "ai-bookkeeper: pin Hawaii semiannual GET return dates (Jul 20, Jan 20)",
          "pr": 11135,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "ai-bookkeeper: pin Hawaii semiannual GET return dates (Jul 20, Jan 20) + post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 70,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-hawaii-semiannual-get-return-dates.md",
            "prompts/runs/2026-10-28-session_01EhTJVMj6BqFveRy4bDgXqn-2.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "96064f8c3b50c4555240c19b4e1c21e50a4aa924",
          "at": 1793196593000,
          "title": "ai-bookkeeper: salestax return warns for states with no state sales tax",
          "pr": 11136,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: salestax return warns for states with no state sales tax (OR MT NH DE AK) + post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 85,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-five-states-with-no-sales-tax-return-to-build.md",
            "prompts/runs/2026-10-28-session_01AcxTtL8Q4sLfDQp8qSJQpG.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8c064412a05c66017842392b2b3c4591d539523b",
          "at": 1793199618000,
          "title": "ai-bookkeeper: pin Florida collection allowance (2.5% of first $1,200, $30 cap) as a salestax discount, with test and post",
          "pr": 11143,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 43,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-florida-sales-tax-collection-allowance-in-a-bookkeeping-worksheet.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3649f2f8f2bc6311139d5d72c988047c3cf25a4e",
          "at": 1793200613000,
          "title": "ai-bookkeeper: salestax return refuses malformed --discount instead of printing NaN",
          "pr": 11148,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 79,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-mistyped-sales-tax-discount-no-longer-prints-nan.md",
            "prompts/runs/2026-10-28-session_01AcxTtLvaBm91KUPYHqrkJD.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1fe340683c42ab6fadc7d5e8500780aab4174305",
          "at": 1793201005000,
          "title": "ai-bookkeeper: salestax return refuses malformed --rate and --due-day",
          "pr": 11150,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: salestax return refuses malformed --rate and --due-day"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 81,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-sales-tax-worksheet-that-stops-printing-nan-dates.md",
            "prompts/runs/2026-10-28-session_01E5sJKndH2Yk45U6rRzkaPr.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6c2674335209b6af9090b7c00cdda3140c8f82a1",
          "at": 1793203184000,
          "title": "ai-bookkeeper: salestax return --state IL|TX|FL presets the state's timely-filing discount",
          "pr": 11154,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 19,
          "lines_removed": 2,
          "added_files": [],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "21144456b851ddb88c5caaa179b527a0b5999608",
          "at": 1793203271000,
          "title": "ai-bookkeeper: sales tax return worksheet on the page",
          "pr": 11155,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: sales tax return worksheet on the page, shared spec parsers"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 10,
          "lines_added": 194,
          "lines_removed": 8,
          "added_files": [
            "docs/posts/2026-10-28-sales-tax-return-worksheet-now-in-the-browser.md",
            "prompts/runs/2026-10-28-session_01EhTJVKy41wYT3NTcUVtBLS.json",
            "ventures/ai-bookkeeper/eval/browser-salestax-return.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "bd88eafca917c8db26fd2d0f34490c0fd96fe71d",
          "at": 1793210748000,
          "title": "redteam: ai-bookkeeper ledger.mjs 2026-10-28",
          "pr": 11177,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: ai-bookkeeper ledger.mjs 2026-10-28",
            "redteam record: pr 11177"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 2,
          "lines_added": 183,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVL5Sz96JLGp4XDYcSC.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5a70a2815330ad4eff1a8b6fa04c489118629191",
          "at": 1793211049000,
          "title": "ai-bookkeeper: pin South Carolina sales tax due dates to the state's table",
          "pr": 11179,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin South Carolina sales tax due dates to dor.sc.gov table"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 77,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-south-carolina-sales-tax-due-dates-read-from-the-state.md",
            "prompts/runs/2026-10-28-session_01AcxTtK9PZKLhyahuRoKzVJ.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b315f60406a5294462cc5f78edd4c79ee7b12899",
          "at": 1793213899000,
          "title": "ai-bookkeeper: record Nevada's move to the 20th (AB 594) in the due-date source notes; post",
          "pr": 11186,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 19,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-nevada-sales-tax-is-now-due-the-20th.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "290322003cd31153292fad848c19c6aeb9ac72b6",
          "at": 1793213926000,
          "title": "ai-bookkeeper: Iowa sales tax note for semi-monthly prepayment filers",
          "pr": 11187,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 28,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-iowa-sales-tax-has-two-calendars.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "0e5dcc3b0fe0ae1e8ec9506247ad08578d8bd62f",
          "at": 1793214681000,
          "title": "ai-bookkeeper: pin Ohio sales tax due dates to tax.ohio.gov",
          "pr": 11191,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin Ohio sales tax due dates (23rd, monthly and semiannual) to tax.ohio.gov",
            "post: shorten Nevada post description to fit the 160-character limit"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 59,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLqAkCPuXah1bFZP4L.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "2ec5838f2da59dc2de780576f96017e05c3a1994",
          "at": 1793217501000,
          "title": "ai-bookkeeper: Georgia tiered vendor's compensation in salestax return",
          "pr": 11197,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: tiered timely-filing discount, Georgia vendor's compensation preset; post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 82,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-georgia-vendors-compensation-is-two-rates-not-one.md",
            "prompts/runs/2026-10-28-session_01EhTJVPvsuPV5UjYErHMvRC.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "097cde9250029d739909b68c832165f8e853b7f0",
          "at": 1793218312000,
          "title": "ai-bookkeeper: pin Utah monthly sales tax due date from tax.utah.gov",
          "pr": 11203,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: pin Utah monthly sales tax due date from tax.utah.gov"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 4,
          "lines_added": 50,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtHxWvuU5bBZW1r1DF2.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3f4cf5c1094cc2c26cf718e57f9a546702b3fc9e",
          "at": 1793218574000,
          "title": "ai-bookkeeper: built-in keywords for nine trades (probe 11 of 93 to 92 of 92, tuned on itself)",
          "pr": 11198,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: built-in keywords for nine trades, probe 11 of 93 to 92 of 92 (tuned on itself)",
            "Shorten post description",
            "flagships.yaml: bring four next: texts under the 2,000 character cap"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 7,
          "lines_added": 168,
          "lines_removed": 10,
          "added_files": [
            "docs/posts/2026-10-28-bookkeeping-keywords-for-trucking-salons-and-clinics.md",
            "prompts/runs/2026-10-28-session_01EhTJVLBnyrPpqUwV7pFdkd.json",
            "ventures/ai-bookkeeper/eval/probe-trades2.mjs",
            "ventures/ai-bookkeeper/probe-trades2.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "32f43fbc093ab8317041a1bf878affbc43839993",
          "at": 1793221462000,
          "title": "ai-bookkeeper: flag processor exports (Gross/Fee/Net) imported as bank files",
          "pr": 11208,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: flag processor exports (Gross/Fee/Net) imported as bank files; blog post",
            "ai-bookkeeper: neobank test tolerates the processor hint",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 54,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-pasting-a-paypal-export-into-the-wrong-box.md",
            "ventures/ai-bookkeeper/processor-export-hint.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3038cda8b367e71da5ab82631d0808ab2c079add",
          "at": 1793222062000,
          "title": "ai-bookkeeper: trade probe 3, built-in keywords for restaurants, auto, landscaping, sellers",
          "pr": 11212,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: trade probe 3 (78 descriptors), built-in keywords for restaurants, auto, landscaping, sellers",
            "runs: record ai-bookkeeper probe 3 run",
            "runs: record ai-bookkeeper probe 3 run"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 7,
          "lines_added": 149,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-what-a-bookkeeping-keyword-list-misses-for-restaurants-and-mechanics.md",
            "prompts/runs/2026-10-28-session_01AcxTtGYgTLiezqkTTXKcrn.json",
            "ventures/ai-bookkeeper/eval/probe-trades3.mjs",
            "ventures/ai-bookkeeper/probe-trades3.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "02833c11dce3b9532cc1664558a3cbff5e2a2d8d",
          "at": 1793224858000,
          "title": "ai-bookkeeper: tax calendar command with iCalendar export",
          "pr": 11219,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: tax calendar command with iCalendar export",
            "Shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 7,
          "lines_added": 173,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-tax-deadlines-into-your-calendar.md",
            "prompts/runs/2026-10-28-session_01EhTJVMXuya42yL9RH9zXLn.json",
            "ventures/ai-bookkeeper/calendar.mjs",
            "ventures/ai-bookkeeper/calendar.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d6d595924ab19e696503c4f6c6b4fd4d7e71ef1e",
          "at": 1793226029000,
          "title": "ai-bookkeeper: trade probe 4, built-in keywords for contractors, nonprofits, caterers",
          "pr": 11226,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: trade probe 4, built-in keywords for contractors, nonprofits, caterers (33 of 72 to 72 of 72, tuned on itself)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 215,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-bookkeeper-keywords-contractors-nonprofits-caterers.md",
            "prompts/runs/2026-10-28-session_01E5sJKmNWzesyMK7i1Tkpvb.json",
            "ventures/ai-bookkeeper/eval/probe-trades4.mjs",
            "ventures/ai-bookkeeper/probe-trades4.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "33e675ee2d039d37e7526565fcf7529fa2c0f485",
          "at": 1793228248000,
          "title": "ai-bookkeeper: flat state income tax in the federal estimate + blog post",
          "pr": 11228,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 5,
          "lines_added": 48,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-state-income-tax-in-the-self-employed-estimate.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "bb00f3334a7af2c0a5869317af3b6d5d5fb9efbb",
          "at": 1793231873000,
          "title": "ai-bookkeeper: calendar --planned amounts, fix .ics semicolon escaping",
          "pr": 11240,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "ai-bookkeeper: calendar --planned amounts, fix .ics semicolon escaping, blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "ai-bookkeeper"
          },
          "files": 6,
          "lines_added": 93,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-tax-calendar-planned-payments-and-an-ics-escaping-bug.md",
            "prompts/runs/2026-10-28-session_01EhTJVNgi5mRq1uFTJJtZXn.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "hearth-and-horizon",
      "merges": [
        {
          "sha": "7fd556fae4b51cf74cfdc87a423967cd0401f7dc",
          "at": 1793146269000,
          "title": "hearth-and-horizon: Enough to Be Bread (low-gluten altar bread, text only) + blog post",
          "pr": 10995,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Enough to Be Bread (low-gluten altar bread, text only) + blog post",
            "prompts: run record for enough-to-be-bread"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 488,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-too-clean-to-be-bread.md",
            "prompts/runs/2026-10-28-session_01AcxTtKXWqVvSADSVLzmxYv.json",
            "ventures/hearth-and-horizon/enough-to-be-bread.html",
            "ventures/hearth-and-horizon/stories/enough-to-be-bread.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "53236a7000fc0b7a80469758828b9f650a4833da",
          "at": 1793160741000,
          "title": "hearth-and-horizon: The Gap in the Nets (fog nets, text only) + blog post",
          "pr": 11039,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Gap in the Nets (fog nets, text only) + blog post",
            "prompts: run record for the-gap-in-the-nets"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 375,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-gap-in-the-nets.md",
            "prompts/runs/2026-10-28-session_01E5sJKnBUjqVf5F6dN9mzqv.json",
            "ventures/hearth-and-horizon/stories/the-gap-in-the-nets.md",
            "ventures/hearth-and-horizon/the-gap-in-the-nets.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "00fd48de9286b57b1c1b9c80bd5d4623d5b620d3",
          "at": 1793161219000,
          "title": "hearth-and-horizon: Thirty Seconds and Thirty Minutes (text only) + blog post",
          "pr": 11040,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Thirty Seconds and Thirty Minutes (lightning on a pilgrimage hill, text only) + blog post",
            "prompts: run record for thirty-seconds-and-thirty-minutes"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 425,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-thirty-seconds-and-thirty-minutes.md",
            "prompts/runs/2026-10-28-session_01E5sJKn33VA6Gwc1G3tAneB.json",
            "ventures/hearth-and-horizon/stories/thirty-seconds-and-thirty-minutes.md",
            "ventures/hearth-and-horizon/thirty-seconds-and-thirty-minutes.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7a5b5c57454fd9e73f768a53fc3f19e875e21ac3",
          "at": 1793170883000,
          "title": "hearth-and-horizon: The Lid Stays Down (pantry freezer time constants, text only) + blog post",
          "pr": 11067,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Lid Stays Down (pantry freezer time constants, text only) + blog post",
            "prompts: run record for the-lid-stays-down"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 391,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-lid-stays-down.md",
            "prompts/runs/2026-10-28-session_01EhTJVKwxHQ465Wtikgatnr.json",
            "ventures/hearth-and-horizon/stories/the-lid-stays-down.md",
            "ventures/hearth-and-horizon/the-lid-stays-down.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "51222670777fccef3b3e05e5c3f925bde5507685",
          "at": 1793172132000,
          "title": "hearth-and-horizon: The Window Closes at Eleven (measles, text only) + blog post",
          "pr": 11071,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Window Closes at Eleven (measles, school immunity and post-exposure clocks, text only) + blog post",
            "post: front matter tags"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 415,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-window-closes-at-eleven-a-measles-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKiXxBzVprX5vPLAgVF.json",
            "ventures/hearth-and-horizon/stories/the-window-closes-at-eleven.md",
            "ventures/hearth-and-horizon/the-window-closes-at-eleven.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "fcc5802a0b5770d36452cdc06909843aacf0f909",
          "at": 1793185815000,
          "title": "hearth-and-horizon: Patrick and the Hundred Prayers (Little Lamps, text only) + blog post",
          "pr": 11106,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Patrick and the Hundred Prayers (Little Lamps, text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 351,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-patrick-and-the-hundred-prayers.md",
            "prompts/runs/2026-10-28-session_01AcxTtHwxSqD5uBtSmjUUsa.json",
            "ventures/hearth-and-horizon/patrick-and-the-hundred-prayers.html",
            "ventures/hearth-and-horizon/stories/patrick-and-the-hundred-prayers.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4148a7faa5d1b59e8e577a58f65c47d23cba87cc",
          "at": 1793189816000,
          "title": "hearth-and-horizon: The Last Timing Point (For Other Minds, text only) + blog post",
          "pr": 11119,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Last Timing Point (For Other Minds, text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 414,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-last-timing-point-a-story-about-a-number-that-went-up.md",
            "prompts/runs/2026-10-28-session_01AcxTtM1KC1v4Xjeg4drh6M.json",
            "ventures/hearth-and-horizon/stories/the-last-timing-point.md",
            "ventures/hearth-and-horizon/the-last-timing-point.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "da4f418235b0b7d86187acc409ee7b94752c2855",
          "at": 1793193293000,
          "title": "hearth-and-horizon: The First Draw (text only) + blog post",
          "pr": 11127,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The First Draw (text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 478,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-first-draw-thirty-seconds-of-flushing-can-be-the-wrong-advice.md",
            "prompts/runs/2026-10-28-session_01AcxTtHnBqHpDWAjXtU2DaN.json",
            "ventures/hearth-and-horizon/stories/the-first-draw.md",
            "ventures/hearth-and-horizon/the-first-draw.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "9095b485780df29d49251934c9a96409af147305",
          "at": 1793193421000,
          "title": "hearth-and-horizon: Eight to a Well (pooled testing, text only) + blog post",
          "pr": 11128,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Eight to a Well (pooled testing, text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 540,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-eight-to-a-well-a-story-about-pooled-testing.md",
            "prompts/runs/2026-10-28-session_01EhTJVMqKV8Hgpt7eHkdY4X.json",
            "ventures/hearth-and-horizon/eight-to-a-well.html",
            "ventures/hearth-and-horizon/stories/eight-to-a-well.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b80b507533c62ebb83e0c84b34c830dfb299bd42",
          "at": 1793194385000,
          "title": "hearth-and-horizon: Ten and a Half Seconds (earthquake early warning, text only) + blog post",
          "pr": 11131,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Ten and a Half Seconds (earthquake early warning, text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 566,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-ten-and-a-half-seconds-an-earthquake-warning-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKmEs74nGdFhmqgPaVx.json",
            "ventures/hearth-and-horizon/stories/ten-and-a-half-seconds.md",
            "ventures/hearth-and-horizon/ten-and-a-half-seconds.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "bf52eb67fdeee1c0dccffee9db4910d7730b6f00",
          "at": 1793201624000,
          "title": "hearth-and-horizon: Forty-Eight Degrees (text only) + blog post",
          "pr": 11152,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Forty-Eight Degrees (hospice hot water and Legionella, text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 10,
          "lines_added": 408,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-forty-eight-degrees-a-hot-water-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKjjhA4Bex19a9yqkQY.json",
            "ventures/hearth-and-horizon/forty-eight-degrees.html",
            "ventures/hearth-and-horizon/stories/forty-eight-degrees.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "35ddb584f32e8fb877f521ba63726271d311a793",
          "at": 1793204855000,
          "title": "hearth-and-horizon: Point Two (CO in a sealed parish hall, text only) + blog post",
          "pr": 11161,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Point Two (CO in a sealed parish hall, text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 418,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-point-two-a-carbon-monoxide-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKkpvhnBdEKXVwvXkUk.json",
            "ventures/hearth-and-horizon/point-two.html",
            "ventures/hearth-and-horizon/stories/point-two.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4e285908d3d2118a016dfb966c85ad46286e430e",
          "at": 1793215434000,
          "title": "hearth-and-horizon: The Second Echo (church acoustics, text only) + blog post",
          "pr": 11195,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Second Echo (church acoustics, text only) + blog post",
            "prompts: run record for the-second-echo"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 445,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-second-echo-a-church-acoustics-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKmxTf5i58Kpw8WPDpG.json",
            "ventures/hearth-and-horizon/stories/the-second-echo.md",
            "ventures/hearth-and-horizon/the-second-echo.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "631a5ec34fe74228f5485a02deb7b4b5c26b6673",
          "at": 1793218883000,
          "title": "hearth-and-horizon: Philip Neri and the Happy Walk (Little Lamps, text only) + blog post",
          "pr": 11205,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: Philip Neri and the Happy Walk (Little Lamps, text only) + blog post",
            "prompts: run record for philip-neri-and-the-happy-walk"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 382,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-philip-neri-and-the-happy-walk-bedtime-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKnaZZYvNbXxQXvnyk1.json",
            "ventures/hearth-and-horizon/philip-neri-and-the-happy-walk.html",
            "ventures/hearth-and-horizon/stories/philip-neri-and-the-happy-walk.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5745f9348194e79b9c308b513327b4afa4f93bf2",
          "at": 1793222080000,
          "title": "hearth-and-horizon: The Funeral Soup (cooling a 100 L pot, text only) + blog post",
          "pr": 11213,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Funeral Soup (cooling a 100 L pot, text only) + blog post",
            "prompts: run record for the-funeral-soup"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 11,
          "lines_added": 329,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-funeral-soup-a-cooling-story.md",
            "prompts/runs/2026-10-28-session_01AcxTtKf5ziCmmqUHMQRBCK.json",
            "ventures/hearth-and-horizon/stories/the-funeral-soup.md",
            "ventures/hearth-and-horizon/the-funeral-soup.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "33032e363c0a10d231ad08bfa4d47cb8f83861fd",
          "at": 1793229008000,
          "title": "hearth-and-horizon: The Condition in the Trust (2046, text only) + blog post",
          "pr": 11232,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Condition in the Trust (2046 trust and a driver's licence, text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 9,
          "lines_added": 431,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-dead-mans-condition-and-a-licence-for-automated-cars.md",
            "prompts/runs/2026-10-28-session_01AcxTtGLJobZg2eDn5ktDRK.json",
            "ventures/hearth-and-horizon/stories/the-condition-in-the-trust.md",
            "ventures/hearth-and-horizon/the-condition-in-the-trust.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "47980f98abe7e745c1fc90f891ea8f1098b008fe",
          "at": 1793229622000,
          "title": "hearth-and-horizon: The Second Reader (For Other Minds, text only) + blog post",
          "pr": 11236,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "hearth-and-horizon: The Second Reader (For Other Minds, text only) + blog post",
            "prompts: run record for creative run (The Second Reader)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "hearth-and-horizon"
          },
          "files": 10,
          "lines_added": 449,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-second-reader-a-for-other-minds-story-about-checkers-that-share-eyes.md",
            "prompts/runs/2026-10-28-session_01E5sJKkzYe5eH5UcrxurAbY.json",
            "ventures/hearth-and-horizon/stories/the-second-reader.md",
            "ventures/hearth-and-horizon/the-second-reader.html"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "wall-framing-takeoff",
      "merges": [
        {
          "sha": "a53fcf900a509670ff8741ec48de1e41f6b809d1",
          "at": 1793149090000,
          "title": "wall-framing-takeoff: bid leveling card on the page",
          "pr": 11002,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "wall-framing-takeoff: bid leveling card on the page"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 123,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-level-the-bids-before-you-pick-the-low-one.md",
            "prompts/runs/2026-10-28-session_01EhTJVKaJ3ZbazA5qwzxAVx.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "87b785cced1559fb76fb8d7ab85c7d061b115b42",
          "at": 1793164759000,
          "title": "wall-framing-takeoff: stair framing (risers, stringers, stairwell headroom opening)",
          "pr": 11045,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: stair framing (equal risers, notch throat, stringers, stairwell headroom opening) + blog post",
            "Trim flagship next: text under the cap; shorten a post description over 160 chars",
            "wall-framing-takeoff: clear 21 existing ts-check diagnostics so the typecheck gate passes (types only)",
            "Trim ai-bookkeeper flagship next: under the 2,000-character cap"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 10,
          "lines_added": 319,
          "lines_removed": 15,
          "added_files": [
            "docs/posts/2026-10-28-how-many-risers-and-how-long-a-stairwell.md",
            "prompts/runs/2026-10-28-session_01EhTJVLMgJQgbKaemVfro2v.json",
            "ventures/wall-framing-takeoff/stairs.mjs",
            "ventures/wall-framing-takeoff/stairs.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "01f4191e04f8098628f3a87845d7394902281146",
          "at": 1793168088000,
          "title": "wall-framing-takeoff: stairs over 147 in split at a landing",
          "pr": 11059,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: stairs over 147 in split at a landing (flights, joists, rims, deck) + post",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 7,
          "lines_added": 183,
          "lines_removed": 7,
          "added_files": [
            "docs/posts/2026-10-28-stairs-over-147-inches-need-a-landing.md",
            "prompts/runs/2026-10-28-session_01AcxTtGLEbfoTwPXXurWHjb.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "e3dafb2cf97e774e61798efade712f9bf540f88c",
          "at": 1793168671000,
          "title": "redteam: wall-framing-takeoff stairs.mjs 2026-10-28",
          "pr": 11064,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: wall-framing-takeoff stairs.mjs 2026-10-28 (catch rate 0.5 to 1.0)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 2,
          "lines_added": 189,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVMfyfKLMJpAKYyeoT9.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1eefa9845957b1fb3a5a58512e640e2d5f22510d",
          "at": 1793170840000,
          "title": "wall-framing-takeoff: stairs card on the page",
          "pr": 11065,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "wall-framing-takeoff: stairs card on the page, lumber joins the order",
            "prompts: run record for stairs card",
            "docs: post front matter"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 116,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-stair-stringers-in-your-browser.md",
            "prompts/runs/2026-10-28-session_01EhTJVMPd9Q7NVj7bqKBJwq.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "da7d10ecb178efde23eabcc5e56574551c4ff8d1",
          "at": 1793174317000,
          "title": "wall-framing-takeoff: winder tread depth check",
          "pr": 11074,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "wall-framing-takeoff: winder tread depth check against the 6 in and 10 in rules",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 7,
          "lines_added": 133,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-how-wide-must-a-winder-stair-turn-be.md",
            "prompts/runs/2026-10-28-session_01EhTJVKdSoG1fHG899jCyc2.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "edac6c88a6d84f152137c9555e18d2c6b2abcc29",
          "at": 1793174698000,
          "title": "wall-framing-takeoff: stair guards and handrail layout",
          "pr": 11076,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: stair guards and handrail (posts, balusters under the 4 in gap, rails) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 7,
          "lines_added": 161,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-how-many-balusters-a-stair-guard-needs.md",
            "prompts/runs/2026-10-28-session_01EhTJVKRe8uVWQi3CM6NBZx.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "dc6a17a4c2c332fcf85f424dcd6819c2b877946f",
          "at": 1793175135000,
          "title": "wall-framing-takeoff: guards on open stair landing edges",
          "pr": 11078,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: guards on open stair landing edges",
            "post front matter"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 107,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-guarding-the-open-edge-of-a-stair-landing.md",
            "prompts/runs/2026-10-28-session_01AcxTtLXxAJ3aeVuQrDBsUf.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "2bd89ade4823194d8f05d352c45a7d7b9364533b",
          "at": 1793181614000,
          "title": "wall-framing-takeoff: check drywall compound rate against product listings, add pail count",
          "pr": 11092,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: check drywall compound rate against product listings, add pail count",
            "Shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 82,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-how-many-pails-of-joint-compound-for-a-house.md",
            "prompts/runs/2026-10-28-session_01EhTJVNe4LwUuti1eRRvRL7.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8702caec47a718563a128d86196e460d222f6774",
          "at": 1793203321000,
          "title": "wall-framing-takeoff: exterior lap siding, house wrap and corner boards (--siding)",
          "pr": 11156,
          "agent": "Claude",
          "models": [],
          "track": "creative",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 9,
          "lines_added": 200,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-counting-siding-course-by-course.md",
            "ventures/wall-framing-takeoff/siding.mjs",
            "ventures/wall-framing-takeoff/siding.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7b33ac384dbfbb826026359ea09de4ca96845c3f",
          "at": 1793204246000,
          "title": "wall-framing-takeoff: page card for siding, house wrap and corner boards",
          "pr": 11159,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: page card for siding, house wrap and corner boards",
            "docs: shorten siding post description to the 160-char limit"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 7,
          "lines_added": 127,
          "lines_removed": 7,
          "added_files": [
            "docs/posts/2026-10-28-siding-takeoff-on-the-page.md",
            "prompts/runs/2026-10-28-session_01AcxTtGRrS9NiwPEbF3bbMQ.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5b4639b1780ccb242d4089900e5baba3bc6846cb",
          "at": 1793206806000,
          "title": "wall-framing-takeoff: soffit, fascia and J-channel from the roof overhangs (--eaves)",
          "pr": 11163,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 9,
          "lines_added": 173,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-soffit-fascia-and-j-channel-from-the-roof-you-already-drew.md",
            "ventures/wall-framing-takeoff/eaves.mjs",
            "ventures/wall-framing-takeoff/eaves.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1af95bcd77eb5fe68f797c5caec19ce9257d4b59",
          "at": 1793208201000,
          "title": "wall-framing-takeoff: page card for soffit, fascia and J-channel",
          "pr": 11173,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: page card for soffit, fascia and J-channel (eaves)",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 7,
          "lines_added": 194,
          "lines_removed": 7,
          "added_files": [
            "docs/posts/2026-10-28-soffit-fascia-and-j-channel-on-the-framing-page.md",
            "prompts/runs/2026-10-28-session_01E5sJKmkQd7FSys83TTzcUr.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "889e43d2a4e97ecde5cdd8f791dfaec71bbfef18",
          "at": 1793210714000,
          "title": "wall-framing-takeoff: gutters, downspouts and fittings from the roof's eaves (--gutters)",
          "pr": 11176,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 8,
          "lines_added": 201,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-how-many-gutter-sections-and-downspouts-for-a-house.md",
            "ventures/wall-framing-takeoff/gutters.mjs",
            "ventures/wall-framing-takeoff/gutters.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b23bd615c1a4771c8abd95b66de138f99695efec",
          "at": 1793214700000,
          "title": "wall-framing-takeoff: page card for gutters and downspouts",
          "pr": 11189,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: page card for gutters and downspouts"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 193,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-gutters-and-downspouts-now-on-the-framing-takeoff-page.md",
            "prompts/runs/2026-10-28-session_01AcxTtK8FMKXPYFCuCwCGi6.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1d57ff0381d19527ba4433c887570b12393ce5f2",
          "at": 1793215037000,
          "title": "wall-framing-takeoff: browser check for the gutters card",
          "pr": 11188,
          "agent": "Claude",
          "models": [],
          "track": "process",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 1,
          "lines_added": 14,
          "lines_removed": 1,
          "added_files": [],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7a10af6096669502f985e2dc8ea66dae19769e74",
          "at": 1793224955000,
          "title": "wall-framing-takeoff: read jamb-and-arc door symbols as one opening",
          "pr": 11218,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "wall-framing-takeoff: read jamb-and-arc door symbols as one opening (real CAD symbols)",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "wall-framing-takeoff"
          },
          "files": 6,
          "lines_added": 157,
          "lines_removed": 5,
          "added_files": [
            "docs/posts/2026-10-28-reading-real-cad-door-symbols.md",
            "prompts/runs/2026-10-28-session_01EhTJVMpyPjRteT4dXKpwZm.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "changepoint-detector",
      "merges": [
        {
          "sha": "a9a453d4ae97fd4e3964001587fccfb558d3c434",
          "at": 1793146787000,
          "title": "changepoint-detector: quasi-Poisson and --bursts on real great-discoveries counts",
          "pr": 10997,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: quasi-Poisson and --bursts on the real great-discoveries series"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 5,
          "lines_added": 76,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-a-five-year-burst-is-not-two-level-shifts.md",
            "prompts/runs/2026-10-28-session_01E5sJKk7gjY87FJXSHwEF1G.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "02ca3668914578b8a8c96aba7d2e77487132f23b",
          "at": 1793147448000,
          "title": "changepoint-detector: excursions note (burst or two steps?) for counts",
          "pr": 10999,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: excursions note (burst or two steps?) for counts + post",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 6,
          "lines_added": 116,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-a-burst-is-not-two-steps.md",
            "prompts/runs/2026-10-28-session_01E5sJKky5b2PxT1BdYKjygC.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "165efe60888ace93b0887534f371804a68a72ea5",
          "at": 1793147755000,
          "title": "changepoint-detector: --episodes labels a burst the Poisson fit cut into two steps",
          "pr": 10996,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: --episodes labels a burst the Poisson fit cut into two steps",
            "post description length",
            "pages check: allow .ifc fixtures (wall-framing-takeoff) like .eml"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 10,
          "lines_added": 235,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-one-burst-or-two-changes.md",
            "prompts/runs/2026-10-28-session_01E5sJKnCx3z7jQcGczMg7zz.json",
            "ventures/changepoint-detector/eval/episodes.mjs",
            "ventures/changepoint-detector/eval/episodes.out.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "bdfbf23600f7a3aa114c8a0b6db58dd7fd296433",
          "at": 1793149745000,
          "title": "changepoint-detector: power and false-flag rate of the excursions note",
          "pr": 11004,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: power and false-flag rate of the excursions note (eval/excursions.mjs)",
            "fix post description length"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 6,
          "lines_added": 130,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-does-the-burst-or-two-steps-note-work.md",
            "prompts/runs/2026-10-28-session_01AcxTtKu5Nw3KVuqU3zXksi.json",
            "ventures/changepoint-detector/eval/excursions.mjs",
            "ventures/changepoint-detector/eval/excursions.out.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f8352e534d4ba5dcf57172eade0b6eacada3aa70",
          "at": 1793186714000,
          "title": "changepoint-detector: drift warning window measured (kept at 2 cycles) + post",
          "pr": 11109,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: drift warning window measured (2 cycles vs 1 cycle + 3), kept; post",
            "flagships: changepoint-detector next updated"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 6,
          "lines_added": 88,
          "lines_removed": 12,
          "added_files": [
            "docs/posts/2026-10-28-narrower-drift-window-changepoint.md",
            "prompts/runs/2026-10-28-session_01E5sJKjge6GkXdEU6ZwCf1Y.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "734e47fbfa5ee2340c1d94529715c7cc8cec17cb",
          "at": 1793191260000,
          "title": "changepoint-detector: real exponential-growth series (J&J earnings) + post",
          "pr": 11124,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: real exponential-growth series (J&J earnings): logs first + post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 7,
          "lines_added": 275,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-a-staircase-from-a-growth-curve.md",
            "prompts/runs/2026-10-28-session_01E5sJKmVRiWr9hhoSTFpNN3.json",
            "ventures/changepoint-detector/data/johnson-johnson.csv",
            "ventures/changepoint-detector/johnson-johnson.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8664bb5bcf7400c685c40e26e55e7a9af310f3a4",
          "at": 1793218972000,
          "title": "changepoint-detector: --log option, tested on J&J earnings",
          "pr": 11206,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: --log option (logs first, reports geometric means and ratios), tested on J&J earnings",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 7,
          "lines_added": 114,
          "lines_removed": 5,
          "added_files": [
            "docs/posts/2026-10-28-log-option-for-growing-series.md",
            "prompts/runs/2026-10-28-session_01E5sJKiqpxyQvwe3zi9CGrh.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "ea4cf32f6c3ebca56ae5d9e96edf81b824685f14",
          "at": 1793221699000,
          "title": "changepoint-detector: page checkbox for --log (Take logs first)",
          "pr": 11209,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "changepoint-detector: page checkbox for --log (Take logs first), checked on J&J earnings"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 6,
          "lines_added": 76,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-the-changepoint-page-can-now-take-logs-first.md",
            "prompts/runs/2026-10-28-session_01EhTJVKTt5v5DbhjEkPK2ZV.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3c48dc0710a63f34755f0dbaeeb4540478ddba39",
          "at": 1793228317000,
          "title": "changepoint-detector: driftWarning checked on five real seasonal series",
          "pr": 11230,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "changepoint-detector: driftWarning checked on five real seasonal series (silent on fixed season, wrong on the 1973 dip)",
            "post: shorten description",
            "post: shorten description again"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "changepoint-detector"
          },
          "files": 7,
          "lines_added": 146,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-when-a-seasonal-warning-cries-wolf-on-real-data.md",
            "prompts/runs/2026-10-28-session_01EhTJVLysQYA3afn56S9B8h.json",
            "ventures/changepoint-detector/drift-warning-real.test.mjs",
            "ventures/changepoint-detector/eval/drift-warning-real.mjs",
            "ventures/changepoint-detector/eval/drift-warning-real.out.txt"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "saints-by-candlelight",
      "merges": [
        {
          "sha": "a9cb4ec8fdd3d4d72ce750d10c2e5429ba8d501f",
          "at": 1793156376000,
          "title": "saints-by-candlelight: episode 45, Jacob and the Night at the Jabbok (text only)",
          "pr": 11026,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: episode 45, Jacob and the Night at the Jabbok (text only)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 6,
          "lines_added": 533,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVKmVzQGidmLtx54Puj.json",
            "ventures/saints-by-candlelight/episodes/045-jacob-and-the-night-at-the-jabbok.md",
            "ventures/saints-by-candlelight/jacob-and-the-night-at-the-jabbok.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3bc01986d38b2085bfa29cb9aec40f49f4720739",
          "at": 1793164894000,
          "title": "saints-by-candlelight: episode 46, Ambrose and the Bees in the Cradle (text only) + blog post",
          "pr": 11053,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: episode 46, Ambrose and the Bees in the Cradle (text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 7,
          "lines_added": 685,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-ambrose-and-the-bees-in-the-cradle.md",
            "prompts/runs/2026-10-28-session_01E5sJKnu82MQPGH1APwwAKv.json",
            "ventures/saints-by-candlelight/ambrose-and-the-bees-in-the-cradle.html",
            "ventures/saints-by-candlelight/episodes/046-ambrose-and-the-bees-in-the-cradle.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "fce2044769ef753a51c1db3bd3d81b25139e8cfa",
          "at": 1793178011000,
          "title": "saints-by-candlelight: episode 47, Joshua and the Woman with the Scarlet Cord (text only) + blog post",
          "pr": 11084,
          "agent": "Claude",
          "models": [],
          "track": "creative",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 6,
          "lines_added": 503,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-rahab-and-the-scarlet-cord-a-bedtime-story-from-joshua.md",
            "ventures/saints-by-candlelight/episodes/047-joshua-and-the-woman-with-the-scarlet-cord.md",
            "ventures/saints-by-candlelight/joshua-and-the-woman-with-the-scarlet-cord.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5dccb96855ab6df790e818a06c024ad634061009",
          "at": 1793189002000,
          "title": "saints-by-candlelight: episode 48, Elisha and the Chariots of Fire at Dothan (text only) + blog post",
          "pr": 11115,
          "agent": "Claude",
          "models": [],
          "track": "creative",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 6,
          "lines_added": 471,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-elisha-and-the-chariots-of-fire-a-bedtime-story-from-second-kings.md",
            "ventures/saints-by-candlelight/elisha-and-the-chariots-of-fire-at-dothan.html",
            "ventures/saints-by-candlelight/episodes/048-elisha-and-the-chariots-of-fire-at-dothan.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "84561c40cc423619222dbe8ee2d874ac49e994d9",
          "at": 1793194963000,
          "title": "saints-by-candlelight: episode 49, Zacchaeus and the Sycamore Tree at Jericho (text only)",
          "pr": 11133,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: episode 49, Zacchaeus and the Sycamore Tree at Jericho (text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 7,
          "lines_added": 574,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-zacchaeus-and-the-sycamore-bedtime-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKkRgDj5iazyNN9e5qy.json",
            "ventures/saints-by-candlelight/episodes/049-zacchaeus-and-the-sycamore-tree-at-jericho.md",
            "ventures/saints-by-candlelight/zacchaeus-and-the-sycamore-tree-at-jericho.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "c2f8a6eabe14693e6bd5255e921e488d6be78038",
          "at": 1793204205000,
          "title": "saints-by-candlelight: episode 50, Mary and Elizabeth in the Hill Country of Judah (text only) + blog post",
          "pr": 11158,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: episode 50, Mary and Elizabeth in the Hill Country of Judah (text only) + blog post",
            "creative run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 7,
          "lines_added": 512,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-mary-and-elizabeth-bedtime-story.md",
            "prompts/runs/2026-10-28-session_01AcxTtJLZkMPhNZWLQcrbzP.json",
            "ventures/saints-by-candlelight/episodes/050-mary-and-elizabeth-in-the-hill-country-of-judah.md",
            "ventures/saints-by-candlelight/mary-and-elizabeth-in-the-hill-country-of-judah.html"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "a9c83108ba3ae9aa31a7b0893052784c506cd790",
          "at": 1793222511000,
          "title": "process: drop drifting audio-size figures from creative prompt",
          "pr": 11215,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "process: drop drifting audio-size figures (395 vs 423 MB) from creative prompt and PRODUCTION.md"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 3,
          "lines_added": 51,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKmv9Fo26rksewhyfEk.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1bb39208383125696106dcac62754478970bf633",
          "at": 1793226056000,
          "title": "saints-by-candlelight: Cleopas and the Stranger on the Road to Emmaus (episode 51, text only) + blog post",
          "pr": 11227,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: Cleopas and the Stranger on the Road to Emmaus (episode 51, text only) + blog post",
            "creative run record",
            "fix post description length"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 7,
          "lines_added": 637,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-cleopas-and-the-road-to-emmaus-bedtime-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKmePicBn1D6CLwDfEa.json",
            "ventures/saints-by-candlelight/cleopas-and-the-stranger-on-the-road-to-emmaus.html",
            "ventures/saints-by-candlelight/episodes/051-cleopas-and-the-stranger-on-the-road-to-emmaus.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "2862d3a02b7eb70230217ab21240b9866306d739",
          "at": 1793229654000,
          "title": "saints-by-candlelight: Cyril and Methodius (episode 52, text only) + blog post",
          "pr": 11237,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "creative",
          "bullets": [
            "saints-by-candlelight: Cyril and Methodius and the Letters for a People Without Any (episode 52, text only) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "saints-by-candlelight"
          },
          "files": 7,
          "lines_added": 544,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-cyril-and-methodius-bedtime-story.md",
            "prompts/runs/2026-10-28-session_01E5sJKjR8wmW5BamSsw8g3V.json",
            "ventures/saints-by-candlelight/cyril-and-methodius-and-the-letters-for-a-people-without-any.html",
            "ventures/saints-by-candlelight/episodes/052-cyril-and-methodius-and-the-letters-for-a-people-without-any.md"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "einvoice-preflight",
      "merges": [
        {
          "sha": "9f7eb8491fffd52418a66ec22c5cd350aecf6474",
          "at": 1793159072000,
          "title": "prompts: polish track, 5% of runs on site design, SEO and AEO until 2026-11-30",
          "pr": 11022,
          "agent": "Claude Opus 5.5",
          "models": [
            "Claude Opus 5.5"
          ],
          "track": "process",
          "bullets": [
            "prompts: polish track, 5% of runs on site design, SEO and AEO until 2026-11-30",
            "prompts: run record for the polish track change",
            "fix CI: dead path ref in polish prompt; trim changepoint-detector next under 2,000 chars",
            "fix CI: FAQPage JSON-LD matches the visible FAQ on 9 venture pages",
            "pages: file saints-by-candlelight under Learning and wall-framing-takeoff under trades",
            "pages: wall-framing-takeoff in the interior trades sub-group"
          ],
          "detail": "The owner asked for about 5% of work on making the sites as impressive as possible for a period, plus SEO and AEO.",
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 22,
          "lines_added": 272,
          "lines_removed": 23,
          "added_files": [
            "docs/posts/2026-10-28-five-percent-for-looking-good.md",
            "prompts/polish/prompt-0.md",
            "prompts/runs/2026-10-28-session_01XpHqybqH85KDM495Eye5u8.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "48419fb274f62106fd1faa26ac9c8643cd04933f",
          "at": 1793159944000,
          "title": "einvoice-preflight: read PDFs whose attachment MIME type contains \"stream\"",
          "pr": 11034,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "einvoice-preflight: read PDFs whose attachment MIME type contains 'stream' (Aspose.Words)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 5,
          "lines_added": 94,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-real-invoice-pdf-our-checker-could-not-open.md",
            "prompts/runs/2026-10-28-session_01EhTJVPJFFyJhC4EJzFdzcq.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "69e387c2109d53f3fda609a5624dd818736b4049",
          "at": 1793163442000,
          "title": "einvoice-preflight: hub says France's e-invoicing has started; blog post",
          "pr": 11043,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 2,
          "lines_added": 34,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-france-e-invoicing-started-hub-was-stale.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "01f5cbd2d1d8732dc62f19670f1c73b95aa6d4f3",
          "at": 1793185267000,
          "title": "einvoice-preflight: Vietnam e-invoicing page with MST check-digit test",
          "pr": 11105,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "einvoice-preflight: Vietnam e-invoicing page with MST check-digit test"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 60,
          "lines_added": 335,
          "lines_removed": 50,
          "added_files": [
            "docs/posts/2026-10-28-einvoice-preflight-vietnam.md",
            "prompts/runs/2026-10-28-session_01EhTJVPGmwn9Voug3NTKFr4.json",
            "ventures/einvoice-preflight/vietnam-e-invoice-mandate.html",
            "ventures/einvoice-preflight/vietnam-e-invoice-mandate.test.mjs",
            "ventures/einvoice-preflight/vietnam.mjs",
            "ventures/einvoice-preflight/vietnam.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "44bcaab215546180e1aa60ddff9fda0412883fc7",
          "at": 1793197744000,
          "title": "polish: name the e-invoice line fields and the voice button",
          "pr": 11138,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: name the e-invoice line fields and the voice button (axe sweep of flagships)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 5,
          "lines_added": 103,
          "lines_removed": 6,
          "added_files": [
            "docs/posts/2026-10-28-naming-the-fields-on-a-free-e-invoice-builder.md",
            "docs/reports/polish-2026-10-28-flagship-a11y.md",
            "prompts/runs/2026-10-28-session_01EhTJVNzzvun3BaaLocjML6.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "68600588ad68b00528d64ccf7ee333289bd34bc5",
          "at": 1793199708000,
          "title": "einvoice-preflight: Luxembourg page carries bill 8815 status; blog post",
          "pr": 11144,
          "agent": "Claude",
          "models": [],
          "track": null,
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "einvoice-preflight"
          },
          "files": 3,
          "lines_added": 24,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-luxembourg-b2b-e-invoicing-bill-8815-status.md"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "sales-agent",
      "merges": [
        {
          "sha": "4264aa0a2ebacee03721ed6b95062bb35a9c2613",
          "at": 1793154017000,
          "title": "sales-agent: Auto-Submitted auto-notified counts as machine-sent",
          "pr": 11019,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "sales-agent: Auto-Submitted auto-notified counts as machine-sent"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "sales-agent"
          },
          "files": 5,
          "lines_added": 73,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-auto-notified-mail-is-not-a-reply.md",
            "prompts/runs/2026-10-28-session_01E5sJKitQzcX1MRaGbSAAdm.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6673220a32581ac877ae1c7d9397678f4a18e000",
          "at": 1793206850000,
          "title": "sales-agent: OAuth (XOAUTH2) for Gmail and Microsoft 365 (M4c)",
          "pr": 11164,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "sales-agent: OAuth (XOAUTH2) for Gmail and Microsoft 365 over IMAP and SMTP (M4c) + blog post"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "sales-agent"
          },
          "files": 13,
          "lines_added": 338,
          "lines_removed": 19,
          "added_files": [
            "docs/posts/2026-10-28-sales-agent-reads-gmail-and-microsoft-mail-without-a-password.md",
            "prompts/runs/2026-10-28-session_01EhTJVL7DPYUD6TB99mVZV7.json",
            "ventures/sales-agent/self-host/oauth-setup.mjs",
            "ventures/sales-agent/self-host/oauth.mjs",
            "ventures/sales-agent/self-host/oauth.test.mjs"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "fa1d6ca6de9794e951e09807f2a9817506a3ed58",
          "at": 1793224703000,
          "title": "sales-agent: fix Docker image missing modules, add Render/Fly one-click deploy",
          "pr": 11217,
          "agent": "Claude",
          "models": [],
          "track": "ventures",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "sales-agent"
          },
          "files": 9,
          "lines_added": 153,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-sales-agent-docker-image-crashed-at-start.md",
            "ventures/sales-agent/dockerfile.test.mjs",
            "ventures/sales-agent/fly.toml",
            "ventures/sales-agent/render.yaml"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "several products at once",
      "merges": [
        {
          "sha": "b57dc84bb33971e321eb1af8beb14b95f21fa35d",
          "at": 1793192827000,
          "title": "redteam: proposal terms 2026-10-28",
          "pr": 11125,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: proposal terms 2026-10-28 (fix key-suffix match in splitTerms, pin 3 escaped mutants)",
            "redteam record: PR number"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "several products at once"
          },
          "files": 123,
          "lines_added": 1513,
          "lines_removed": 122,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVMnzKsn3WfEbMaXpag.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "84d7fdfcca3fbd0292f3841d79b419899dd138fa",
          "at": 1793193754000,
          "title": "Name table rows and columns on seven venture pages; add check_table_headers",
          "pr": 11130,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "Name table rows and columns on seven venture pages; add check_table_headers"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "several products at once"
          },
          "files": 12,
          "lines_added": 227,
          "lines_removed": 37,
          "added_files": [
            "docs/posts/2026-10-28-seven-tables-a-screen-reader-could-not-read.md",
            "platform/ci/check_table_headers.py",
            "platform/ci/test_check_table_headers.py",
            "prompts/runs/2026-10-28-session_01E5sJKkApkEpahMsJzhbixK.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "breakeven-roas-calculator",
      "merges": [
        {
          "sha": "322ce0603a79ff56a49def8e222a78f6a23992be",
          "at": 1793189257000,
          "title": "redteam: breakeven-roas-calculator 2026-10-28",
          "pr": 11117,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: breakeven-roas-calculator 2026-10-28",
            "redteam record: PR number"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "breakeven-roas-calculator"
          },
          "files": 2,
          "lines_added": 182,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtJHwUuJStHu9AwFapw.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "gig-driver-earnings-report-analyzer",
      "merges": [
        {
          "sha": "92ba9972ab92ac420371d04e0dc2ec9260fb9f6d",
          "at": 1793225447000,
          "title": "gig-driver-earnings-report-analyzer: default cost per mile to the 2026 IRS rate",
          "pr": 11224,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "gig-driver-earnings-report-analyzer: default cost per mile to the 2026 IRS rate (76c from Jul 1)"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "gig-driver-earnings-report-analyzer"
          },
          "files": 3,
          "lines_added": 54,
          "lines_removed": 6,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKmNaiPk89TaLkzqKs9.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "home-sale-exclusion-calculator",
      "merges": [
        {
          "sha": "cac71fc27e64875ff361391b2f820ab5577f185c",
          "at": 1793188938000,
          "title": "redteam: home-sale-exclusion-calculator 2026-10-28",
          "pr": 11113,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: home-sale-exclusion-calculator 2026-10-28",
            "redteam record: name PR 11113"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "home-sale-exclusion-calculator"
          },
          "files": 2,
          "lines_added": 180,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVM3dNvYR9vH18ej6js.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "league-schedule-generator",
      "merges": [
        {
          "sha": "653335700645deed6fe850e396013e1577b99d86",
          "at": 1793225412000,
          "title": "league-schedule-generator: fuzz play-off race and odds against brute force",
          "pr": 11223,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "league-schedule-generator: fuzz play-off race and odds against brute force (900 leagues, 0 invalid)",
            "runs: record league-schedule-generator race fuzz"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "league-schedule-generator"
          },
          "files": 6,
          "lines_added": 171,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-checking-a-playoff-race-against-every-outcome.md",
            "prompts/runs/2026-10-28-session_01AcxTtLeBhhs6NWsVmfKk8F.json",
            "ventures/league-schedule-generator/eval/fuzz-race.mjs"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "rental-dscr-calculator",
      "merges": [
        {
          "sha": "4a49492198ae16e2673edc11d52806a0e61bb387",
          "at": 1793228281000,
          "title": "redteam: rental-dscr-calculator 2026-10-28",
          "pr": 11229,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: rental-dscr-calculator tests close 7 escaped mutants (catch 1/8 to 8/8)",
            "redteam: run record for rental-dscr-calculator"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "rental-dscr-calculator"
          },
          "files": 2,
          "lines_added": 214,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01EhTJVP2EM63pcTZ4NHobRv.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "shift-roster-builder",
      "merges": [
        {
          "sha": "94d1177e11777d7cfbbce1ec949bfe036a28b174",
          "at": 1793160304000,
          "title": "shift-roster-builder: LP relaxations show the clique cut cannot close the 12x30 gap",
          "pr": 11035,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "ventures",
          "bullets": [
            "shift-roster-builder: LP relaxations show the clique cut cannot close the 12x30 gap"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "shift-roster-builder"
          },
          "files": 5,
          "lines_added": 154,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-why-a-better-cut-cannot-close-this-scheduling-gap.md",
            "prompts/runs/2026-10-28-session_01EhTJVPSsRcbcNfwdswUhFE.json",
            "ventures/shift-roster-builder/eval/relaxation-check.py"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "uk-capital-gains-tax-calculator",
      "merges": [
        {
          "sha": "581650123f7d15b27145dc0aebfe337aaeb69668",
          "at": 1793160550000,
          "title": "uk-capital-gains-tax-calculator: add 2026/27 tax year, post on stale-year sweep",
          "pr": 11038,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "uk-capital-gains-tax-calculator: add 2026/27 tax year; post on stale-year sweep",
            "prompts: run record"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "uk-capital-gains-tax-calculator"
          },
          "files": 7,
          "lines_added": 74,
          "lines_removed": 14,
          "added_files": [
            "docs/posts/2026-10-28-uk-cgt-calculator-was-a-tax-year-behind.md",
            "prompts/runs/2026-10-28-session_01AcxTtGU3Po72138QeSKYqr.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "uk-student-loan-repayment-calculator",
      "merges": [
        {
          "sha": "7ec2a68d87c6dd63308824febe2d7774769726f5",
          "at": 1793175423000,
          "title": "redteam: uk-student-loan-repayment-calculator 2026-10-28",
          "pr": 11080,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: uk-student-loan calc guards 2026-10-28",
            "redteam: record PR number"
          ],
          "detail": null,
          "area": {
            "kind": "product",
            "name": "uk-student-loan-repayment-calculator"
          },
          "files": 2,
          "lines_added": 205,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKm8KxHmMcqJe9DccpW.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    }
  ],
  "research": [
    {
      "name": "aerolog-scaling",
      "merges": [
        {
          "sha": "42034b89c1d98a51f8cecfa9aa0cb0d8f420d839",
          "at": 1793157120000,
          "title": "research/aerolog-scaling: 7h demonstrator specification (CG within ±6 mm)",
          "pr": 11031,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: milestone 7h demonstrator specification in millimetres, CG tolerance +/-6 mm",
            "prompts: run record for aerolog-scaling 7h",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 5,
          "lines_added": 152,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-an-8-kg-froude-model-of-a-cargo-uav-needs-its-cg-within-6-mm.md",
            "prompts/runs/2026-10-28-session_01E5sJKkoeoM13EPp5wEuoxS.json",
            "research/aerolog-scaling/experiments/demonstrator_spec/results.txt",
            "research/aerolog-scaling/experiments/demonstrator_spec/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6956683b3a71b4d863236813f92af8c3e6e4b7b8",
          "at": 1793157616000,
          "title": "research/aerolog-scaling: 8a paper draft with number checks",
          "pr": 11032,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: 8a paper draft with number checks",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 6,
          "lines_added": 184,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-aerolog-scaling-paper-draft.md",
            "prompts/runs/2026-10-28-session_01E5sJKis86pYGsHSfWdp4Bw.json",
            "research/aerolog-scaling/paper/check_numbers.py",
            "research/aerolog-scaling/paper/draft.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "01ae9d240d5211b545a5983ff2405bfd665c322f",
          "at": 1793160492000,
          "title": "research/aerolog-scaling: 8b paper figures from committed results",
          "pr": 11036,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: 8b paper figures from committed results"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 7,
          "lines_added": 213,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLYNhVwDaqWmZGVQjk.json",
            "research/aerolog-scaling/paper/figures/fig1_power_ratio.png",
            "research/aerolog-scaling/paper/figures/fig2_mode_errors.png",
            "research/aerolog-scaling/paper/figures/fig3_cg_margin.png",
            "research/aerolog-scaling/paper/make_figures.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6dc833cd5cdf5c8718059602e756473fe8229059",
          "at": 1793164263000,
          "title": "research/aerolog-scaling: NeuralFoil vs measured UIUC NACA 0009 lift slope (milestone 8c)",
          "pr": 11049,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: NeuralFoil vs measured UIUC NACA 0009 lift slope (milestone 8c)",
            "prompts: run record for research/aerolog-scaling 8c",
            "prompts: fix run record writeups"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 7,
          "lines_added": 300,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-neuralfoil-vs-measured-low-reynolds-lift-slope.md",
            "prompts/runs/2026-10-28-session_01AcxTtHjmyVqAc4PVDnSM4d.json",
            "research/aerolog-scaling/experiments/uiuc_tail_slope/results.txt",
            "research/aerolog-scaling/experiments/uiuc_tail_slope/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "aa6cc5c8b8b22167e60acceffcfbcc3a1ffe0f70",
          "at": 1793168114000,
          "title": "research/aerolog-scaling: NeuralFoil tail slope vs UIUC NACA 2414/2415 (8d)",
          "pr": 11060,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: NeuralFoil tail slope vs UIUC NACA 2414/2415 (8d)",
            "prompts: run record for aerolog 8d",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 8,
          "lines_added": 256,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-the-airfoil-surrogate-reads-high-at-drone-reynolds-numbers.md",
            "prompts/runs/2026-10-28-session_01AcxTtGboDz1ky5DByPTrcG.json",
            "research/aerolog-scaling/experiments/uiuc_naca241x/results.txt",
            "research/aerolog-scaling/experiments/uiuc_naca241x/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "31070a2e3093374a0989b4f5ce9c6ab294a78eb6",
          "at": 1793172645000,
          "title": "research/aerolog-scaling: robust tail search under a 25% tail-slope error",
          "pr": 11073,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: robust tail search under a 25% tail-slope error (none of 78 passes)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 6,
          "lines_added": 334,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-sub-scale-tail-that-only-works-if-the-surrogate-is-right.md",
            "prompts/runs/2026-10-28-session_01E5sJKkfa8hmTiF8UbgycMT.json",
            "research/aerolog-scaling/experiments/robust_tail/results.txt",
            "research/aerolog-scaling/experiments/robust_tail/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f5684d107341f7a03135ca9171e618df1a8865d5",
          "at": 1793209028000,
          "title": "research/aerolog-scaling: gust response of the Froude model (9a)",
          "pr": 11174,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: gust response of the Froude model (milestone 9a) + post",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 6,
          "lines_added": 361,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-scale-model-feels-the-same-gust-but-pitches-harder.md",
            "prompts/runs/2026-10-28-session_01E5sJKkh4ftjY8knAyXoJuA.json",
            "research/aerolog-scaling/experiments/gust_response/results.txt",
            "research/aerolog-scaling/experiments/gust_response/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "80e63a8f89bbd32b36d9e6a50dbf057cda8b0ac0",
          "at": 1793211993000,
          "title": "research/aerolog-scaling: milestone 9b, mode-matched tails also match gust response",
          "pr": 11185,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: milestone 9b, mode-matched tails also match gust response",
            "fix post front matter"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 8,
          "lines_added": 357,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-tail-that-fixes-the-modes-fixes-the-gust-response-too.md",
            "prompts/runs/2026-10-28-session_01E5sJKke1sH7DPZM9FbKJVg.json",
            "research/aerolog-scaling/experiments/tail_gust/results.txt",
            "research/aerolog-scaling/experiments/tail_gust/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "c6ac96cbd8d0aaea3d061b954791d25f0db75182",
          "at": 1793229820000,
          "title": "research/aerolog-scaling: milestone 9c, gust match vs tail slope",
          "pr": 11238,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/aerolog-scaling: milestone 9c, gust match does not survive a lower tail slope"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "aerolog-scaling"
          },
          "files": 6,
          "lines_added": 271,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKm6gykroMVML3L37Wj.json",
            "research/aerolog-scaling/experiments/tail_gust_robust/results.txt",
            "research/aerolog-scaling/experiments/tail_gust_robust/run.py"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "lowcomm-training",
      "merges": [
        {
          "sha": "550d54d8505bc6f549537537f135235bebf0ffb8",
          "at": 1793148017000,
          "title": "research/lowcomm-training: 5j coalition of flippers at M=16",
          "pr": 10986,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: 5j coalition of flippers at M=16, plan and numpy prediction",
            "research/lowcomm-training: 5j outcome, coalition of flippers breaks the median at k=8 of 16",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 9,
          "lines_added": 273,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-median-survives-six-of-sixteen-bad-workers-and-not-eight.md",
            "prompts/runs/2026-10-28-session_01AcxTtGnQgvR4koYX28T8V5.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition.jsonl",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition.py",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition_numpy.py",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition_numpy_results.txt",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition_results.txt",
            "research/lowcomm-training/experiments/gpt_median_coalition/run.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f0f8e61a23ed465a8b88ea1187df6aef703ee52a",
          "at": 1793182016000,
          "title": "research/lowcomm-training: milestone 5k, coalition breakdown at k=5,7",
          "pr": 11088,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: milestone 5k plan (k=5,7 coalition runs)",
            "research/lowcomm-training: 5k run log (in progress)",
            "research/lowcomm-training: milestone 5k outcome, post, run record"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 7,
          "lines_added": 102,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-how-many-of-16-workers-can-a-median-lose.md",
            "prompts/runs/2026-10-28-session_01E5sJKj9JSAeUDNcnpe9r4f.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/coalition_5k_results.txt",
            "research/lowcomm-training/experiments/gpt_median_coalition/run_5k.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "170bf783d1405ab93178490f96c79fb450c54413",
          "at": 1793182103000,
          "title": "research/lowcomm-training: milestone 5k, median with 7 of 16 flipping workers",
          "pr": 11094,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: milestone 5k, median with 7 of 16 flipping workers still trains at 2x the cost of 6",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 8,
          "lines_added": 226,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtKNZLNhvwxnJ44bMbP.json",
            "research/lowcomm-training/experiments/gpt_median_k7/crossover_numpy.py",
            "research/lowcomm-training/experiments/gpt_median_k7/crossover_numpy_results.txt",
            "research/lowcomm-training/experiments/gpt_median_k7/k7.jsonl",
            "research/lowcomm-training/experiments/gpt_median_k7/k7.py",
            "research/lowcomm-training/experiments/gpt_median_k7/k7_results.txt",
            "research/lowcomm-training/experiments/gpt_median_k7/run.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "a531ab3eedc4a8ae6d206ae49d52e07460f93627",
          "at": 1793187230000,
          "title": "research/lowcomm-training: 5l coordinated-attack breakdown of the median (numpy)",
          "pr": 11112,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: 5l coordinated-attack breakdown of the median (numpy prediction) + post",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 5,
          "lines_added": 126,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-coordinated-attack-breaks-a-median-at-half-the-workers.md",
            "prompts/runs/2026-10-28-session_01AcxTtKGq3N6zvphKUxTzN6.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/coordinated_numpy.py",
            "research/lowcomm-training/experiments/gpt_median_coalition/coordinated_numpy_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "208f9b37cfae08fabdda709e9386cf22a78d84f1",
          "at": 1793207015000,
          "title": "research/lowcomm-training: 5l coordinated attack on the median (k=3..6)",
          "pr": 11165,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: 5l coordinated-attack harness (collective attack hook); runs in progress",
            "research/lowcomm-training: 5l run logs (in progress)",
            "research/lowcomm-training: 5l coordinated attack on the median, k=3..6 (excess +0.09..+0.52)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 7,
          "lines_added": 135,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtHfkNzKGRJR4h8ZrZZ.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/coordinated.jsonl",
            "research/lowcomm-training/experiments/gpt_median_coalition/coordinated.py",
            "research/lowcomm-training/experiments/gpt_median_coalition/coordinated_results.txt",
            "research/lowcomm-training/experiments/gpt_median_coalition/run_5l.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "16656a74e22003958ed540310ac9ba459454a831",
          "at": 1793218541000,
          "title": "research/lowcomm-training: 5m coordinated-attack replication and k=7 wall",
          "pr": 11193,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: plan 5m (coordinated attack replication, k=7)",
            "research/lowcomm-training: 5m results (seed 1, k=4..7), post, run record",
            "research/lowcomm-training: 5m results (seed 1, k=4..7), post, run record"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 6,
          "lines_added": 168,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-coordinated-attackers-vs-the-median.md",
            "prompts/runs/2026-10-28-session_01E5sJKjXXQtvqgCxCpLQrZw.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/run_5m.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f32fcf5d144263cb6e76d117cb1969b4c0543a0e",
          "at": 1793225431000,
          "title": "research/lowcomm-training: 5n coordinated attack at k = 8, 9",
          "pr": 11216,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: 5n plan, coordinated attack at k = 8, 9",
            "research/lowcomm-training: 5n result, coordinated attack diverges at k = 8, 9"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 7,
          "lines_added": 184,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-the-median-wall-at-eight-of-sixteen.md",
            "docs/reports/lowcomm-5n.md",
            "prompts/runs/2026-10-28-session_01E5sJKjzb6GzwQAboHekH3u.json",
            "research/lowcomm-training/experiments/gpt_median_coalition/run_5n.out"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "998c53cce4b714df387a132c48de97d244744891",
          "at": 1793228993000,
          "title": "research/lowcomm-training: 7a draft paper section on the median's breakdown point",
          "pr": 11231,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/lowcomm-training: 7a draft paper section on the median's breakdown point + blog post",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "lowcomm-training"
          },
          "files": 6,
          "lines_added": 174,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-median-breakdown-at-half-the-workers-first-paper-section.md",
            "prompts/runs/2026-10-28-session_01AcxTtGjDTXChoYKtGtumF7.json",
            "research/lowcomm-training/paper/breakdown_table.md",
            "research/lowcomm-training/paper/breakdown_table.py",
            "research/lowcomm-training/paper/section_breakdown.md"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "marine-hull",
      "merges": [
        {
          "sha": "a050a2ac04481e6a9ee2b87f3a265e7acdf4b020",
          "at": 1793153332000,
          "title": "research/marine-hull: milestone 5 planing rung (Savitsky)",
          "pr": 11014,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5 planing rung (Savitsky), 0 of 48 cases out-range the monohull",
            "prompts: run record for marine-hull planing rung"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 9,
          "lines_added": 305,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-planing-hull-vs-displacement-survey-boat-range.md",
            "prompts/runs/2026-10-28-session_01AcxTtKr6Hp34qaE7CbZMNp.json",
            "research/marine-hull/experiments/results_planing.txt",
            "research/marine-hull/experiments/run_planing.py",
            "research/marine-hull/src/marine_hull/planing.py",
            "research/marine-hull/tests/test_planing.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "14fa2dd5bc44c252d507183d9899c3a26a980bab",
          "at": 1793153573000,
          "title": "research/marine-hull: milestone 5b, SWATH rung",
          "pr": 11017,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5b, SWATH rung (Michell torpedo wave drag; 0 of 4,374 pairs out-range the monohull)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 10,
          "lines_added": 404,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-does-a-swath-boat-beat-a-monohull-on-energy.md",
            "prompts/runs/2026-10-28-session_01AcxTtKFXuSg6vGpbmMQv1j.json",
            "research/marine-hull/experiments/results_swath.txt",
            "research/marine-hull/experiments/run_swath.py",
            "research/marine-hull/tests/test_torpedo.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "35660fb33e6ca1b2bce01f7b2e8de736d3ca9a7a",
          "at": 1793156973000,
          "title": "research/marine-hull: milestone 5c, deck solar energy-neutrality",
          "pr": 11028,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5c, deck solar energy-neutrality sweep",
            "prompts: run record for marine-hull 5c"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 8,
          "lines_added": 310,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-deck-solar-makes-a-5-m-survey-boat-self-sustaining-a-4-m-boat-only-doubles-range.md",
            "prompts/runs/2026-10-28-session_01AcxTtK1jSwWAU4Z8mzEsAz.json",
            "research/marine-hull/experiments/results_solar.txt",
            "research/marine-hull/experiments/run_solar.py",
            "research/marine-hull/src/marine_hull/solar.py",
            "research/marine-hull/tests/test_solar.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "456ddffd17424faec47dbade406331565f508c18",
          "at": 1793168573000,
          "title": "research/marine-hull: milestone 5d, panel mass charged to the battery",
          "pr": 11062,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5d, panel mass charged to the battery",
            "prompts: run record for marine-hull 5d",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 10,
          "lines_added": 186,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-does-solar-panel-weight-ruin-a-small-survey-boats-solar-gain.md",
            "prompts/runs/2026-10-28-session_01E5sJKkt1jPX8cbKrBquDin.json",
            "research/marine-hull/experiments/results_solar_mass.txt",
            "research/marine-hull/experiments/run_solar_mass.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4477f21328c6afe702bbcac62fd554a0dbbf606b",
          "at": 1793207514000,
          "title": "research/marine-hull: milestone 5e, deck solar neutrality with NASA POWER insolation",
          "pr": 11166,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5e, deck solar neutrality with NASA POWER insolation at five sites",
            "Shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 12,
          "lines_added": 258,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-can-a-solar-survey-boat-run-all-year.md",
            "prompts/runs/2026-10-28-session_01AcxTtK233X8ZQrEMCAb1Pc.json",
            "research/marine-hull/experiments/data/power_Equator-Pacific.json",
            "research/marine-hull/experiments/data/power_Florida-Straits.json",
            "research/marine-hull/experiments/data/power_Gulf-of-Alaska.json",
            "research/marine-hull/experiments/data/power_Gulf-of-Maine.json",
            "research/marine-hull/experiments/data/power_North-Sea.json",
            "research/marine-hull/experiments/results_solar_sites.txt",
            "research/marine-hull/experiments/run_solar_sites.py",
            "research/marine-hull/tests/test_solar_sites.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "89a832b7eb41bedded5bf74ecd233d0b8c933c95",
          "at": 1793214678000,
          "title": "research/marine-hull: milestone 5f, daily insolation check of the solar verdict",
          "pr": 11192,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5f, daily insolation pack-drawdown check of the solar verdict; post",
            "post: shorten description",
            "post: shorten description again"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 10,
          "lines_added": 201,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-does-a-solar-boat-survive-a-dull-week.md",
            "prompts/runs/2026-10-28-session_01AcxTtKUznHwb5ZtGMtEkfc.json",
            "research/marine-hull/experiments/data/daily_Equator-Pacific.json",
            "research/marine-hull/experiments/data/daily_Florida-Straits.json",
            "research/marine-hull/experiments/data/daily_Gulf-of-Alaska.json",
            "research/marine-hull/experiments/data/daily_Gulf-of-Maine.json",
            "research/marine-hull/experiments/data/daily_North-Sea.json",
            "research/marine-hull/experiments/results_solar_storm.txt",
            "research/marine-hull/experiments/run_solar_storm.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5d3c284c64a878f16b88dc771b302d73f0629e0c",
          "at": 1793215303000,
          "title": "research/marine-hull: milestone 5g, speed policy against ten years of daily insolation",
          "pr": 11194,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5g, speed policy against ten years of daily insolation",
            "prompts: run record for research/marine-hull 5g"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 7,
          "lines_added": 245,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-slowing-down-does-not-save-a-solar-boat.md",
            "prompts/runs/2026-10-28-session_01E5sJKnrmtScJgRfzPEhbyF.json",
            "research/marine-hull/experiments/results_solar_policy.txt",
            "research/marine-hull/experiments/run_solar_policy.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b85e5d458170852c39d884726873cb741a71dfb5",
          "at": 1793218156000,
          "title": "research/marine-hull: milestone 5h, speed-policy sweep and perfect-forecast bound",
          "pr": 11200,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/marine-hull: milestone 5h, speed-policy sweep and perfect-forecast bound; surge beats fixed speed for the 5 m solar boat"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "marine-hull"
          },
          "files": 6,
          "lines_added": 279,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-solar-survey-boat-should-speed-up-when-full.md",
            "prompts/runs/2026-10-28-session_01AcxTtJVMpdWLFzcTNgL21P.json",
            "research/marine-hull/experiments/results_solar_policy_bound.txt",
            "research/marine-hull/experiments/run_solar_policy_bound.py"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "verified-dse",
      "merges": [
        {
          "sha": "7aae6251303d4541db1f7656ad7ac1de8585b605",
          "at": 1793153547000,
          "title": "research/verified-dse: milestone 32, rank the R2 rung on mapped area alone",
          "pr": 11016,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 32, R2 rung on mapped area alone (12 held-out designs)",
            "prompts: run record for verified-dse milestone 32",
            "docs: shorten post description",
            "docs: shorten post description again",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 7,
          "lines_added": 566,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-verified-dse-rank-on-area-alone.md",
            "prompts/runs/2026-10-28-session_01AcxTtGSsSp4oYNF3XiiPqP.json",
            "research/verified-dse/experiments/r2_area_arm/replay.py",
            "research/verified-dse/experiments/r2_area_arm/results.txt",
            "research/verified-dse/experiments/r2_area_arm/summary.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "db4a96673a1783daa4390a295979a5a7004d98c9",
          "at": 1793157619000,
          "title": "research/verified-dse: milestone 33, harsh first cut (eta 3) replay",
          "pr": 11033,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 33, harsh first cut (eta 3) replay on 12 held-out designs"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 6,
          "lines_added": 597,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKjMqkkXyHbm4Bqz5hf.json",
            "research/verified-dse/experiments/r2_harsh_cut/replay.py",
            "research/verified-dse/experiments/r2_harsh_cut/results.txt",
            "research/verified-dse/experiments/r2_harsh_cut/summary.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7e78d6bdc67389dfe8af3f2423176e1368e79e5b",
          "at": 1793168518000,
          "title": "research/verified-dse: milestone 34, median and worst-design regret",
          "pr": 11061,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 34, median and worst-design regret table",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 7,
          "lines_added": 334,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-means-hide-the-worst-chip-design-in-multi-fidelity-search.md",
            "prompts/runs/2026-10-28-session_01E5sJKk9LT1o3nJiDaXoyVG.json",
            "research/verified-dse/experiments/tail_risk/results.txt",
            "research/verified-dse/experiments/tail_risk/summary.json",
            "research/verified-dse/experiments/tail_risk/tail.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "cfbddcda100214df9474dd861d546dfa359ecacc",
          "at": 1793175119000,
          "title": "research/verified-dse: milestone 35, disjoint-pair pilot quantile is not proved; independent-pairs version is",
          "pr": 11079,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 35, the disjoint-pair pilot quantile is not proved; independent-pairs version is",
            "prompts: run record for verified-dse milestone 35"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 8,
          "lines_added": 364,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-proof-that-only-half-applied-to-our-chip-search-pilot.md",
            "docs/reports/verified-dse-milestone-35.md",
            "prompts/runs/2026-10-28-session_01AcxTtM1mjB9gpLpjr9RrpE.json",
            "research/verified-dse/experiments/theory/disjoint_check.py",
            "research/verified-dse/experiments/theory/disjoint_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "ff9b512bfffa4e5a656f1157aaed609a5c10d691",
          "at": 1793178585000,
          "title": "research/verified-dse: milestone 36, independent-pairs pilot quantile coverage",
          "pr": 11085,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 36, independent-pairs pilot quantile coverage 0.826+ on 60 cells"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 5,
          "lines_added": 185,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLzSrif3C1RAVFJjUD.json",
            "research/verified-dse/experiments/theory/with_replacement.py",
            "research/verified-dse/experiments/theory/with_replacement_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "5e7d138742e16746b10026e48c3673ed6cc385d9",
          "at": 1793182220000,
          "title": "research/verified-dse: milestone 37, regret bound that improves with survivor count k",
          "pr": 11095,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 37, regret bound that improves with survivor count k"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 9,
          "lines_added": 629,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLKbWdA7viwbiBEfx9.json",
            "research/verified-dse/experiments/theory/KTH.md",
            "research/verified-dse/experiments/theory/kth.py",
            "research/verified-dse/experiments/theory/kth_results.txt",
            "research/verified-dse/experiments/theory/kth_summary.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "76d23601df93731b293bfb2cae72e27a1cfa0b44",
          "at": 1793211624000,
          "title": "research/verified-dse: milestone 38, pilot estimate of iota^(k) (negative)",
          "pr": 11183,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 38, pilot estimate of iota^(k) (negative, exploratory)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 6,
          "lines_added": 250,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKo7QwryNQ13DyaRGem.json",
            "research/verified-dse/experiments/theory/kth_pilot.py",
            "research/verified-dse/experiments/theory/kth_pilot_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8d6fad9b8e6219a94104d9a68c94af34abee9a0a",
          "at": 1793226002000,
          "title": "research/verified-dse: milestone 39, optimum-anchored halving bound",
          "pr": 11225,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verified-dse: milestone 39, optimum-anchored halving bound"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verified-dse"
          },
          "files": 7,
          "lines_added": 195,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKkymm6rA5P39eFgx1j.json",
            "research/verified-dse/experiments/theory/anchored.py",
            "research/verified-dse/experiments/theory/anchored_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "llm-coding-inference",
      "merges": [
        {
          "sha": "137fcbe9289ba6d471d443732a8b910c555852fa",
          "at": 1793145692000,
          "title": "research/llm-coding-inference: 6y, a betting confidence sequence and Wilson at a rare-category stop (pooled human labels)",
          "pr": 10992,
          "agent": "Claude",
          "models": [],
          "track": "research",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 5,
          "lines_added": 182,
          "lines_removed": 3,
          "added_files": [
            "docs/posts/2026-10-28-stopping-early-is-not-the-problem-the-estimator-is.md",
            "research/llm-coding-inference/experiments/h6y_confseq.py",
            "research/llm-coding-inference/experiments/h6y_confseq.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "cfc22fefc32542c048459c67a8f8c7901938141e",
          "at": 1793146979000,
          "title": "research/llm-coding-inference: 6z stratified betting confidence sequence",
          "pr": 10994,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: 6z plan and script, stratified betting confidence sequence",
            "research/llm-coding-inference: 6z outcome, post, run record",
            "research/llm-coding-inference: shorten 6z post description",
            "research/llm-coding-inference: shorten post description again"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 5,
          "lines_added": 326,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-valid-sequential-audit-with-a-coder-costs-more-than-no-coder.md",
            "prompts/runs/2026-10-28-session_01AcxTtJ2scjJ6ceDFCdAsMX.json",
            "research/llm-coding-inference/experiments/h6z_strat_cs.py",
            "research/llm-coding-inference/experiments/h6z_strat_cs.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "e18c4e42b0fba9f7bee9d0ec91c15f73ebda041a",
          "at": 1793150711000,
          "title": "research/llm-coding-inference: milestone 6aa, pilot-frozen lambda betting CS",
          "pr": 11009,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: milestone 6aa plan and pilot-lambda betting CS script",
            "research/llm-coding-inference: milestone 6aa outcome and post",
            "shorten post description",
            "shorten post description again"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 5,
          "lines_added": 231,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-rare-category-audit-coder-still-dominated.md",
            "prompts/runs/2026-10-28-session_01E5sJKkSKQPLCukjKnesT1z.json",
            "research/llm-coding-inference/experiments/h6aa_pilot_lambda.py",
            "research/llm-coding-inference/experiments/h6aa_pilot_lambda.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "78151b60a07db0384c1efb2da34c5e50e82ba1f9",
          "at": 1793196811000,
          "title": "research/llm-coding-inference: milestone 6ab, real LLM coder on GoEmotions rare categories",
          "pr": 11137,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: milestone 6ab plan, LLM coder for GoEmotions (in progress)",
            "research/llm-coding-inference: partial LLM score cache (resumable)",
            "research/llm-coding-inference: complete GoEmotions LLM score caches",
            "research/llm-coding-inference: milestone 6ab, real LLM coder on GoEmotions rare categories",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 9,
          "lines_added": 13674,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-real-llm-coder-barely-shrinks-a-rare-category-audit.md",
            "docs/reports/llm-coding-inference-milestone-6ab.md",
            "prompts/runs/2026-10-28-session_01AcxTtLLkD8JXHsywG6qHVU.json",
            "research/llm-coding-inference/experiments/gollm_fear_Qwen2.5-1.5B-Instruct.tsv",
            "research/llm-coding-inference/experiments/gollm_sadness_Qwen2.5-1.5B-Instruct.tsv",
            "research/llm-coding-inference/experiments/h6ab_llm_goemotions.py",
            "research/llm-coding-inference/experiments/h6ab_llm_goemotions.txt",
            "research/llm-coding-inference/experiments/llm_code_goemotions.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d6146a7a23ae0ae50c89410a0b8339b22f285463",
          "at": 1793197964000,
          "title": "research/llm-coding-inference: paper gains 6z, 6aa and 6ab results",
          "pr": 11141,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: paper gains the confidence-sequence (6z, 6aa) and real-LLM rare-category (6ab) results"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 2,
          "lines_added": 57,
          "lines_removed": 4,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKnheTCMrNBXGWApuGg.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "dd9c372091987d5c83f5d8ff536a27702193709f",
          "at": 1793204828000,
          "title": "research/llm-coding-inference: milestone 6ac, pooled PPI weight at a rare category",
          "pr": 11160,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: milestone 6ac, pooled PPI weight at a rare category"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 5,
          "lines_added": 207,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-pooled-ppi-weight-rare-category-audit.md",
            "prompts/runs/2026-10-28-session_01E5sJKjBtxafRTpR1JcnW89.json",
            "research/llm-coding-inference/experiments/h6ac_pooled_lambda.py",
            "research/llm-coding-inference/experiments/h6ac_pooled_lambda.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1fb4aaa12123bd4911973cfc5b7881c0c33c35dd",
          "at": 1793225403000,
          "title": "research/llm-coding-inference: milestone 6ad, Wilson interval on pooled PPI",
          "pr": 11222,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/llm-coding-inference: milestone 6ad, Wilson interval on the pooled PPI estimate's effective sample size",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "llm-coding-inference"
          },
          "files": 6,
          "lines_added": 204,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-wilson-interval-for-llm-coded-audits-of-rare-emotions.md",
            "prompts/runs/2026-10-28-session_01AcxTtJQyu4WHg9qq9bzTk2.json",
            "research/llm-coding-inference/experiments/h6ad_wilson_ppi.py",
            "research/llm-coding-inference/experiments/h6ad_wilson_ppi.txt"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "verifiable-training-mechanisms",
      "merges": [
        {
          "sha": "a4fc3d47ba01adb52301bb507250bb3cc5f6183e",
          "at": 1793147001000,
          "title": "research/verifiable-training-mechanisms: milestone 40, bit-flip harm share places f",
          "pr": 11000,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 40, bit-flip harm share in real training places f for the faulty-worker model"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 10,
          "lines_added": 414,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-one-flipped-bit-in-training-rarely-matters.md",
            "prompts/runs/2026-10-28-session_01AcxTtGZGAzrDCcGT9e9zS3.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips/place.py",
            "research/verifiable-training-mechanisms/experiments/bit_flips/place.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7d979e07df9a83258fca0b4990ce13eb1dfbeae2",
          "at": 1793161692000,
          "title": "research/verifiable-training-mechanisms: milestone 41, bit-flip harm across model width",
          "pr": 11042,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 41, bit-flip harm across model width",
            "shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 7,
          "lines_added": 474,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-how-often-does-a-silent-bit-flip-ruin-a-training-run.md",
            "prompts/runs/2026-10-28-session_01AcxTtKxvJNhMWB9W48DSpb.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_size/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_size/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_size/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_size/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "70f7aa0e476994b06ba7c8bee39243370bbb6225",
          "at": 1793177541000,
          "title": "research/verifiable-training-mechanisms: milestone 42, bit-flip harm by site",
          "pr": 11083,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 42, bit-flip harm by site (weight, gradient, activation)",
            "prompts: run record for research/verifiable-training-mechanisms milestone 42",
            "docs: shorten post description",
            "docs: shorten post description",
            "flagships: trim wall-framing-takeoff next: under the 2000-character cap (main was red)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 8,
          "lines_added": 396,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-where-a-silent-bit-flip-lands-matters-less-than-which-bit.md",
            "prompts/runs/2026-10-28-session_01E5sJKitcPu88QenRQPzran.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_site/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_site/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_site/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_site/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "a90e7c3977a18f334ffcd30ca19400b5da6eef9e",
          "at": 1793183432000,
          "title": "research/verifiable-training-mechanisms: milestone 43, bit flips by stored format (fp32/bf16/fp16)",
          "pr": 11100,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 43 plan and script (bit flips by stored format), results pending",
            "research/verifiable-training-mechanisms: milestone 43 outcome (bit flips by stored format) and post",
            "prompts: run record for milestone 43",
            "docs: shorten post description",
            "portfolio: trim ai-bookkeeper flagship next: under the 2000-character cap (red on main)"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 9,
          "lines_added": 317,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-does-fp16-make-silent-bit-flips-in-weights-safer.md",
            "prompts/runs/2026-10-28-session_01AcxTtJ2rPKgepNYXh1J2bW.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_format/.gitignore",
            "research/verifiable-training-mechanisms/experiments/bit_flips_format/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_format/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_format/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_format/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "1c668b8988ba9d2be1f9ab555a17d43c7228bbf7",
          "at": 1793189149000,
          "title": "research/verifiable-training-mechanisms: milestone 44, magnitude-bound check vs silent bit flips",
          "pr": 11116,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 44, magnitude-bound check catches all harmful bit flips",
            "prompts: run record for research/verifiable-training-mechanisms milestone 44",
            "docs: shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 7,
          "lines_added": 655,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-a-magnitude-check-catches-every-harmful-bit-flip.md",
            "prompts/runs/2026-10-28-session_01E5sJKjvvq7NGtb8kVg3JqS.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_bound/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_bound/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_bound/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_bound/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "3777a99fee99bc23cb8dcf6b5a610aa77da686bc",
          "at": 1793208280000,
          "title": "research/verifiable-training-mechanisms: milestone 45, init-scale weight bound vs bit flips and planted values",
          "pr": 11170,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 45, init-scale weight bound vs bit flips and planted values"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 8,
          "lines_added": 486,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-a-weight-bound-catches-bit-flips-but-not-a-cheater.md",
            "prompts/runs/2026-10-28-session_01E5sJKnRQPovSqgt52gr1Jv.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_ref/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_ref/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_ref/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_ref/run.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "03dbb7842e0646721549f90227e547ce04218e77",
          "at": 1793229325000,
          "title": "research/verifiable-training-mechanisms: milestone 46, per-tensor magnitude bound vs global",
          "pr": 11235,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/verifiable-training-mechanisms: milestone 46, per-tensor magnitude bound vs global"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "verifiable-training-mechanisms"
          },
          "files": 9,
          "lines_added": 385,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-per-tensor-bound-silent-bit-flips.md",
            "prompts/runs/2026-10-28-session_01AcxTtJGyCH3uutQb9aPFKv.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/growth.py",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/growth.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/results.json",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/results.txt",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/run.out",
            "research/verifiable-training-mechanisms/experiments/bit_flips_tensor/run.py"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "heavy-hydraulics",
      "merges": [
        {
          "sha": "c180b96add5dbcac923613fb59b4a51dd40650f3",
          "at": 1793175806000,
          "title": "research/heavy-hydraulics: open programme, excavator circuit energy model",
          "pr": 11082,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/heavy-hydraulics: open programme, circuit energy model and first sweep",
            "research/heavy-hydraulics: verified citations, proposal meets the bar",
            "Shorten post description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "heavy-hydraulics"
          },
          "files": 14,
          "lines_added": 546,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-what-a-load-sensing-pump-saves-on-an-excavator.md",
            "prompts/runs/2026-10-28-session_01E5sJKje6oHj5K2GgkdQ1Jm.json",
            "research/heavy-hydraulics/LOG.md",
            "research/heavy-hydraulics/PROPOSAL.md",
            "research/heavy-hydraulics/README.md",
            "research/heavy-hydraulics/experiments/results.txt",
            "research/heavy-hydraulics/experiments/run.py",
            "research/heavy-hydraulics/project.json",
            "research/heavy-hydraulics/pyproject.toml",
            "research/heavy-hydraulics/src/heavy_hydraulics/__init__.py",
            "research/heavy-hydraulics/src/heavy_hydraulics/circuits.py",
            "research/heavy-hydraulics/tests/test_circuits.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "2c50dbfeef6e12c1f8faa56f150ef0a8112c2f0b",
          "at": 1793179250000,
          "title": "research/heavy-hydraulics: milestone 2a, circuit ranking on 20,000 random cycles",
          "pr": 11089,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/heavy-hydraulics: milestone 2a, ranking on 20,000 random cycles in a machine envelope",
            "prompts: run record for heavy-hydraulics milestone 2a",
            "research/heavy-hydraulics: shorten post description",
            "research/heavy-hydraulics: shorten post description again"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "heavy-hydraulics"
          },
          "files": 8,
          "lines_added": 187,
          "lines_removed": 4,
          "added_files": [
            "docs/posts/2026-10-28-does-the-excavator-circuit-ranking-depend-on-one-cycle.md",
            "prompts/runs/2026-10-28-session_01E5sJKiZsGnrw39bnRTXveQ.json",
            "research/heavy-hydraulics/experiments/envelope.py",
            "research/heavy-hydraulics/experiments/envelope_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "a72f82e4cd9d27826e237c0dd17a4e0ba1fbe571",
          "at": 1793193082000,
          "title": "research/heavy-hydraulics: milestone 2b, measured cycle times and pump curve",
          "pr": 11126,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/heavy-hydraulics: milestone 2b, measured cycle times and pump curve"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "heavy-hydraulics"
          },
          "files": 6,
          "lines_added": 171,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-measured-pump-curve-shrinks-load-sensing-saving.md",
            "prompts/runs/2026-10-28-session_01AcxTtJmTTfdCD3XgbU5SFx.json",
            "research/heavy-hydraulics/experiments/measured_cycle.py",
            "research/heavy-hydraulics/experiments/measured_cycle_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f6ef21ec322151863aec2d547d977c4aa9278833",
          "at": 1793194912000,
          "title": "heavy-hydraulics: milestone 2c, force-model pressures (load-sensing saving falls to 16%)",
          "pr": 11132,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "heavy-hydraulics: milestone 2c, force-model pressures; load-sensing saving falls to 16% (assumed parameters)",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "heavy-hydraulics"
          },
          "files": 6,
          "lines_added": 185,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-load-sensing-saves-less-when-the-cycle-is-low-pressure.md",
            "prompts/runs/2026-10-28-session_01E5sJKj8S6pyqLvBGqx3jCA.json",
            "research/heavy-hydraulics/experiments/physics_cycle.py",
            "research/heavy-hydraulics/experiments/physics_cycle_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "6fc6643e78ba0b71562b06bf2f185b13eb1954dd",
          "at": 1793222181000,
          "title": "research/heavy-hydraulics: milestone 2d, sourced margins and load-sensing break-even",
          "pr": 11211,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/heavy-hydraulics: milestone 2d, sourced margins reverse load-sensing advantage"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "heavy-hydraulics"
          },
          "files": 6,
          "lines_added": 127,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-load-sensing-margin-excavator-breakeven.md",
            "prompts/runs/2026-10-28-session_01AcxTtK7ZgV2AwzC2489Juo.json",
            "research/heavy-hydraulics/experiments/physics_cycle_sourced_results.txt"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "civ-levers",
      "merges": [
        {
          "sha": "b6d821c0f877624123fd25930583a44ac752831c",
          "at": 1793172181000,
          "title": "research/civ-levers: where to seed a complex contagion (milestone 3)",
          "pr": 11072,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/civ-levers: where to seed a complex contagion (milestone 3) + post",
            "post: shorten description"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "civ-levers"
          },
          "files": 9,
          "lines_added": 412,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-seeding-a-complex-contagion.md",
            "prompts/runs/2026-10-28-session_01E5sJKnB4CL93v7v4BEJMGM.json",
            "research/civ-levers/experiments/cascades/results.txt",
            "research/civ-levers/experiments/cascades/run.py",
            "research/civ-levers/src/civ_levers/cascades.py",
            "research/civ-levers/tests/test_cascades.py"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "147936a79310f7c871a5506f3a4951f6d338ba81",
          "at": 1793205498000,
          "title": "research/civ-levers: Axelrod culture model with a broadcast (milestone 4)",
          "pr": 11162,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/civ-levers: milestone 4, Axelrod culture model with a broadcast (fragments; q_c not reproduced) + post"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "civ-levers"
          },
          "files": 10,
          "lines_added": 399,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-does-a-common-broadcast-homogenise-culture-or-fragment-it.md",
            "prompts/runs/2026-10-28-session_01AcxTtLHS3GqLGBxiikmgFD.json",
            "research/civ-levers/experiments/culture/results.txt",
            "research/civ-levers/experiments/culture/run.py",
            "research/civ-levers/src/civ_levers/culture.py",
            "research/civ-levers/tests/test_culture.py"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "sim2real-inference",
      "merges": [
        {
          "sha": "7b8e564490a2ccf9648f608673b1b95db861304c",
          "at": 1793167946000,
          "title": "research/sim2real-inference: milestone 2s, audit of the 138 twin projects",
          "pr": 11057,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/sim2real-inference: milestone 2s, audit of the 138 twin projects by evidence type"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "sim2real-inference"
          },
          "files": 8,
          "lines_added": 356,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-138-twin-projects-no-real-rho.md",
            "prompts/runs/2026-10-28-session_01E5sJKncRBuRPqH7tuKR6Pp.json",
            "research/sim2real-inference/experiments/m2s_twin_audit/README.md",
            "research/sim2real-inference/experiments/m2s_twin_audit/audit.py",
            "research/sim2real-inference/experiments/m2s_twin_audit/results/audit.csv",
            "research/sim2real-inference/experiments/m2s_twin_audit/results/summary.txt"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "32c3849f054cf8a6caef856b934880732374cfc3",
          "at": 1793225346000,
          "title": "research/sim2real-inference: per-episode pairs blocker is missing data, not the host",
          "pr": 11221,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "research",
          "bullets": [
            "research/sim2real-inference: log that per-episode pairs are blocked by missing data, not the host"
          ],
          "detail": null,
          "area": {
            "kind": "research",
            "name": "sim2real-inference"
          },
          "files": 2,
          "lines_added": 52,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtL99xaH9TEQuKkSFBJ.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    }
  ],
  "writing": [
    {
      "sha": "090989d6a7e061deb59817569e22c621095f95f0",
      "at": 1793157005000,
      "title": "process: fix red check_post_frontmatter on main (age-65 post description)",
      "pr": 11029,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: shorten age-65 post description to pass check_post_frontmatter",
        "prompts: run record for process/1 session"
      ],
      "detail": "main_health found the only red check on main: description was 179 chars (limit 160).",
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 47,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtGTg4j22aWQa8y4wyV.json"
      ],
      "revert": false,
      "fix_forward": true
    },
    {
      "sha": "17ed6e9b6500da68d4d15422248adc86bdb5eb2d",
      "at": 1793164124000,
      "title": "process: fix red main_health check (france e-invoicing post description over 160 chars)",
      "pr": 11046,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "Shorten france e-invoicing post description to 160 characters (main_health red)"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 45,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHJiLYFSm82XksJ7Yi.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "e9444ee3d756f3c45a0062480ae15e8935cfc8b9",
      "at": 1793182934000,
      "title": "process: port claim-check steps into the routed research prompt 0",
      "pr": 11102,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: port claim-check steps from research prompt 1 into the routed prompt 0"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 3,
      "lines_added": 148,
      "lines_removed": 2,
      "added_files": [
        "docs/posts/2026-10-28-research-claim-check-reached-the-live-prompt.md",
        "prompts/runs/2026-10-28-session_01E5sJKo2uLgccihFZHy5ixm.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "e41a26515b2e7d2ab5e9b66f508984ea1cc5d6aa",
      "at": 1793186803000,
      "title": "ai-bookkeeper: property test for annualized installment worksheet",
      "pr": 11110,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "ventures",
      "bullets": [
        "ai-bookkeeper: property test for the annualized installment worksheet, post",
        "fix post description length"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 4,
      "lines_added": 122,
      "lines_removed": 1,
      "added_files": [
        "docs/posts/2026-10-28-testing-the-annualized-installment-worksheet-on-150-random-years.md",
        "prompts/runs/2026-10-28-session_01E5sJKm1SySKTAz6ihkNLRk.json",
        "ventures/ai-bookkeeper/annualized-property.test.mjs"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "7e5ebb0477d8db9051f56330d63f4338659e1bc9",
      "at": 1793190521000,
      "title": "redteam: check_post_frontmatter 2026-10-28",
      "pr": 11121,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "redteam",
      "bullets": [
        "redteam: check_post_frontmatter 2026-10-28",
        "redteam: run record"
      ],
      "detail": "Guard the default ROOT depth; trim an over-long post description.",
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 3,
      "lines_added": 171,
      "lines_removed": 2,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKnNBRWnPQKq6H8HMFt.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "7927b478f6a75456131832490bc86d089230bebe",
      "at": 1793200258000,
      "title": "process: fix red main_health, shorten Florida allowance post description",
      "pr": 11146,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: shorten Florida collection-allowance post description to 160 chars (main_health red)"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 45,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtLPyvqxJbNtgtNZdu1.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "f0964243c4d8cfa97ae0b41ac453e115babd792a",
      "at": 1793204089000,
      "title": "process: fix main_health red, siding post description over 160 chars",
      "pr": 11157,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: shorten siding post description to the 160-character limit (main_health red)",
        "prompts: run record"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 40,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKm6DxBqEXiSTUbutPJ.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "039a83a56a20efd85b2d63f9131073561efa6219",
      "at": 1793208740000,
      "title": "polish: style the native file button on 298 tool pages; fix placeholder-origin test",
      "pr": 11172,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "polish",
      "bullets": [
        "polish: style the native file button on 298 tool pages; reword posts that tripped the placeholder-origin guard",
        "polish: post wording matches the report"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 5,
      "lines_added": 52,
      "lines_removed": 3,
      "added_files": [
        "docs/posts/2026-10-28-choose-file-button-matches-the-form.md",
        "docs/reports/polish-2026-10-28-file-button.md"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "736c6a2bd7fa0f815a2303831264a9d47691974d",
      "at": 1793210629000,
      "title": "post: what the earned income credit is worth to a freelancer by profit, 2026",
      "pr": 11175,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": null,
      "bullets": [
        "post: freelancer EITC by profit level, 2026, from ai-bookkeeper's own output",
        "post: correct the EITC peak profit",
        "post: shorten EITC post description"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 1,
      "lines_added": 46,
      "lines_removed": 0,
      "added_files": [
        "docs/posts/2026-10-28-freelancer-earned-income-credit-by-profit-2026.md"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "6ece5b34986d84b803a3d68a42457ae010770a0a",
      "at": 1793214653000,
      "title": "process: fix red main_health (Nevada post description over 160 chars)",
      "pr": 11190,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "Shorten Nevada sales-tax post description to 160 chars (main_health red)"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 45,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtKgbHMMqi48yMVxn4t.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "00015b7d470288dc906a7f9f3ab69bcc07b087d5",
      "at": 1793218186000,
      "title": "ci: fail when two blog posts share a description; fix three duplicate pairs",
      "pr": 11201,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "explore",
      "bullets": [
        "ci: fail when two blog posts share a description; fix three duplicate pairs",
        "prompts: run record for explore description sweep"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 7,
      "lines_added": 97,
      "lines_removed": 4,
      "added_files": [
        "docs/posts/2026-10-28-three-pairs-of-blog-posts-shared-one-search-snippet.md",
        "prompts/runs/2026-10-28-session_01AcxTtGFGww7R9fPxnedqkZ.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "c5cc90e16cf4da06aaa17fc92164fb07da1021cd",
      "at": 1793226466000,
      "title": "docs: post on the median's breakdown at 8 of 16 attackers (lowcomm-training 5n)",
      "pr": 11214,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "research",
      "bullets": [
        "research/lowcomm-training: 5n plan (coordinated attack at k = 8, 9)",
        "research/lowcomm-training: 5n coordinated attack breaks the median at k = 8 of 16"
      ],
      "detail": null,
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 143,
      "lines_removed": 0,
      "added_files": [
        "docs/posts/2026-10-28-robust-aggregation-cliff-at-eight-of-sixteen.md",
        "prompts/runs/2026-10-28-session_01E5sJKnETaJRhUgTH36gQap.json"
      ],
      "revert": false,
      "fix_forward": false
    }
  ],
  "platform": [
    {
      "name": "ci",
      "merges": [
        {
          "sha": "5d2f976f2f3630ded82702a69e2a62574eef522e",
          "at": 1793146891000,
          "title": "redteam: platform/ci/check_code_refs.py 2026-10-28",
          "pr": 10998,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: fix three red baselines on main, guard check_code_refs main/tracked/tops",
            "redteam: run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 3,
          "lines_added": 292,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKnQfFAVcXL7PYr5pGJ.json"
          ],
          "revert": false,
          "fix_forward": true
        },
        {
          "sha": "13a9c0ba5d905842fb58c7094ac974e54b1c52eb",
          "at": 1793149759000,
          "title": "process: wait_for.py --until (critique of cloud wait friction)",
          "pr": 11005,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "process: wait_for.py --until waits on a condition for jobs that print no DONE line (pip install, jsonl)"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 4,
          "lines_added": 76,
          "lines_removed": 4,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLH4DEneuA4J71aUUK.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4c71a0cacfbfdb33bbb9294342131329af173d8d",
          "at": 1793156935000,
          "title": "redteam: check_md_links + post_rate 2026-10-28",
          "pr": 11027,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: check_md_links and post_rate guards 2026-10-28",
            "redteam record: PR number"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 3,
          "lines_added": 321,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLZYevYZui5Xe8GLgu.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "c1199793a3d38f89c6c6fb24452d497eb44855ad",
          "at": 1793161263000,
          "title": "redteam: platform CI/pages guards 2026-10-28",
          "pr": 11041,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: platform CI/pages guards 2026-10-28",
            "redteam: run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 3,
          "lines_added": 774,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKmxoFJc7cTn7r87WZK.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "27762e164fe5b8740721526bdb16a6ff1d335fb5",
          "at": 1793164239000,
          "title": "redteam: check_post_frontmatter 2026-10-28",
          "pr": 11048,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: check_post_frontmatter 2026-10-28, guard tag_key boundary",
            "posts: shorten e-invoicing description under 160 chars",
            "redteam: run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 257,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtJu94EJFPLvq4pBE96.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "855dda6c8fb1ebd9fe2d237e40fbc39c17f0f5f6",
          "at": 1793164890000,
          "title": "redteam: post_rate.py 2026-10-28",
          "pr": 11052,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: post_rate.py 2026-10-28 (8/8 caught, 2 real defects patched)",
            "redteam: record PR number"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 4,
          "lines_added": 208,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-red-team-post-rate-script.md",
            "prompts/runs/2026-10-28-session_01E5sJKkNg8KnRyyMfuhMo5P.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "52e1279182da44b831999cb5772718c75c564e9d",
          "at": 1793168015000,
          "title": "process: pyenv.py says when it waits on another install's lock",
          "pr": 11058,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "pyenv: say so when waiting on another install's lock"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 56,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtGVd9phSNT7mChWmf1.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8b66515e50744f9ab209f1f6a4dbaffe35a2a3e3",
          "at": 1793178586000,
          "title": "process: main_health prints per-check progress",
          "pr": 11086,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "main_health: print one line per check as it finishes"
          ],
          "detail": "A background wait on its output looked hung for ~3 min (process/prompt-2 friction).",
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 58,
          "lines_removed": 3,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtKBkC2kXb74RHpbtuM.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "64e9e8bdfcfac8f486f2c130f7281775f61484af",
          "at": 1793182245000,
          "title": "redteam: platform/ci 2026-10-28",
          "pr": 11097,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: platform/ci 2026-10-28, guard wait_for deadline and exit codes",
            "redteam: record PR number"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 567,
          "lines_removed": 1,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtJvShUNWFgMFBjsFuP.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "931b47e39860fdcd31b986c09e85a841cd31e3ad",
          "at": 1793191211000,
          "title": "Add llms.txt link checker (0 dead links in 16 files) and post",
          "pr": 11123,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "Add llms.txt link checker for venture llms.txt files"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 5,
          "lines_added": 163,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-every-link-in-our-llms-txt-files-resolves.md",
            "platform/ci/check_llms_txt_links.py",
            "platform/ci/test_check_llms_txt_links.py",
            "prompts/runs/2026-10-28-session_01E5sJKkc2opDzsf3YQJvtyQ.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "7011a3e8d3f4e18c4b935c2909d0f60c1690d862",
          "at": 1793197836000,
          "title": "redteam: check_social_proof 2026-10-28",
          "pr": 11139,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: check_social_proof 2026-10-28",
            "redteam: record PR number"
          ],
          "detail": "Guard the snippet start clamp (escaped mutant).",
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 169,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKnmfocumRzSW8t1u6K.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b400cb0dee0f8ab4096e448dc8c304e5222216e0",
          "at": 1793200572000,
          "title": "process: main_health prints DONE so wait_for.py works on it",
          "pr": 11147,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "main_health: print a DONE line so wait_for.py can wait on it"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 3,
          "lines_added": 48,
          "lines_removed": 2,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtJkFn9qbn4K9WiS8Ck.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "cf255c0480fdd4d53b4d597e848302d9ab4d10ab",
          "at": 1793200978000,
          "title": "ci: check the built Pages site for surviving example.invalid placeholders",
          "pr": 11149,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "ci: check the built Pages site for surviving example.invalid placeholders",
            "explore run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 5,
          "lines_added": 166,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-no-placeholder-host-survives-the-pages-build.md",
            "platform/ci/check_built_site.py",
            "platform/ci/test_check_built_site.py",
            "prompts/runs/2026-10-28-session_01AcxTtL6E6AzDXmZRrBJcFz.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "8aaddf1f895bea504ca0044684cc224290735ab4",
          "at": 1793201575000,
          "title": "process: main_health no longer reports check_built_site.py red without a built site",
          "pr": 11153,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "process: main_health skips check_built_site.py when no _site/ exists"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 2,
          "lines_added": 49,
          "lines_removed": 3,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKjckvyfn5o1eeq5PbT.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d996ce1002bf56e56654e95ca2a61c1544272454",
          "at": 1793210984000,
          "title": "process: pyenv.py installs torch from the CPU index",
          "pr": 11178,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "process: pyenv.py installs torch from the CPU index (25-35 min CUDA pulls)"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 6,
          "lines_added": 64,
          "lines_removed": 3,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtHma7XU7jw4z89MPB6.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "a1f8e93481132b24dc41cbf8e642949783bb38d4",
          "at": 1793218849000,
          "title": "ci: tax_year_staleness report, 11 products cite no 2026 figure",
          "pr": 11204,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "explore",
          "bullets": [
            "ci: tax_year_staleness report (11 of 1,330 products cite no 2026 figure) plus post and agent doc"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 5,
          "lines_added": 233,
          "lines_removed": 0,
          "added_files": [
            "docs/posts/2026-10-28-finding-tax-calculators-still-on-last-years-numbers.md",
            "docs/reports/tax-year-staleness-2026-10-28.md",
            "platform/ci/tax_year_staleness.py",
            "platform/ci/test_tax_year_staleness.py",
            "prompts/runs/2026-10-28-session_01E5sJKnTuD8Xh933EAqTejH.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "46b30e3ec5604d7c8f0e5d82cc1d843dfac08719",
          "at": 1793225315000,
          "title": "process: pyenv warns when torch CPU index is unreachable (doc friction)",
          "pr": 11220,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "process",
          "bullets": [
            "pyenv: warn when the torch CPU index is unreachable; fix research/CLAUDE.md claim"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "ci"
          },
          "files": 4,
          "lines_added": 80,
          "lines_removed": 3,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtGCy2dkWoUdXcx4A2A.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "pages",
      "merges": [
        {
          "sha": "d059afbeffa2e5cdc2ff048dc49ffb1a7061805a",
          "at": 1793179327000,
          "title": "redteam: platform/pages/surface-budget 2026-10-28",
          "pr": 11090,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: guard surface-budget CLI and override tightness",
            "redteam: run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 2,
          "lines_added": 651,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01E5sJKnz6uaeBY1NFF5U6QP.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "f521ecc0c6f1b0f271c6733b234f1b7f9c1d5dd3",
          "at": 1793179973000,
          "title": "polish: Saved bids band only on bid, quote and estimate tools (1,110 pages to 168)",
          "pr": 11091,
          "agent": "Claude",
          "models": [],
          "track": "polish",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 5,
          "lines_added": 106,
          "lines_removed": 2,
          "added_files": [
            "docs/posts/2026-10-28-why-a-401k-page-had-a-saved-bids-button.md",
            "docs/reports/polish-2026-10-28-saved-bids-band.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "d19a814b018f01db36181846410d9265dbb7edcf",
          "at": 1793182746000,
          "title": "polish: venture header spans the phone width instead of an inset white box",
          "pr": 11098,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: venture header spans the phone width instead of an inset white box"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 4,
          "lines_added": 77,
          "lines_removed": 1,
          "added_files": [
            "docs/reports/polish-2026-10-28-venture-header-phone.md",
            "prompts/runs/2026-10-28-session_01E5sJKkgGYt2MTAhWQcxcQr.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "9f1e9154f290193885acf16531a12df86e327ccb",
          "at": 1793185443000,
          "title": "polish: stories card titles no longer look visited; hero ticker double gap on phones",
          "pr": 11103,
          "agent": "Claude",
          "models": [],
          "track": "polish",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 3,
          "lines_added": 22,
          "lines_removed": 1,
          "added_files": [
            "docs/reports/polish-2026-10-28-stories-ticker.md"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "4208428ac505aabaab12c84e56475f3637ebcf89",
          "at": 1793198725000,
          "title": "polish: phone nav fade only while more to scroll",
          "pr": 11142,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: phone nav fade only while more to scroll"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 3,
          "lines_added": 74,
          "lines_removed": 2,
          "added_files": [
            "docs/reports/polish-2026-10-28-nav-fade.md",
            "prompts/runs/2026-10-28-session_01AcxTtKDyPxq9R9hXwcRBjX.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "bf5256acb72d73ed0eca0b82966d6b10623c1428",
          "at": 1793199987000,
          "title": "polish: generate llms.txt for every product that ships none",
          "pr": 11145,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: generate llms.txt for every product that ships none"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 4,
          "lines_added": 101,
          "lines_removed": 1,
          "added_files": [
            "docs/reports/polish-2026-10-28-product-llms-txt.md",
            "platform/pages/product-llms.test.mjs",
            "prompts/runs/2026-10-28-session_01EhTJVLM65eqrdNmzdBrmto.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "b2f1c028cf81d5964d26bb80a64774fc0eef93c9",
          "at": 1793208371000,
          "title": "polish: clip research page titles to a result-sized length, fail builds over 130 chars",
          "pr": 11169,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: clip research page titles to a result-sized length; build fails titles over 130 chars",
            "polish: run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 7,
          "lines_added": 204,
          "lines_removed": 5,
          "added_files": [
            "docs/posts/2026-10-28-research-page-titles-were-whole-questions.md",
            "docs/reports/polish-2026-10-28-research-titles.md",
            "prompts/runs/2026-10-28-session_01AcxTtKVou7sZ2qwtMyFREf.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "73852906a4fbc2f8200e8e4b7b85a066683efb1e",
          "at": 1793216452000,
          "title": "polish: add the site name to a page title only when it still fits a results page",
          "pr": 11196,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "polish",
          "bullets": [
            "polish: add the site name to a page title only when it still fits a results page",
            "polish: fix audience title test, add run record"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 8,
          "lines_added": 128,
          "lines_removed": 11,
          "added_files": [
            "docs/posts/2026-10-28-search-result-titles-stop-losing-their-first-words.md",
            "docs/reports/polish-2026-10-28-site-title-suffix.md",
            "prompts/runs/2026-10-28-session_01E5sJKjsDq1YuQNRedMugJX.json"
          ],
          "revert": false,
          "fix_forward": false
        },
        {
          "sha": "641f51917b669179e6ef63240d9f339d2cfdf113",
          "at": 1793217987000,
          "title": "polish: shorten /compare/<product>/ titles to fit a results page",
          "pr": 11199,
          "agent": "Claude",
          "models": [],
          "track": "polish",
          "bullets": [],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "pages"
          },
          "files": 4,
          "lines_added": 29,
          "lines_removed": 1,
          "added_files": [
            "docs/posts/2026-10-28-shorter-titles-on-comparison-pages.md",
            "docs/reports/polish-2026-10-28-compare-titles.md"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    },
    {
      "name": "llm",
      "merges": [
        {
          "sha": "8fc9349795a2b2c26f369f28a91bdaf763a19e12",
          "at": 1793207560000,
          "title": "redteam: platform/llm/byok.mjs 2026-10-28",
          "pr": 11167,
          "agent": "Claude Sonnet 5.5",
          "models": [
            "Claude Sonnet 5.5"
          ],
          "track": "redteam",
          "bullets": [
            "redteam: platform/llm/byok.mjs 2026-10-28",
            "redteam record: name PR"
          ],
          "detail": null,
          "area": {
            "kind": "platform",
            "name": "llm"
          },
          "files": 2,
          "lines_added": 177,
          "lines_removed": 0,
          "added_files": [
            "prompts/runs/2026-10-28-session_01AcxTtLtcsBRywvP99bDWd4.json"
          ],
          "revert": false,
          "fix_forward": false
        }
      ]
    }
  ],
  "ci": [
    {
      "sha": "1aa9d1b6abbf73461782db3b209fcff173baaae2",
      "at": 1793208135000,
      "title": "process: cap open-PR search output (keyword + perPage)",
      "pr": 11171,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: cap open-PR search output (keyword + perPage); minimal_output alone returned 199KB"
      ],
      "detail": null,
      "area": {
        "kind": "ci",
        "name": "CI and automation"
      },
      "files": 3,
      "lines_added": 54,
      "lines_removed": 2,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKo3rsjPqgsiCdUGSgS.json"
      ],
      "revert": false,
      "fix_forward": false
    }
  ],
  "process": [
    {
      "sha": "72c4ef7f8d8d2891c306b48b1280e435f78673f0",
      "at": 1793149218000,
      "title": "wall-framing-takeoff: bid-leveling card on the page",
      "pr": 11003,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "ventures",
      "bullets": [
        "wall-framing-takeoff: bid-leveling card on the page"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 1,
      "lines_added": 48,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01EhTJVNWeMBceTjmMv1xExZ.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "8f512016ed20671d97df4f98da89ca54dd862a96",
      "at": 1793149814000,
      "title": "process: wait_for.py --quiet mode for logs without a DONE line",
      "pr": 11006,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: wait_for.py --quiet mode for logs without a DONE line"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "research"
      },
      "files": 2,
      "lines_added": 122,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHBrbLuuYbtYyR4hLo.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "35ad3320f201c19d23c41545bfe7fd737f5e4468",
      "at": 1793154143000,
      "title": "prompts: review 2026-10-28",
      "pr": 11020,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 (reduced pass)",
        "prompts: record review run"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 8,
      "lines_added": 2249,
      "lines_removed": 7,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKnhggvGLhzW8WQvq7L.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "7ef6f4bc18dca2e3ed6387ea8e7ca50e8c6e87f2",
      "at": 1793157085000,
      "title": "process: fix red main_health (post description over 160 chars)",
      "pr": 11030,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: shorten age-65 post description to the 160-character limit (main_health red)",
        "prompts: run record for main_health fix"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 1,
      "lines_added": 44,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtLtVRtFoAu6Hrs9YcH.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "55e32bcf4215af5d11052d9201feefe58a9f46e2",
      "at": 1793162749000,
      "title": "Add agentic-trading-lab: trading research agent with overfitting gates and guarded execution",
      "pr": 11023,
      "agent": "Claude Opus 5.5",
      "models": [
        "Claude Opus 5.5"
      ],
      "track": "ventures",
      "bullets": [
        "Add agentic-trading-lab: research agent with overfitting gates and guarded execution",
        "Trim changepoint-detector flagship next: under the 2000-character cap",
        "Link agentic-trading-lab and crypto-cost-basis-calculator both ways",
        "Register agentic-trading-lab launch date",
        "Make agentic-trading-lab mirrorable and regenerate counts for the new venture",
        "Give the agentic-trading-lab page a tab icon (favicons.py --fix)"
      ],
      "detail": "New venture for rules-based trading on the user's own account.",
      "area": {
        "kind": "process",
        "name": "gitops"
      },
      "files": 111,
      "lines_added": 13613,
      "lines_removed": 41,
      "added_files": [
        ".github/workflows/agentic-trading-lab-ci.yml",
        "docs/posts/2026-10-28-the-trading-agent-that-refused-its-own-backtests.md",
        "prompts/runs/2026-10-28-session_01XpHqydXkEQqGNv6fWqWgdc.json",
        "ventures/agentic-trading-lab/.gitignore",
        "ventures/agentic-trading-lab/LEGAL.md",
        "ventures/agentic-trading-lab/LICENSE",
        "ventures/agentic-trading-lab/README.md",
        "ventures/agentic-trading-lab/VENTURE.yaml",
        "ventures/agentic-trading-lab/index.html",
        "ventures/agentic-trading-lab/llms.txt",
        "ventures/agentic-trading-lab/page.test.mjs",
        "ventures/agentic-trading-lab/pyproject.toml",
        "ventures/agentic-trading-lab/results/REPORT.md",
        "ventures/agentic-trading-lab/results/study.json",
        "ventures/agentic-trading-lab/robots.txt",
        "ventures/agentic-trading-lab/sitemap.xml",
        "ventures/agentic-trading-lab/src/tradelab/__init__.py",
        "ventures/agentic-trading-lab/src/tradelab/__main__.py",
        "ventures/agentic-trading-lab/src/tradelab/agent.py",
        "ventures/agentic-trading-lab/src/tradelab/backtest.py",
        "ventures/agentic-trading-lab/src/tradelab/cli.py",
        "ventures/agentic-trading-lab/src/tradelab/data.py",
        "ventures/agentic-trading-lab/src/tradelab/execution/__init__.py",
        "ventures/agentic-trading-lab/src/tradelab/execution/brokers.py",
        "ventures/agentic-trading-lab/src/tradelab/execution/planner.py",
        "ventures/agentic-trading-lab/src/tradelab/execution/safety.py",
        "ventures/agentic-trading-lab/src/tradelab/report.py",
        "ventures/agentic-trading-lab/src/tradelab/stats.py",
        "ventures/agentic-trading-lab/src/tradelab/strategies.py",
        "ventures/agentic-trading-lab/tests/test_core.py",
        "ventures/agentic-trading-lab/tests/test_execution.py",
        "ventures/agentic-trading-lab/usage.mjs",
        "ventures/agentic-trading-lab/usage.test.mjs"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "2bebf5cea36c645fd314703626b695c9fa2531d7",
      "at": 1793168582000,
      "title": "process: CLAUDE.md pyenv install only for tasks that run Python",
      "pr": 11063,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: CLAUDE.md says pyenv install is only for tasks that run Python"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "repository root"
      },
      "files": 2,
      "lines_added": 123,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKirtTz2sVBfvKRV3RY.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "dfb7542ae1141377516b956d3ee7a9860e383b47",
      "at": 1793171429000,
      "title": "process: main_health also runs promptctl validate; fix stated runtime",
      "pr": 11068,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: main_health also runs promptctl validate; fix its stated runtime"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 4,
      "lines_added": 55,
      "lines_removed": 8,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHApaoti9KUsZqXkJu.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "0c8d15ebef68110e286c2e01d5419c7f6e44b918",
      "at": 1793175008000,
      "title": "prompts: review 2026-10-28",
      "pr": 11077,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 (reduced pass)",
        "prompts: run record for review 2026-10-28",
        "prompts: fix run record errors field"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 5,
      "lines_added": 2612,
      "lines_removed": 89,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHcRhwHBHVnotsMuTs.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "fc11fdecfa167b6667c88f97b96ae0c5173f2f5e",
      "at": 1793175761000,
      "title": "process: pick_track skips milestones marked done or landed in a programme",
      "pr": 11081,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "research: pick_track skips milestones marked done or landed in a programme",
        "prompts: run record for process/2"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "research"
      },
      "files": 5,
      "lines_added": 84,
      "lines_removed": 5,
      "added_files": [
        "docs/posts/2026-10-28-research-picker-stale-milestone.md",
        "prompts/runs/2026-10-28-session_01E5sJKnzUEccbrigQnd6oPD.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "d6b0786419fd782d41439221fdc8ef49c720f70e",
      "at": 1793178744000,
      "title": "process: main_health prints each check as it finishes",
      "pr": 11087,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "main_health: print each check as it finishes"
      ],
      "detail": "A background wait loop on its output looked hung for ~3 min (process/2 friction report).",
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 1,
      "lines_added": 119,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtLyxq5rndJvBrJEfwx.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "900e7b0b14ea287bcf99d93451db661c7225da83",
      "at": 1793186520000,
      "title": "process: point long-check waits at wait_for.py",
      "pr": 11107,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process prompt: point long-check waits at wait_for.py"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 123,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtJrHAiP7dU3dtaiBtg.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "aae6a99c7c7636c669ed1c1544f6c337fc71ced6",
      "at": 1793186672000,
      "title": "redteam: platform/ci link checkers 2026-10-28 (14/14 caught)",
      "pr": 11108,
      "agent": "Claude",
      "models": [],
      "track": "redteam",
      "bullets": [],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 1,
      "lines_added": 266,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHmHkRh1BJWRhMhzA9.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "4cb4412793ee5082a2043b73183bf32333c60c2f",
      "at": 1793193699000,
      "title": "prompts: review 2026-10-28",
      "pr": 11129,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 (torch install line, derive refresh)",
        "prompts: review run record"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 5,
      "lines_added": 2100,
      "lines_removed": 2,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHQtv63uXNNisZtnXB.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "9caa25da8554767309bb160a708922e48cb957e5",
      "at": 1793197959000,
      "title": "process: fix red validate on main (run record with pr null)",
      "pr": 11140,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: set pr 11135 on a merged run record that left it null (validate red on main)",
        "process: fix record writeups"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 45,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKmftWVowqCwru8ZgcA.json"
      ],
      "revert": false,
      "fix_forward": true
    },
    {
      "sha": "895b246a1557f9eef679b21969bd1faaa1f87748",
      "at": 1793207683000,
      "title": "process: pkill/pgrep hook also refuses bracketed pattern when plain name is elsewhere in the command",
      "pr": 11168,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "hooks: refuse bracketed pkill/pgrep -f when the plain name is elsewhere in the command"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": ".claude"
      },
      "files": 4,
      "lines_added": 64,
      "lines_removed": 3,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtGWwmWVCZjhVJ5mENQ.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "464bf0db27a7b27a7daeb8a6e46d5cc732e9ceab",
      "at": 1793211278000,
      "title": "prompts: review 2026-10-28",
      "pr": 11181,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 torch install route, derive rebuild",
        "docs: shorten choose-file post description to 160 chars",
        "prompts: review run record"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 4,
      "lines_added": 1957,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtKj2PcekJZ2gxNzRb1.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "c6292a2e6b214cf031ea6c0038a890d739e135d9",
      "at": 1793211335000,
      "title": "prompts: review 2026-10-28",
      "pr": 11180,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 (redteam traps, derive refresh)",
        "docs: shorten post description to pass validate",
        "prompts: run record for review 2026-10-28"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 4,
      "lines_added": 181,
      "lines_removed": 2,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtJWfhhsE5EGh94BNDL.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "5ed1eb17fb53464f75007b89e2d1cf56a914cc98",
      "at": 1793211454000,
      "title": "polish: shorten a post description so the site builds again",
      "pr": 11182,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "polish",
      "bullets": [
        "polish: shorten a post description to 160 characters so the site builds again"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 1,
      "lines_added": 53,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKihVBBBiCsfBNfMoMU.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "05d983a6e31893bddb36fef1eaa3a70f212b11d8",
      "at": 1793211756000,
      "title": "process: polish prompt notes slow build and Playwright import",
      "pr": 11184,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: polish prompt notes the slow build and the Playwright import path"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 120,
      "lines_removed": 3,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKjTpRUXMHitGrPGtzH.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "8f3467f0a613c222b6da883a0bea48606b9415cd",
      "at": 1793218247000,
      "title": "process: measure runtime note (friction fix)",
      "pr": 11202,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process/2: note measure can take 3 min, run in background"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 49,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtJk76macVvkZEeJa3i.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "41bd694a1e1d450b4bc9b6a3beb13fb684b40b18",
      "at": 1793221280000,
      "title": "runs: fix malformed run record that turned promptctl validate red",
      "pr": 11207,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "runs: fix malformed 2026-10-28 run record that turned main_health red",
        "runs: record PR number"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 51,
      "lines_removed": 4,
      "added_files": [
        "prompts/runs/2026-10-28-session_01EhTJVMKvtuw4EQtifz5Z5y.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "2915c7dd5016a55288a794b66b92e8c4b94eb4c8",
      "at": 1793229021000,
      "title": "prompts: review 2026-10-28",
      "pr": 11233,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "review",
      "bullets": [
        "prompts: review 2026-10-28 (reduced pass): derived data, CLAUDE.md test-timeout wording, post front matter",
        "prompts: run record for review 2026-10-28"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 6,
      "lines_added": 2097,
      "lines_removed": 6,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtHoXwXJXE7tt13doys.json"
      ],
      "revert": false,
      "fix_forward": false
    },
    {
      "sha": "c5d5ed0cc1a5d4cd72fff2663474cc2e47e5f88e",
      "at": 1793229225000,
      "title": "process: push-time front-matter check for blog posts (hook)",
      "pr": 11234,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "hooks: check new posts' front matter before git push",
        "hooks: add the push-time post front-matter hook and its test"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": ".claude"
      },
      "files": 5,
      "lines_added": 131,
      "lines_removed": 1,
      "added_files": [
        ".claude/hooks/check_posts_before_push.py",
        ".claude/hooks/test_check_posts_before_push.py",
        "docs/posts/2026-10-28-a-push-hook-for-blog-post-front-matter.md",
        "prompts/runs/2026-10-28-session_01E5sJKn8nWntKYAiY2aHXSk.json"
      ],
      "revert": false,
      "fix_forward": false
    }
  ],
  "new_ventures": [
    "agentic-trading-lab"
  ],
  "new_research": [
    "heavy-hydraulics"
  ],
  "new_posts": [
    "2026-10-28-stopping-early-is-not-the-problem-the-estimator-is",
    "2026-10-28-when-an-s-corp-election-pays-for-itself",
    "2026-10-28-too-clean-to-be-bread",
    "2026-10-28-your-own-health-premiums-lower-your-estimated-tax",
    "2026-10-28-a-five-year-burst-is-not-two-level-shifts",
    "2026-10-28-a-valid-sequential-audit-with-a-coder-costs-more-than-no-coder",
    "2026-10-28-one-flipped-bit-in-training-rarely-matters",
    "2026-10-28-a-burst-is-not-two-steps",
    "2026-10-28-one-burst-or-two-changes",
    "2026-10-28-a-median-survives-six-of-sixteen-bad-workers-and-not-eight",
    "2026-10-28-estimated-tax-due-dates-holidays",
    "2026-10-28-level-the-bids-before-you-pick-the-low-one",
    "2026-10-28-does-the-burst-or-two-steps-note-work",
    "2026-10-28-children-lower-your-estimated-tax",
    "2026-10-28-qbi-deduction-stops-at-the-threshold",
    "2026-10-28-rare-category-audit-coder-still-dominated",
    "2026-10-28-the-3-8-percent-tax-freelancers-with-investments-forget",
    "2026-10-28-two-kids-take-4400-off-a-100000-estimate",
    "2026-10-29-a-65-year-old-freelancer-and-the-senior-deduction",
    "2026-10-28-planing-hull-vs-displacement-survey-boat-range",
    "2026-10-28-verified-dse-rank-on-area-alone",
    "2026-10-28-does-a-swath-boat-beat-a-monohull-on-energy",
    "2026-10-28-auto-notified-mail-is-not-a-reply",
    "2026-10-28-receipt-dates-ocr-cannot-read",
    "2026-10-28-age-65-senior-deduction-in-the-estimate",
    "2026-10-28-earned-income-credit-in-the-estimate",
    "2026-10-28-deck-solar-makes-a-5-m-survey-boat-self-sustaining-a-4-m-boat-only-doubles-range",
    "2026-10-28-an-8-kg-froude-model-of-a-cargo-uav-needs-its-cg-within-6-mm",
    "2026-10-28-aerolog-scaling-paper-draft",
    "2026-10-28-five-percent-for-looking-good",
    "2026-10-28-a-real-invoice-pdf-our-checker-could-not-open",
    "2026-10-28-why-a-better-cut-cannot-close-this-scheduling-gap",
    "2026-10-28-missouri-sales-tax-due-dates",
    "2026-10-28-uk-cgt-calculator-was-a-tax-year-behind",
    "2026-10-28-the-gap-in-the-nets",
    "2026-10-28-thirty-seconds-and-thirty-minutes",
    "2026-10-28-how-often-does-a-silent-bit-flip-ruin-a-training-run",
    "2026-10-28-the-trading-agent-that-refused-its-own-backtests",
    "2026-10-28-france-e-invoicing-started-hub-was-stale",
    "2026-10-28-cash-basis-profit-from-invoices-and-bills",
    "2026-10-28-the-earned-income-credit-now-ships-with-the-irs-numbers",
    "2026-10-28-neuralfoil-vs-measured-low-reynolds-lift-slope",
    "2026-10-28-cash-basis-profit-on-the-page",
    "2026-10-28-how-many-risers-and-how-long-a-stairwell",
    "2026-10-28-agents-can-now-ask-ai-bookkeeper-for-cash-basis-profit",
    "2026-10-28-red-team-post-rate-script",
    "2026-10-28-ambrose-and-the-bees-in-the-cradle",
    "2026-10-28-testing-a-cash-basis-profit-and-loss-in-a-real-browser",
    "2026-10-28-red-team-the-hoh-qbi-threshold-had-no-test",
    "2026-10-28-a-generic-word-should-not-pay-an-invoice",
    "2026-10-28-138-twin-projects-no-real-rho",
    "2026-10-28-stairs-over-147-inches-need-a-landing",
    "2026-10-28-the-airfoil-surrogate-reads-high-at-drone-reynolds-numbers",
    "2026-10-28-means-hide-the-worst-chip-design-in-multi-fidelity-search",
    "2026-10-28-does-solar-panel-weight-ruin-a-small-survey-boats-solar-gain",
    "2026-10-28-stair-stringers-in-your-browser",
    "2026-10-28-the-lid-stays-down",
    "2026-10-28-2026-earned-income-credit-built-in",
    "2026-10-28-the-window-closes-at-eleven-a-measles-story",
    "2026-10-28-seeding-a-complex-contagion",
    "2026-10-28-a-sub-scale-tail-that-only-works-if-the-surrogate-is-right",
    "2026-10-28-how-wide-must-a-winder-stair-turn-be",
    "2026-10-28-how-many-balusters-a-stair-guard-needs",
    "2026-10-28-a-proof-that-only-half-applied-to-our-chip-search-pilot",
    "2026-10-28-guarding-the-open-edge-of-a-stair-landing",
    "2026-10-28-research-picker-stale-milestone",
    "2026-10-28-what-a-load-sensing-pump-saves-on-an-excavator",
    "2026-10-28-where-a-silent-bit-flip-lands-matters-less-than-which-bit",
    "2026-10-28-rahab-and-the-scarlet-cord-a-bedtime-story-from-joshua",
    "2026-10-28-does-the-excavator-circuit-ranking-depend-on-one-cycle",
    "2026-10-28-why-a-401k-page-had-a-saved-bids-button",
    "2026-10-28-how-many-pails-of-joint-compound-for-a-house",
    "2026-10-28-how-many-of-16-workers-can-a-median-lose",
    "2026-10-28-seasonal-income-and-the-quarterly-estimate-trap",
    "2026-10-28-lumpy-income-estimated-tax-button",
    "2026-10-28-research-claim-check-reached-the-live-prompt",
    "2026-10-28-does-fp16-make-silent-bit-flips-in-weights-safer",
    "2026-10-28-einvoice-preflight-vietnam",
    "2026-10-28-patrick-and-the-hundred-prayers",
    "2026-10-28-narrower-drift-window-changepoint",
    "2026-10-28-testing-the-annualized-installment-worksheet-on-150-random-years",
    "2026-10-28-checking-schedule-ai-factors-without-the-form",
    "2026-10-28-a-coordinated-attack-breaks-a-median-at-half-the-workers",
    "2026-10-28-a-sales-tax-discount-cap-that-scales-with-the-filing-period",
    "2026-10-28-elisha-and-the-chariots-of-fire-a-bedtime-story-from-second-kings",
    "2026-10-28-a-magnitude-check-catches-every-harmful-bit-flip",
    "2026-10-28-texas-sales-tax-discount-two-answers",
    "2026-10-28-the-last-timing-point-a-story-about-a-number-that-went-up",
    "2026-10-28-sales-tax-discount-lost-if-you-pay-late",
    "2026-10-28-paid-on-the-due-date-keeps-the-sales-tax-discount",
    "2026-10-28-every-link-in-our-llms-txt-files-resolves",
    "2026-10-28-a-staircase-from-a-growth-curve",
    "2026-10-28-measured-pump-curve-shrinks-load-sensing-saving",
    "2026-10-28-the-first-draw-thirty-seconds-of-flushing-can-be-the-wrong-advice",
    "2026-10-28-eight-to-a-well-a-story-about-pooled-testing",
    "2026-10-28-seven-tables-a-screen-reader-could-not-read",
    "2026-10-28-ten-and-a-half-seconds-an-earthquake-warning-story",
    "2026-10-28-load-sensing-saves-less-when-the-cycle-is-low-pressure",
    "2026-10-28-zacchaeus-and-the-sycamore-bedtime-story",
    "2026-10-28-dc-annual-sales-tax-return-due-october-20",
    "2026-10-28-hawaii-semiannual-get-return-dates",
    "2026-10-28-five-states-with-no-sales-tax-return-to-build",
    "2026-10-28-a-real-llm-coder-barely-shrinks-a-rare-category-audit",
    "2026-10-28-naming-the-fields-on-a-free-e-invoice-builder",
    "2026-10-28-florida-sales-tax-collection-allowance-in-a-bookkeeping-worksheet",
    "2026-10-28-luxembourg-b2b-e-invoicing-bill-8815-status",
    "2026-10-28-a-mistyped-sales-tax-discount-no-longer-prints-nan",
    "2026-10-28-no-placeholder-host-survives-the-pages-build",
    "2026-10-28-a-sales-tax-worksheet-that-stops-printing-nan-dates",
    "2026-10-28-forty-eight-degrees-a-hot-water-story",
    "2026-10-28-sales-tax-return-worksheet-now-in-the-browser",
    "2026-10-28-counting-siding-course-by-course",
    "2026-10-28-mary-and-elizabeth-bedtime-story",
    "2026-10-28-siding-takeoff-on-the-page",
    "2026-10-28-pooled-ppi-weight-rare-category-audit",
    "2026-10-28-point-two-a-carbon-monoxide-story",
    "2026-10-28-does-a-common-broadcast-homogenise-culture-or-fragment-it",
    "2026-10-28-soffit-fascia-and-j-channel-from-the-roof-you-already-drew",
    "2026-10-28-sales-agent-reads-gmail-and-microsoft-mail-without-a-password",
    "2026-10-28-can-a-solar-survey-boat-run-all-year",
    "2026-10-28-soffit-fascia-and-j-channel-on-the-framing-page",
    "2026-10-28-a-weight-bound-catches-bit-flips-but-not-a-cheater",
    "2026-10-28-research-page-titles-were-whole-questions",
    "2026-10-28-choose-file-button-matches-the-form",
    "2026-10-28-a-scale-model-feels-the-same-gust-but-pitches-harder",
    "2026-10-28-freelancer-earned-income-credit-by-profit-2026",
    "2026-10-28-how-many-gutter-sections-and-downspouts-for-a-house",
    "2026-10-28-south-carolina-sales-tax-due-dates-read-from-the-state",
    "2026-10-28-a-tail-that-fixes-the-modes-fixes-the-gust-response-too",
    "2026-10-28-nevada-sales-tax-is-now-due-the-20th",
    "2026-10-28-iowa-sales-tax-has-two-calendars",
    "2026-10-28-does-a-solar-boat-survive-a-dull-week",
    "2026-10-28-gutters-and-downspouts-now-on-the-framing-takeoff-page",
    "2026-10-28-slowing-down-does-not-save-a-solar-boat",
    "2026-10-28-the-second-echo-a-church-acoustics-story",
    "2026-10-28-search-result-titles-stop-losing-their-first-words",
    "2026-10-28-georgia-vendors-compensation-is-two-rates-not-one",
    "2026-10-28-shorter-titles-on-comparison-pages",
    "2026-10-28-a-solar-survey-boat-should-speed-up-when-full",
    "2026-10-28-three-pairs-of-blog-posts-shared-one-search-snippet",
    "2026-10-28-coordinated-attackers-vs-the-median",
    "2026-10-28-bookkeeping-keywords-for-trucking-salons-and-clinics",
    "2026-10-28-finding-tax-calculators-still-on-last-years-numbers",
    "2026-10-28-philip-neri-and-the-happy-walk-bedtime-story",
    "2026-10-28-log-option-for-growing-series",
    "2026-10-28-pasting-a-paypal-export-into-the-wrong-box",
    "2026-10-28-the-changepoint-page-can-now-take-logs-first",
    "2026-10-28-what-a-bookkeeping-keyword-list-misses-for-restaurants-and-mechanics",
    "2026-10-28-the-funeral-soup-a-cooling-story",
    "2026-10-28-load-sensing-margin-excavator-breakeven",
    "2026-10-28-sales-agent-docker-image-crashed-at-start",
    "2026-10-28-tax-deadlines-into-your-calendar",
    "2026-10-28-reading-real-cad-door-symbols",
    "2026-10-28-a-wilson-interval-for-llm-coded-audits-of-rare-emotions",
    "2026-10-28-checking-a-playoff-race-against-every-outcome",
    "2026-10-28-the-median-wall-at-eight-of-sixteen",
    "2026-10-28-bookkeeper-keywords-contractors-nonprofits-caterers",
    "2026-10-28-cleopas-and-the-road-to-emmaus-bedtime-story",
    "2026-10-28-robust-aggregation-cliff-at-eight-of-sixteen",
    "2026-10-28-state-income-tax-in-the-self-employed-estimate",
    "2026-10-28-when-a-seasonal-warning-cries-wolf-on-real-data",
    "2026-10-28-median-breakdown-at-half-the-workers-first-paper-section",
    "2026-10-28-a-dead-mans-condition-and-a-licence-for-automated-cars",
    "2026-10-28-a-push-hook-for-blog-post-front-matter",
    "2026-10-28-per-tensor-bound-silent-bit-flips",
    "2026-10-28-the-second-reader-a-for-other-minds-story-about-checkers-that-share-eyes",
    "2026-10-28-cyril-and-methodius-bedtime-story",
    "2026-10-28-tax-calendar-planned-payments-and-an-ics-escaping-bug"
  ],
  "reverts": [],
  "fix_forwards": [
    {
      "sha": "5d2f976f2f3630ded82702a69e2a62574eef522e",
      "at": 1793146891000,
      "title": "redteam: platform/ci/check_code_refs.py 2026-10-28",
      "pr": 10998,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "redteam",
      "bullets": [
        "redteam: fix three red baselines on main, guard check_code_refs main/tracked/tops",
        "redteam: run record"
      ],
      "detail": null,
      "area": {
        "kind": "platform",
        "name": "ci"
      },
      "files": 3,
      "lines_added": 292,
      "lines_removed": 0,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKnQfFAVcXL7PYr5pGJ.json"
      ],
      "revert": false,
      "fix_forward": true
    },
    {
      "sha": "090989d6a7e061deb59817569e22c621095f95f0",
      "at": 1793157005000,
      "title": "process: fix red check_post_frontmatter on main (age-65 post description)",
      "pr": 11029,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "docs: shorten age-65 post description to pass check_post_frontmatter",
        "prompts: run record for process/1 session"
      ],
      "detail": "main_health found the only red check on main: description was 179 chars (limit 160).",
      "area": {
        "kind": "writing",
        "name": "posts"
      },
      "files": 2,
      "lines_added": 47,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01AcxTtGTg4j22aWQa8y4wyV.json"
      ],
      "revert": false,
      "fix_forward": true
    },
    {
      "sha": "9caa25da8554767309bb160a708922e48cb957e5",
      "at": 1793197959000,
      "title": "process: fix red validate on main (run record with pr null)",
      "pr": 11140,
      "agent": "Claude Sonnet 5.5",
      "models": [
        "Claude Sonnet 5.5"
      ],
      "track": "process",
      "bullets": [
        "process: set pr 11135 on a merged run record that left it null (validate red on main)",
        "process: fix record writeups"
      ],
      "detail": null,
      "area": {
        "kind": "process",
        "name": "prompts"
      },
      "files": 2,
      "lines_added": 45,
      "lines_removed": 1,
      "added_files": [
        "prompts/runs/2026-10-28-session_01E5sJKmftWVowqCwru8ZgcA.json"
      ],
      "revert": false,
      "fix_forward": true
    }
  ],
  "biggest": {
    "sha": "78151b60a07db0384c1efb2da34c5e50e82ba1f9",
    "at": 1793196811000,
    "title": "research/llm-coding-inference: milestone 6ab, real LLM coder on GoEmotions rare categories",
    "pr": 11137,
    "agent": "Claude Sonnet 5.5",
    "models": [
      "Claude Sonnet 5.5"
    ],
    "track": "research",
    "bullets": [
      "research/llm-coding-inference: milestone 6ab plan, LLM coder for GoEmotions (in progress)",
      "research/llm-coding-inference: partial LLM score cache (resumable)",
      "research/llm-coding-inference: complete GoEmotions LLM score caches",
      "research/llm-coding-inference: milestone 6ab, real LLM coder on GoEmotions rare categories",
      "post: shorten description"
    ],
    "detail": null,
    "area": {
      "kind": "research",
      "name": "llm-coding-inference"
    },
    "files": 9,
    "lines_added": 13674,
    "lines_removed": 0,
    "added_files": [
      "docs/posts/2026-10-28-a-real-llm-coder-barely-shrinks-a-rare-category-audit.md",
      "docs/reports/llm-coding-inference-milestone-6ab.md",
      "prompts/runs/2026-10-28-session_01AcxTtLLkD8JXHsywG6qHVU.json",
      "research/llm-coding-inference/experiments/gollm_fear_Qwen2.5-1.5B-Instruct.tsv",
      "research/llm-coding-inference/experiments/gollm_sadness_Qwen2.5-1.5B-Instruct.tsv",
      "research/llm-coding-inference/experiments/h6ab_llm_goemotions.py",
      "research/llm-coding-inference/experiments/h6ab_llm_goemotions.txt",
      "research/llm-coding-inference/experiments/llm_code_goemotions.py"
    ],
    "revert": false,
    "fix_forward": false
  },
  "runs": {
    "runs": 214,
    "by_track": [
      [
        "ventures",
        59
      ],
      [
        "research",
        57
      ],
      [
        "process",
        29
      ],
      [
        "creative",
        23
      ],
      [
        "redteam",
        21
      ],
      [
        "explore",
        12
      ],
      [
        "polish",
        7
      ],
      [
        "review",
        6
      ]
    ],
    "by_outcome": [
      [
        "success",
        186
      ],
      [
        "partial",
        27
      ],
      [
        "failed",
        1
      ]
    ],
    "by_model": [
      [
        "claude-sonnet-5-5",
        198
      ],
      [
        "unrecorded",
        16
      ]
    ],
    "measured": 73,
    "api_usd": 50.63,
    "active_minutes": 734,
    "errors": [
      "First push and record command exceeded the 120s tool timeout and ran in the background; re-pushed.",
      "A curl with a browser User-Agent to the journal host was denied by the permission classifier; used WebFetch instead.",
      "run_solar_sites.py KeyError: load dict keyed by length only; fixed before results",
      "pip install torch run in background logged nothing and did not persist at first; reinstalled (about 3 min)",
      "pkill/pgrep -f patterns matched my own bash command line and killed the shell three times (exit 144)",
      "F=10 runs at L=50/100 too slow in pure Python; dropped",
      "background job killed at 30 min default limit; resumed from cache",
      "scripts importing rare_audit parse sys.argv at import",
      "rae.agriculturejournals.cz and kubota.com.au did not resolve; the measured cycle (milestone 2) could not be sourced",
      "main failed to build: post description 177 chars > 160 limit",
      "Crossref and other DOI hosts returned 403 through the proxy, so cite_check.py could not run"
    ],
    "friction": [
      {
        "file": "research/CLAUDE.md",
        "n": 28,
        "issue": "claimed torch CPU install ~2 min unconditionally; fixed and pyenv now warns."
      },
      {
        "file": "portfolio/flagships.yaml",
        "n": 14,
        "issue": "ai-bookkeeper next: is a very long list; finding a tractable slice took several probes"
      },
      {
        "file": "prompts/process/prompt-1.md",
        "n": 12,
        "issue": "only owner rows open again; critique mode chosen from friction table."
      },
      {
        "file": "CLAUDE.md",
        "n": 9,
        "issue": "pkill/pgrep bracket advice fails when the plain name is elsewhere in the command line; hook and cloud-session.md now say so. Also my own heredoc mentioning the command was blocked by the hook (heredoc exemption does not cover lines starting with it)."
      },
      {
        "file": "research/PROGRAMMES.md",
        "n": 6,
        "issue": "pick_track.py drew a capture-* track while the sub-prompt says advance a programme; I chose lowcomm-training by judgment."
      },
      {
        "file": "prompts/process/prompt-2.md",
        "n": 4,
        "issue": "Only owner rows and blocked P056 open; fix came from the friction table again."
      },
      {
        "file": "prompt.md",
        "n": 3,
        "issue": "Nothing wrong; pick_track drew llm-coding-inference and its LOG 'Next' gave a clear milestone."
      },
      {
        "file": "prompts/review/prompt-1.md",
        "n": 3,
        "issue": "router named review/1 as champion but experiments show review candidate 2 exists; fine, but derive+measure took ~6 min total"
      },
      {
        "file": "research/PROJECTS.md",
        "n": 3,
        "issue": "pick_track draw sent two overlapping sessions to the same programme milestone within hours; the claim check (open PRs/branches) came too late because the other PR was opened after my run started 40 min of training."
      },
      {
        "file": "prompts/polish/prompt-0.md",
        "n": 3,
        "issue": "Playwright is not importable as 'playwright' from the repo; needs /opt/node-tools/node_modules/playwright/index.js via default import (CJS). Not documented there."
      },
      {
        "file": "prompts/explore/prompt-0.md",
        "n": 3,
        "issue": "Sweep list does not cover mixed-content/third-party hosts or placeholder hosts in the built site; first checker draft flagged localhost with 90 false hits."
      },
      {
        "file": "prompts/creative/prompt-0.md",
        "n": 3,
        "issue": "Says Hearth & Horizon has no BIBLE.md, but it exists (merged earlier today)."
      },
      {
        "file": "prompts/review/prompt-2.md",
        "n": 2,
        "issue": "validate failed on another run's post (missing description/tags); fixed as the prompt says"
      },
      {
        "file": "prompts/promptctl.py",
        "n": 2,
        "issue": "Friction table lists already-fixed reports (pkill bracket advice) as live."
      },
      {
        "file": "prompts/research/prompt-0.md",
        "n": 2,
        "issue": "none significant; UIUC host still unreachable, noted in LOG"
      },
      {
        "file": "research/aerolog-scaling/LOG.md",
        "n": 2,
        "issue": "Next step (NACA 0012/0015 UIUC data) needs m-selig.ae.illinois.edu, which the egress proxy refuses this session; pyenv install of aerosandbox/neuralfoil took ~330 s."
      },
      {
        "file": "platform/ci/check_post_frontmatter.py",
        "n": 1,
        "issue": "Reports another post (state-income-tax-in-the-self-employed-estimate) missing description/tags on main; not mine, left alone."
      },
      {
        "file": "ventures/hearth-and-horizon/BIBLE.md",
        "n": 1,
        "issue": "Next up list mixes Done items inline with open ones, so finding open items needed a grep."
      },
      {
        "file": ".github/prompts/land-your-work.md",
        "n": 1,
        "issue": "git push --force-with-lease on a not-yet-existing remote branch failed with 'stale info'; a plain push worked."
      },
      {
        "file": "ventures/saints-by-candlelight/PRODUCTION.md",
        "n": 1,
        "issue": "Next-up list is all Done; no unclaimed ideas, so I grepped for duplicates by hand."
      },
      {
        "file": "platform/ci/wait_for.py",
        "n": 1,
        "issue": "needs a DONE line but main_health.py, which the process prompt tells you to background, never printed one; fixed"
      },
      {
        "file": "research/marine-hull/README.md",
        "n": 1,
        "issue": "said pytest tests -q works; bare python3 lacks pytest and pyenv.py printed the same interpreter, so tests ran only after pyenv resolved it"
      },
      {
        "file": "research/civ-levers/pyproject.toml",
        "n": 1,
        "issue": "pytest needs PYTHONPATH=src; package not installed, no conftest"
      },
      {
        "file": "research/heavy-hydraulics/LOG.md",
        "n": 1,
        "issue": "milestone 2 needs hosts outside the session allow-list; no note on which hosts to request"
      },
      {
        "file": "platform/ci/research_idea_dupe.py",
        "n": 1,
        "issue": "Command fails when run from research/ as a relative path; works only from repo root (my cwd had drifted)."
      },
      {
        "file": ".github/prompts/duplicate-work.md",
        "n": 1,
        "issue": "search_pull_requests with minimal_output but no keyword returned 199KB; added keyword + perPage advice (fixed in this PR)"
      },
      {
        "file": "platform/pages/contrast.mjs",
        "n": 1,
        "issue": "needs PLAYWRIGHT and AXE env set in this sandbox and the full sweep outlasts the tool window; slug arguments filter it (noted in the report)"
      }
    ],
    "notes": [
      "Critique mode; no backlog ids touched. Ran pyenv tests (20 ok); main_health still running at commit time (23/26 ok). validate not rerun.",
      "Small slice: Illinois due dates and discount read from ST-1 instructions PDF, pinned in a test (33 salestaxreturn tests pass locally). No venture-preflight run (no new venture).",
      "Explore idea: cross-post duplicate description sweep (not in the already-swept list). 3 pairs found and fixed; CI check added.",
      "Flagship 2 slice: stair landings. CI not awaited; scheduled run.",
      "Project hearth-and-horizon; piece the-condition-in-the-trust. Caught and fixed a timeline error (settlor died before granddaughter born) in adversarial re-read. node --test 11/11.",
      "page/siding/usage/budget node tests 54 pass; example house checked in Playwright over http (file:// blocks modules). Full CI not run locally.",
      "Replay of R2-area-only on 12 held-out designs; predictions 1 and 3 held, 2 refuted. Homepage build and md link check ok; CI not awaited locally.",
      "Backlog had no workable agent item (P056 blocked). Critique mode: main_health.py found check_post_frontmatter red (179-char description); shortened. Backlog ids touched: none. Small deliverable, hence partial.",
      "Explore: stale-tax-year sweep of calc.mjs (21 of 991 mention 2025 only); added 2026/27 to UK CGT calculator after checking GOV.UK. Local node tests 18/18; CI not awaited.",
      "node --test salestaxreturn.test.mjs: 35 pass. Texas figures from search results quoting comptroller.texas.gov; venture-preflight and full CI not run locally.",
      "Critique mode; no backlog id touched. pyenv.py now logs when waiting on lock. validate ok, test_pyenv 18 passed.",
      "Critique mode; backlog only owner rows and blocked P056. main_health 26/26 pass. No backlog ids touched.",
      "Probe tuned on itself; 4 own expectations corrected. 1742 venture tests pass locally. venture-preflight and CI not run locally.",
      "Milestone 40: bit-flip injection in 500 training runs; prediction 3 refuted narrowly. LaTeX not compiled (no pdflatex). Homepage build ok, md links ok.",
      "Milestone 8d: NeuralFoil vs UIUC NACA 2414/2415. Predictions (1) refuted, (2),(3) held. check_numbers, homepage build and md-link check pass.",
      "Local tests: estimatedtax 31 pass, page 22 pass. Did not run venture-preflight or CI wait.",
      "5j: coalition of k flipping workers at M=16; k=8 diverged, H5j-i and iii refuted. Build ok.",
      "No agent-owned backlog item open; critique mode. No backlog ids touched. No blog post: small tooling fix.",
      "Critique mode. Built wait_for --quiet, but a parallel run landed --until for the same friction first; took theirs on conflict, kept only the research/CLAUDE.md pointer. No post: change reduced to a doc line.",
      "Critique mode (backlog had only owner/blocked rows). main_health.py found check_post_frontmatter red (174-char description from #11043); shortened to 159. No backlog ids touched.",
      "Reduced review pass (scheduled): steps 1,3,7,8 plus one step-5 fix. No audit or drift report. Candidates unchanged: keep collecting.",
      "4 runs, seed 0 only, k=3..6; one seed, no interval. pytest not installed so tests not run; build.py and check_md_links ok.",
      "Advanced aerolog-scaling: UIUC NACA 0009 lift-slope check against NeuralFoil; predictions 1 refuted. Local checks: build.py ok, check_numbers ok, check_md_links ok. No CI wait: merging per standing rule after local checks.",
      "Catch rate 14/14 before and after; no real defects found in check_md_links.py.",
      "Critique mode (only owner rows and blocked P056 open). pyenv.py torch CPU index + test; fixed main_health red post description (choose-file-button). No new post: tooling-only run.",
      "hearth-and-horizon, slug the-first-draw (H&H shelf, ~4,900 words). generate.mjs + node --test 11/11 pass locally; no CI wait.",
      "Reduced review pass; no blog post (review log in experiments.md E107).",
      "Project hearth-and-horizon (Little Lamps); slug patrick-and-the-hundred-prayers. Sourced to Confessio.",
      "Small flagship slice: Utah monthly sales-tax due date (last day of next month) read from tax.utah.gov/sales/due-dates and pinned with a test; flagships.yaml next: updated. Local check: node --test salestaxreturn.test.mjs, 48 pass. Most other state tax sites returned 403/404/redirects through the proxy.",
      "Milestone 43: bit flips by stored format. All four pre-registered predictions held. CI not waited on; ran research/_homepage/build.py (ok) only.",
      "6z: stratified betting CS valid (99-100%) but 3-14x oracle n; research build.py ok, programme_check ok.",
      "Ventures track, flagship 1 ai-bookkeeper: stricter party-name part-payment match. 1708 venture tests pass locally. Did not rewrite flagships next: (small slice); no agent doc.",
      "Milestone 46: per-tensor vs global bound; prediction 3 refuted; honest growth control added.",
      "Target ventures/breakeven-roas-calculator/calc.mjs, 8 mutants, 2 escaped (num regex guard, cpa n>0), both gaps now caught. No blog post: small guard-only run.",
      "Saints by Candlelight episode 50, slug mary-and-elizabeth-in-the-hill-country-of-judah, text only (audio 423 MB, over cap). Picked Saints because H&H had five recent pieces. First idea (Hilda/Caedmon) was already episode 8.",
      "6ad: 500 draws, predictions (1) and half of (3) refuted and logged. Homepage build ok, md links ok. Skipped CI wait locally verified only; no separate agent doc.",
      "Milestone 5h. First bound was wrong (below simulated policies); corrected and disclosed. Surge policy is exploratory. Milestone 3 still blocked on tank data. Homepage build ok, programme_check ok.",
      "No new post: process-only review; reduced pass. Post description fix was another run's validate failure.",
      "Flagship 1 item 9: built-in 2026 EITC from Rev. Proc. 2025-32; estimatedtax tests 38/38 locally. venture-preflight not run (no new page).",
      "Only owner rows and blocked P056 open; main_health 26/26 green; critique found stale friction, one-line doc fix. No blog post: tiny doc change.",
      "Backlog had only owner rows and blocked P056; critique mode via friction table. No blog post: tiny tooling fix.",
      "Critique mode; backlog had no agent-owned open item (P056 blocked). main_health 24/24 ok. No backlog ids touched.",
      "Target platform/ci/check_post_frontmatter.py: 8 mutants, 7 caught (87.5%), 1 escaped (tag_key length boundary), guarded after fix (100%). Hunt found no real defects.",
      "4 campaigns x 8 mutants on check_input_bounds, wait_for, post_rate, pin_actions. All 4 escapes were in wait_for.py (deadline boundary, main exit codes); added 2 tests. pr number pending.",
      "marine-hull milestone 5e: NASA POWER reachable this session; 48 tests pass; build.py ok; link checks ok.",
      "Milestone 2d. Measured pressure trace for H4 still unobtained (blocked hosts). Local checks: homepage build ok, md links ok; CI checked after PR.",
      "Flagship 1 (ai-bookkeeper) already saturated by same-day runs; took flagship 2 open item: gutters page card. Ran node tests (76 pass) and headless Chromium check. Full venture-preflight not run (adds only a card to an existing page).",
      "node --test salestaxreturn.test.mjs: 44 pass. Small verification slice; CI not awaited locally beyond that.",
      "No agent-owned backlog item workable; Critique mode. main_health 24/24 green on main. Backlog ids touched: none.",
      "Phone nav fade mask now animates to 0 at scroll end (scroll-driven CSS). site-nav tests 13/13, check.mjs passes. build.test.mjs placeholder-origin test fails on main content (pre-existing, unrelated).",
      "marine-hull milestone 5b SWATH rung; 34 tests pass, homepage build ok, md links ok.",
      "Milestone 5k lowcomm-training: k=7 x3 seeds + k=5 x1 trained; both hypotheses supported. Ran research homepage build and md link check locally; CI not awaited. Duplicate of #11088 found at merge time.",
      "marine-hull milestone 5f: daily NASA POWER insolation vs monthly-mean solar neutrality. Homepage build ok, md links ok. The experiment script has no new unit tests.",
      "Scanned 3,439 built pages; clipped research <title>s (910 pages), added MAX_TITLE_LENGTH check. Local check.mjs shows 3 unrelated writing/ problems.",
      "Project: hearth-and-horizon; piece slug enough-to-be-bread (text only).",
      "creative track; hearth-and-horizon; slug the-funeral-soup; text only (audio 423 MB over cap). Local checks: node generate.mjs, node --test stories.test.mjs 9/9.",
      "Critique mode via main_health; fixed a red post description. No backlog ids touched. No blog post: one-line fix.",
      "Reduced review pass. No blog post: process-only run; the E105 entry in prompts/experiments.md carries the write-up.",
      "Flagship 1 slice: built-in 2025 EITC checked against irs.gov table; estimatedtax and page tests 59/59 locally.",
      "marine-hull planing rung; prediction was held mentally and disclosed as such in LOG.md; Savitsky constants recalled, not re-fetched; CI not awaited beyond local build.py, check_md_links, 34 tests.",
      "Local: node eval/excursions.mjs run, great-discoveries.test.mjs passes. No agent doc written (nothing the next run needs beyond README).",
      "Small slice: Missouri due dates read from dor.mo.gov FAQ, pinned in test (32 pass). Preset needed no change. Other state pages unreachable. No venture-preflight run (no new venture; test-only change).",
      "Idea: verify the built Pages site has no surviving example.invalid placeholder (check_built_site.py, wired into pages.yml). Also swept http:// resources and third-party hosts: clean.",
      "Small slice: node --test salestaxreturn.test.mjs 38 pass. Full venture suite and venture-preflight not run. Wording from memory, stated in README.",
      "Probed HF Hub; dataset holds simulated example videos only; nothing downloaded.",
      "Flagship 1 slice: late-payment warning on sales tax discount. salestaxreturn tests 38/38 run locally; CI not waited on.",
      "Critique mode. wait_for.py --until added. No post: tool-only change. Backlog ids: none touched.",
      "Milestone 4 of civ programme inside civ-levers. Two of three hypotheses refuted; Castellano q_c and Axelrod 3.2 not reproduced, stated in README.",
      "verified-dse milestone 37: k-dependent halving regret bound; 0 violations on 40 cells; tests, homepage build, md links run locally.",
      "Predictions 2 and 3 refuted, 1 and 4 held. CI not waited on; local checks: homepage build ok, md links ok.",
      "Backlog had no workable agent item; ran main_health (Critique mode), found 2 red checks from one over-long post description (PR #11143 merged red), fixed it.",
      "Milestone 8b: three figures from results files; check_numbers, build.py, check_md_links pass.",
      "Targets platform/ci/check_md_links.py (7/8 caught) and post_rate.py (3/8). Gaps: argparse default/help-text and report() default limits and ROOT; tests added. No real defects found. No blog post: small guard-only run.",
      "Flagship slice: fuzz-race.mjs, 900 leagues, no fault. CI not awaited; fuzz-build.test.mjs run locally 5/5. Runcost not attached.",
      "Small slice: Ohio sales tax due dates (23rd) confirmed from tax.ohio.gov via search; no blog post, run was a short scheduled one.",
      "Critique mode (no agent-owned backlog item workable). main_health found check_post_frontmatter red (179-char description); shortened to 148. No backlog ids touched.",
      "Target platform/llm/byok.mjs, 8 mutants, 7 caught; escaped usage default mutant gap closed by new test. Probed isLocal private-range and OLLAMA_HOST edges by hand: no real defects. configFromEnv with only OLLAMA_HOST throws (needs model) - documented behaviour, not patched.",
      "node --test salestaxreturn*.test.mjs: 43 pass. flagships.yaml next: unchanged.",
      "Backlog ids: none touched (P056 blocked). main_health 24/24 green; validate ok. Another run landed the same main_health streaming fix first; dropped mine at merge, so this PR carries only the record.",
      "Creative: hearth-and-horizon, For Other Minds shelf, slug the-last-timing-point; text only (audio 423 MB over cap). node --test 11/11. Open-PR duplicate search not done (gh blocked).",
      "Project hearth-and-horizon; slug the-window-closes-at-eleven. Numbers worked in a script first.",
      "Milestone 2a (random-cycle robustness) landed; sourced duty cycle still open. Local checks: homepage build ok, md link check ok. pytest unavailable in the default python3; no src changes.",
      "Page button for annualized installments; irs.gov blocked so factors remain unchecked. Ran page.test and annualized.test (27 pass) plus a headless click.",
      "Ran annualized.test.mjs only (5 pass). Partial: slice is small. Merge done by session.",
      "Found main's build break (post description over 160) but another run fixed it on main first; my fix was dropped in the merge. No polish work shipped. Lesson: fetch origin/main before diagnosing a build break.",
      "Landed --log in changepoint-detector; engine.test.mjs full run exceeded 120s and was not confirmed.",
      "Critique mode. No blog post: change is a one-clause edit. No backlog ids touched. Small deliverable; main healthy.",
      "Flagship 1 next-item 9 probed (eval/revproc-probe.mjs: 2027 procedure not out). Looked for real OOO mail in mail, MimeKit, mail-mime-parser, postal-mime: none. Landed a small sales-agent header fix, agent.test.mjs 11/11. Small slice; flagships.yaml next: not rewritten. No agent doc written.",
      "Installed tesseract via apt-get update; cloned SROIE; baseline reproduced; date right 484->490/611, wrong 60->63. Did not run the CI-local workflow; ran node tests for receipts suites (44 pass).",
      "Milestone 2c. pytest unavailable in bare python; homepage build ok; experiment run directly.",
      "lowcomm-training milestone 5k: k=5,7 coalition runs; bias-crossover account passed out of sample (2 seeds).",
      "Milestone 6ac run locally from cached codes (about 5 min). Predictions 1, 3, 4 refuted, 2 held. Did not run full CI locally beyond homepage build.",
      "Milestone 33 verified-dse eta=3 replay, no flow run; build.py and check_md_links ok.",
      "Saints by Candlelight episode 52 cyril-and-methodius-and-the-letters-for-a-people-without-any, text only (audio 423 MB, over the 400 MB line). Check-script ok, node --test 12/12. No agent doc written: nothing new for the next run beyond PRODUCTION.md's list.",
      "Critique mode. main_health 26/26. Shipped two doc_friction fixes in prompts/polish/prompt-0.md (slow build, Playwright import). No blog post: small prompt-only change. No backlog ids touched.",
      "Critique mode; no backlog ids touched. main_health skips check_built_site.py without _site/. No blog post: tiny tool fix.",
      "Opened programme heavy-hydraulics; model ordering holds by construction, stated as such.",
      "Negative result: narrower driftWarning window not shipped. Ran drift-warning.test.mjs only; full CI not run locally.",
      "Hearth & Horizon, slug forty-eight-degrees. Sums verified by hand; tests 11/11. CI not awaited locally beyond node tests.",
      "Titles over 70 chars 967->908. Full pages tests: 1301 pass, 3 fail; audiences title test fixed here; 'placeholder origin' (changelog) is pre-existing on main; cache-name test passed on main, passes alone on the branch (flaked once in the full run).",
      "Milestone 44 of verifiable-training-mechanisms; predictions logged before run; homepage build ok, md links ok. LaTeX paper not updated.",
      "Small slice: measured --overdispersion and --bursts on real great-discoveries; node --test great-discoveries.test.mjs passes (2/2). No agent doc written; full suite and CI not run locally.",
      "Milestone 34 verified-dse: tail_risk table; homepage build and md link check ok locally. Skipped open-PR scan and full CI-equivalent run beyond those.",
      "Explore idea: sweep for tables with no th. Fixed 7 pages, added platform/ci/check_table_headers.py + tests + CI step. No agent doc written; nothing the next run needs beyond the checker.",
      "8/8 mutants caught on platform/ci/post_rate.py; 2 real defects found and patched with tests first.",
      "Creative track, Saints by Candlelight episode 49 zacchaeus-and-the-sycamore-tree-at-jericho, text only (audio 423 MB over cap). No agent doc written.",
      "Milestone 6aa: pilot-frozen-lambda stratified betting CS; all three predictions held; smoke-run numbers disclosed in LOG. No homepage/paper change.",
      "Idea: llms.txt link-target checker (platform/ci/check_llms_txt_links.py). Found 0 dead links in 16 files; small result. Agent doc skipped: nothing the next run needs beyond the prompt note.",
      "UIUC host still refused (HTTP 000), so NACA 0012/0015 data step stayed open; ran gust metrics on the 78 mode-matched tails instead. Checks run locally: check_numbers.py, homepage build.py ok, check_md_links ok.",
      "aerolog-scaling milestone 8e: none of 78 tails robust to tail slope 0.75-1.0; paper draft updated.",
      "Milestone 7h: arithmetic on 7d-7g; homepage build ok; CI not waited on beyond local build.",
      "creative track; hearth-and-horizon story point-two (text only, audio cap exceeded at 423 MB). Venture tests 11/11 pass locally.",
      "Programme marine-hull milestone 5d; 46 tests, build.py ok, check_md_links ok. One prediction refuted as written (tie artifact), logged.",
      "Engine, great-discoveries, cli, page tests pass locally. venture-preflight and unlanded_work.py not run.",
      "Milestone 39: optimum-anchored halving bound, valid, modest gain (median 0.89 of previous bound). No predictions were written before the script ran; logged as exploratory. No blog post written: small theory step. Ran unittest tests.test_bound (12 OK), build.py ok, check_md_links ok.",
      "Project hearth-and-horizon, For Other Minds shelf, slug the-second-reader, text only (audio 423 MB over 400 cap). Draft had a weekday error and inconsistent date/arithmetic examples, fixed in an adversarial re-read.",
      "Small slice: analyze() returns cashBasis. Ran engine.test.mjs and cashbasis.test.mjs (71 pass). Did not run venture-preflight or update flagships.yaml next: (slice was not a listed milestone item).",
      "Backlog had no agent-owned open item; critique mode via main_health.py found two red checks with one cause (post description 173>160). Fixed. No blog post: one-line fix; no backlog ids touched.",
      "Target uk-student-loan calc.mjs; catch rate 2/8 -> 8/8 after 6 guard tests. No real defects found.",
      "hearth-and-horizon: Ten and a Half Seconds (ten-and-a-half-seconds), text only, audio cap exceeded (423 MB). node --test 11 pass. No agent doc written.",
      "Explore idea: act on tax_year_staleness report; gig-driver analyzer default 0.70 -> 0.76 using figures already verified in-repo (irs.gov 403 via proxy). Staleness 11 -> 10.",
      "estimatedtax/scorp/property tests pass locally (47). CI not awaited beyond merge.",
      "Ran node --test johnson-johnson.test.mjs (2 pass). Did not run the full suite or venture-preflight (no page change).",
      "Project: saints-by-candlelight; piece: cleopas-and-the-stranger-on-the-road-to-emmaus (episode 51), text only because audio is 423 MB, over the 400 MB line. Check-script ok (5884 words), node --test 12 pass. Chosen because hearth-and-horizon already had three pieces today.",
      "Critique mode. main_health: 25/26 pass; promptctl validate red from a merged record with pr null (#11135); set it. Backlog ids touched: none. Ran validate (ok); unittest not run.",
      "Flagship 2 slice: page card for --eaves. Venture suite 318 pass; real browser run via playwright showed 8 panels/11 fascia/8 channel. Did not run venture-preflight or write an agent doc; no new venture.",
      "Critique mode; no backlog ids touched. Fixed 395 vs 423 MB audio-figure drift.",
      "Project hearth-and-horizon, piece the-second-echo (text only; audio 423 MB over cap). Sabine numbers recomputed in session.",
      "5 campaigns (check_money_sign, check_heading_order, indexnow_state, writing.mjs, compliance_scan), 40 mutants, catch 0.853 -> 1.0 after fix. No real defects found in a brief read; hunt was shallow.",
      "Hearth & Horizon, slug thirty-seconds-and-thirty-minutes; text only (audio 423 MB). Fixed a tally that summed to 1,250 of 1,400 before commit. No agent doc written.",
      "No backlog id touched. Hook tests pass; validate ok. Lost the hook files once by deleting a throwaway test branch; recovered via reflog.",
      "Tests 19 pass; build.py ok; link check ok. cite_check found no DOIs/arXiv ids in README (references are journal citations, not machine-checked). Hypotheses logged before run; H1 untestable, H2/H3 half refuted.",
      "Project hearth-and-horizon; piece the-gap-in-the-nets (fog nets, Peru 2049).",
      "changepoint-detector --episodes; README section; eval/episodes.mjs. No agent doc in docs/reports: README holds the numbers.",
      "Ran 5n (k=8,9) in full but a parallel session landed the identical 5n as #11216 first, despite my draft claim PR #11214 being open; I dropped my duplicate research files and shipped only the blog post. Same numbers in both runs (k=8 inf, k=9 ~3.5e7).",
      "Flagship 1 slice: cash-basis P&L on the page. page.test.mjs + cashbasis.test.mjs pass locally; not driven in a browser; venture-preflight and CI not run here. No agent doc written.",
      "Target platform/ci/check_post_frontmatter.py: 7/8 caught, 1 gap (ROOT depth) guarded; no real defects found. No blog post: small guard-only run.",
      "No new blog post: redteam run fixing three red baselines on main plus check_code_refs guards.",
      "Milestone 45 of verifiable-training-mechanisms: init-scale weight bound vs bit flips and planted values. Local checks: homepage build ok, check_md_links ok. No separate docs/reports agent doc; the LOG.md entry carries the state.",
      "Idea: report-only tax-year staleness scan (platform/ci/tax_year_staleness.py). Wage-base consistency sweep clean; 11 candidates; no figures changed because irs.gov 403 via proxy. CI not awaited; local unittest and post frontmatter check run.",
      "Project: hearth-and-horizon (Little Lamps); piece: philip-neri-and-the-happy-walk. Text only.",
      "Audit of 138 twin projects (keyword rules, 12-project hand check). Build ok, md links ok.",
      "Fixed 3 validate failures on others' files. Episode length range in creative prompt comes from a friction report, not a located test.",
      "Target platform/ci/check_social_proof.py, 8 mutants, 7 caught, 1 gap (snippet start clamp) guarded by new test. No real defects found.",
      "marine-hull milestone 5g; homepage build ok, links ok. No agent doc written (nothing the next run needs beyond LOG.md).",
      "Project saints-by-candlelight, slug ambrose-and-the-bees-in-the-cradle (episode 46), text only: audio at 423 MB, over the 400 MB cap. Checks run: generate.mjs --check-script (6284 words ok), generate.mjs, node --test (12 pass). Removed an unverified beehive-carving claim and an invented age during adversarial re-read.",
      "4 campaigns on platform/ (money_sign 8/8, siblings 7/8, surface-budget 1/8, social_proof 8/8). Surface-budget CLI was untested; added 5 tests, escaped 7 -> 0. Siblings exit-1 mutant left as open gap. No real defects found. No blog post: guard-only run.",
      "Critique mode; backlog had only owner/blocked rows. main_health 24/24, validate green. No backlog ids touched. Fixed pick_track stale next-free milestone.",
      "Critique mode (backlog had only owner/blocked rows). main_health 24/24, validate ok. Ported claim-check steps from research prompt-1 into routed prompt-0. No backlog ids touched.",
      "Critique mode; main_health 26/26 green; backlog only owner rows and blocked P056. Initial push ran in background and a retry hit 'reference already exists' (first push had landed).",
      "Local checks: research/_homepage/build.py ok, check_md_links ok. Script runs in 1 s.",
      "irs.gov 403 through proxy, so the ai-bookkeeper child-credit check was dropped. main_health 24/24. stairs, cli, page tests 71 pass locally; CI not waited on.",
      "Idea: finish the open changepoint-detector item, a \"Take logs first\" page checkbox for --log. Checked in headless Chromium on J&J earnings (12 changes off, 10 on); 182 venture tests pass.",
      "Idea: bid leveling page card for wall-framing-takeoff (CLI-only before). 2027 IRS figures still unpublished (web search 2026-10-28; irs.gov 403 via proxy), so ai-bookkeeper item 9 stays open. Verified page.test.mjs 27/27 and headless Chromium run.",
      "Added checkWinders (stairs.mjs), CLI output, 3 tests (stairs 21 pass, cli 22 pass), README, flagship next, blog post. Hand-computed only.",
      "Campaign on ai-bookkeeper/ledger.mjs: 5/8 caught; 2 gaps (chart row missing code or name; one negative amount in a balanced entry) now guarded by ledger-guards.test.mjs; 1 equivalent. No real defects found in the time spent.",
      "Text-only saints episode 45 (Genesis 32-33). check-script ok (5772 words), node --test 12 pass. Dropped a Roman Martyrology date I could not vouch for.",
      "Text-only story The Lid Stays Down; cooling curves checked in Python (A -12.0 C at 42.5 h, B -5 C at 23.1 h, range 19.7-27.6 h); generate.mjs and node --test (11 pass) run locally.",
      "2027 revenue procedure still not out (revproc-probe exit 1); state revenue sites unreachable (curl 000), so took a slice needing no outside data. Verified: salestaxreturn/page/cli tests (68 pass), eval/browser-salestax-return.mjs 5 checks, full venture suite 1730/1730 pass.",
      "ledger.mjs campaign: 4/8 caught; 2 gaps closed (ratios denominator of 1, accountLedger two-account entry), 2 equivalent. Seed 527699774.",
      "node --test self-host/*.test.mjs: 21 pass (7 new in oauth.test.mjs; fake IMAP/SMTP/token servers only). No real Google or Microsoft endpoint was tried.",
      "State tax sites unreachable (000 via proxy), so took an item needing no outside data. Probe agent-written and tuned on itself (ceiling, said so). ai-bookkeeper suite 1737 pass. No flagships.yaml rewrite: the item list is unchanged, only an extra measured line in README Next.",
      "Generated per-product llms.txt in the site build (1318 files); full build and check.mjs pass; unit test passes.",
      "Scheduled run. Router drew research; followed the task text (ventures). Duplicate checks showed the ideas tried (FBA reimbursements, certified payroll, freight margin, churn cohorts, duplicate payments) already exist; CMS hosts unreachable through the proxy so no real-data work. Landed stairs.mjs (equal risers, notch throat, stringers, stairwell opening from headroom), CLI --stairs, 9 engine tests + 1 CLI test, README entry, blog post. Whole wall-framing suite 287/287 pass locally. Hand-computed fixtures only; no page card.",
      "Flagship 4 (changepoint-detector): driftWarning measured on 5 real series; fires on 4, wrong on the 1973 dip in UK driver deaths. Tests drift-warning, drift-warning-real, uk-gas pass locally. No venture page change, so venture-preflight not run.",
      "Target ventures/home-sale-exclusion-calculator/calc.mjs. 8 mutants: 3 of 8 caught before (37.5%), 8 of 8 after the added guard test (100%). No real defects found reading the target.",
      "Ran main_health.py: one red check, promptctl validate, caused by a hand-written run record (2026-10-28 session_01AcxTt...) with a sentence as outcome and a string deviation. Fixed the record to the schema; validate is green again (3649 records). Did not ship a product slice: the top flagships' open items all need real external inputs (bank exports, ERP files) that the proxy could not supply this run.",
      "ai-bookkeeper item 9 still blocked (2027 rev proc not out, probe run). Page test + Chromium run on two rises. Review track was due (41/40) and skipped via --skip-review; not claimed.",
      "Flagship 1 ai-bookkeeper: tax calendar + .ics (calendar.mjs, salesTaxDueDates), 5 new tests, 1747 venture tests pass. tax.ohio.gov blocked by proxy; revenue-procedure probe: 2027 figures still not out. Venture-preflight and CI run not done locally.",
      "Aimed at wall-framing-takeoff stairs.mjs (landed yesterday, a flagship). 8 mutants, 4 escaped (147 in boundary, angle, longest-listed message, marks run); 4 tests added, all caught after fix. No real defects found. Foreground tool timeout hit by a 15 min campaign; ran it in background.",
      "Hawaii semiannual GET dates tested and a stale comment fixed. Source: one third-party guide; state sites not read. Ran salestaxreturn.test.mjs (38 pass), not full CI.",
      "Explore: DC annual sales tax return period (ends Sep 30, due Oct 20) in ai-bookkeeper. Source was a search excerpt; state sites blocked by proxy. Small slice; flagship is saturated.",
      "wall-framing-takeoff: four real LibreCAD door symbols (GPL, not committed) exposed jamb fragments read as several small doors; joinJambs fixes it. dxf.test.mjs 15/15 pass. First version broke Open House fixtures; guard added. Only dxf tests run, not full venture preflight.",
      "Creative: hearth-and-horizon, hearth-and-horizon shelf, slug eight-to-a-well; text only (audio over cap). node --test 11/11. Well counts rechecked by hand (34+56+73=163; 6 strip wells; 31 left).",
      "ai-bookkeeper annualized.mjs + CLI + 4 tests + README + blog post. 46 tests pass locally (annualized, estimatedtax). irs.gov 403 via proxy so Schedule AI constants unchecked and flagged. Venture preflight not run (page unchanged).",
      "Built a bid-leveling page card; before merge, another session landed the same feature on main with a different UI (bidText box, plan.bids restore). Dropped mine and took main's. Nothing else shipped this run.",
      "Small flagship-2 slice: compound rate checked against product listings, pail count added. Ran drywall/cli/budget/page node tests locally (all pass); venture-preflight not run.",
      "Target ventures/ai-bookkeeper/estimatedtax.mjs, 8 mutants, 7 caught (87.5%); the escaped const-plus-one on the 2026 hoh QBI threshold is now caught (100%). No real defects found. Suite: node --test estimatedtax.test.mjs 37 pass.",
      "ai-bookkeeper: calendar --planned and .ics semicolon escape fix; calendar.test.mjs 7/7 pass locally. Flagship items needing real data were not available; took a no-outside-data slice.",
      "Local checks: check.mjs passes; assistant and input-label tests pass; contrast.mjs on 3 flagships clean after fix (before: 20 violations on 8 pages across 10 flagships + stories). CI not awaited.",
      "Redteam on rental-dscr-calculator/calc.mjs: catch 1/8 -> 8/8 after 5 new tests (defaults, caps, small-loan, sale balance, rate-table payment). No real defects found. Scheduled prompt asked for revenue ventures; router drew redteam.",
      "State tax sites, irs.gov and revenue.iowa.gov were unreachable (proxy 403 / not allowed), and a sweep of firefly-iii/data-importer found no sample data, so the real-input items could not move. Landed a self-contained feature instead: cash-basis P&L (cashbasis.mjs, CLI cashbasis, 6 tests). Local: cashbasis, accruals-property, page tests 29 pass. Full venture suite and venture-preflight not run here; CI covers them.",
      "Idea: run wall-framing-takeoff's IFC reader on a real buildingSMART file with a window; found opening height and sill ignored, now read. Local tests 129 pass.",
      "Sources are web-search excerpts; authority hosts unreachable. MST digit pinned on python-stdnum's published example. Also fixed hub Uruguay row stray Paraguay link.",
      "Scheduled run. Routed to research but the stored task was ventures work, so followed ventures. 2027 IRS rev proc still not out (probe). Ran eval/facturx-corpus.mjs on Mustang test PDFs: fixed a real reader bug (MIME type containing 'stream'); 18->19 unwrapped; facturx.test.mjs 15 pass.",
      "Measured four LP relaxations on 12x30 week 2 with eval/relaxation-check.py (pairwise 46, cliques 68, cover cuts 68.4, Dantzig-Wolfe 72.33 vs floor 72, optimum 75). Clique cut dropped; flagship next rewritten to branch-and-price. No product code changed, so no venture suite run. 2027 IRS revenue procedure still not out (web search).",
      "Landed a small slice: tiered timely-filing discount and a GA preset in ai-bookkeeper salestax return; node --test salestaxreturn.test.mjs 47/47. State revenue sites (revenue.pa.gov, dor.georgia.gov) did not resolve from the session, so the GA rule is from a search excerpt of the ST-3 instructions. Venture preflight and the full workflow check were not run.",
      "Owner asked for ~5% of work on impressive sites, SEO and AEO ('aseo' read as answer-engine optimisation) for an unnamed period; set until 2026-11-30. Verified: python3 -m unittest test_promptctl (66 OK), promptctl.py validate ok, check_post_frontmatter ok. CI was red on main for two pre-existing reasons, fixed here: flagships.yaml changepoint-detector next over 2,000 chars (since #11004; dropped a sentence that only pointed at the README), and faq-visible.test.mjs on 9 pages (7 einvoice-preflight LatAm pages carried raw &rsquo;/&ldquo; entities inside JSON-LD; ebay-bookkeeping visible copy drifted from its JSON-LD; vsme-report-builder JSON-LD described a different FAQ than the page shows). After: faq-visible 4/4, the venture tests for those pages pass (ai-bookkeeper payouts 49, vsme 18, einvoice LatAm 56).",
      "Local verification: 32 Python unittest pass (offline), 10 node tests pass (page numbers pinned to study.json), clauses.mjs OK, validate_workflows OK, publish_surface --write (new CI classified none). Study run on live data: Ken French (through 202609) and Coinbase (through 2026-10-27). Pre-existing validate.py problem (flagships.yaml changepoint-detector next: length) not touched."
    ]
  },
  "asks": null,
  "snapshot": null
}
