Engineering brief · Thursday, 29 October 2026
Engineering brief, Thursday, 29 October 2026
The bottom line
Good morning. This is the engineering brief for Thursday, 29 October 2026: everything that merged to main between midnight and midnight UTC, and what needs you.
250 pull requests merged, in line with the seven-day average of 268.7. Together they changed 2,265 files, adding 133,468 lines and removing 21,505. The work reached 20 products, 10 research projects and 15 blog post changes.
The headlines: 2 new products joined the catalogue and 1 new research project started.
Health: CI, main and the queue
This edition is from the archive, so the CI and pull-request state of that day was not recorded; the live numbers are in the newest edition and on the development dashboard.
Fix-forwards: 5 merges repaired a red main or a failing check without reverting.
- process: fix unresolved merge conflicts on main (ai-bookkeeper) and S-corp post frontmatter #11276
- redteam: check_markup_basics 2026-10-29 #11368
- prompts: fix three run records that turned promptctl validate red on main #11397
- main is red: flagships changepoint next: over the cap, a dead /ventures/ link, ai-bookkeeper title and FAQ divergences. PR #11410 took it to 2,101 characters, so portfolio/router/validate.py fails on main and on every open PR. #11411
- process: fix three run records failing promptctl validate on main #11448
Products
Work landed on 20 products, 149 merges in all. New in the catalogue: dupehound and shed-designer.
ai-bookkeeper: 36 merges.
- Restaurant bookkeeping page, fixture, test and post #11251
- Free tax calendar page (.ics) and browser fix for toIcs #11252
- Real estate agent bookkeeping page, fixture, test and post #11253
- State income tax boxes on the estimate card #11254
- Hair salon and barber bookkeeping page, fixture, test and post #11260
- House-cleaner bookkeeping page, fixture, test and post #11261
- Mutated-fixture robustness test for the statement reader #11266
- S-corp election worksheet on the page #11271
Plus 28 more product changes.
wall-framing-takeoff: 31 merges.
- IFC reader takes opening height and sill, checked on a real buildingSMART file #11241
- Read multi-storey IFC one storey at a time #11301
- Seeded fuzz test for sheathing tiling (1,200 layouts, no violation) #11331
- Plan sketch editor (draw walls, doors, windows) #11340
- Move tool in the plan sketch (drag corners and walls) #11343
- Slide and resize doors and windows in the plan sketch #11345
- Plan sketch survives a page reload #11350
- Validate the stored plan sketch (restoreSketch), drop damaged items #11351
Plus 23 more product changes.
shed-designer: 17 merges.
- Drag-to-design shed with plans, 3D, cut sheet, Home Depot/Lowe's pricing and cost optimizers. New browser tool in ventures/shed-designer. #11268
- Structural correctness — ridge-beam post on a skid, ridge-board eave loads, skid joints on blocks, panel joints on framing #11307
- Plans and cut sheet lane — cut optimizer proves its lower bound and buys cheaper #11311
- Choose top and cap plate joints together; offset check at the IRC's 24" #11313
- Plans and cut sheet lane — plans print, fit the page, carry every mark and match the model #11314
- Plans and cut sheet lane — cut sheet counts identical boards, prints in colour; door steps name marks #11319
- Lumber list pages for 12 common sizes, written by the engine and checked for drift #11322
- Lane 5 robustness — fuzz test over designs and junk state, and the bugs it found #11312
Plus 9 more product changes.
changepoint-detector: 16 merges.
- Shape-or-shock test on the drift warning (negative result) #11259
- Level-scaled refit as a shape-vs-shock test (negative result) #11264
- Log refit as a shape-vs-shock test (negative result) #11275
- Drift warning tested on two real shock series (Australian arrivals) #11309
- Drift warning on trendless seasonal series (null warns too) #11324
- Range95 on a real closure (Ansett 1989 pilots' dispute), test, post #11339
- Hurricane Maria in Puerto Rico daily deaths (real shock, ranges hold) #11365
- Drift warning on 195 months of euro factory orders #11374
Plus 8 more product changes.
hearth-and-horizon: 11 merges.
- Zita and the Bread in the Oven (Little Lamps, text only) + blog post #11244
- Boil It Once (nitrate and a boil-water notice, 2047, text only) #11255
- The Warm Stack (hay self-heating, 2048, text only) #11257
- Where the Pump Coughs (cistern story, text only) #11344
- The Candles Breathe (Easter Vigil CO2 story, text only) #11354
- The Stack That Sweats (self-heating hay story, text only) #11363
- The Ring and the Bag (gift-mushroom poisoning story, text only) #11402
- The Warm Pack (swollen e-bike battery story, text only) #11420
Plus 3 more product changes.
league-schedule-generator: 9 merges.
- Officials for multi-division schedules #11369
- Google Calendar / Outlook import CSV #11377
- Calendar (.ics) export for multi-division schedules #11378
- Polish: first-screen buttons on shift-roster-builder, league-schedule-generator, sales-agent #11384
- Fix duplicate id 'start' (section renamed #make), main_health red #11394
- Fuzz check of .ics and CSV exports (600 leagues, 0 faults) #11453
- Officials box on the multi-division page #11471
- Per-team and per-official messages on the multi-division page #11474
Plus 1 more product change.
photo-editing: 5 merges.
- Shootflow cull --picks scores the cull against a photographer's keepers #11286
- ShootFlow: OpenCV reference face detector for closed-eye culling #11299
- Marketing page and llms.txt cover shootflow cull; blog post #11338
- RAW review proxies from the embedded preview #11450
- Shootflow cull --thumbs contact sheet in the report #11496
sales-agent: 4 merges.
- M8a CRM write-back (Pipedrive, HubSpot notes and opt-out) #11243
- M8b person-clicked CRM stage move (Pipedrive, HubSpot) #11250
- Redteam: share.mjs 2026-10-29; fix sales-agent dead mirror link that broke the front-door build #11265
- Polish: sales-agent guide page; fix seo_title that broke the build #11465
several products at once: 4 merges.
- Explore: autocomplete=email on four email inputs (sweep of 1,328 pages) #11444
- Link 22 orphaned product pages; add orphan-page check #11446
- Redteam: invalid.mjs + terms.mjs 2026-10-29 #11468
- Polish: first-screen buttons on four flagship tool pages #11478
shift-roster-builder: 4 merges.
- Fairness bench with narrow availability, README measurement, post #11323
- Optional Slack/Discord/ntfy webhook alerts for the self-hosted hub #11459
- Guide + bench on rebuilding vs changing one shift after a call-out #11497
- One-click 'Give to' cover for call-outs on the manager page #11498
einvoice-preflight: 2 merges.
- Israel allocation-number page with ID check digit test #11429
- South Korea e-invoicing page with business number check digit test #11477
saints-by-candlelight: 2 merges.
- Paul and the Fourteen Nights Before Malta (episode 53, text only) + blog post #11279
- Monica and the Window at Ostia (episode 54, text only) #11366
child-tax-credit-calculator: 1 merge.
- Redteam: child-tax-credit-calculator 2026-10-29 #11457
client-concentration-risk-analyzer: 1 merge.
- Redteam: client-concentration-risk-analyzer cli 2026-10-29 #11416
dupehound: 1 merge.
- --normalize mode finds renamed copies #11300
ebay-fee-calculator: 1 merge.
- Ventures: llms.txt for ebay, etsy and shopify fee calculators, with worked examples #11458
etsy-profit-calculator: 1 merge.
- Redteam: wash-sale-checker + etsy-profit-calculator 2026-10-29 #11267
open-tennis-robots: 1 merge.
- Launch checks tie feeder CAD to the flight model #11386
seller-net-sheet: 1 merge.
- Redteam: seller-net-sheet transfer-tax 2026-10-29 #11258
sep-ira-vs-solo-401k-calculator: 1 merge.
- Redteam: sep-ira-vs-solo-401k-calculator 2026-10-29. Catch rate 37.5% -> 87.5%; four boundary/default tests added. #11367
Research
10 research projects moved. Started that day: hanger-3dradius.
heavy-hydraulics: 11 merges.
- 2e, model load shape vs a measured excavator power trace #11292
- Milestone 2f, idle time decides load-sensing vs open-centre #11294
- Milestone 2g, idle-time ranking vs open-centre neutral pressure #11304
- 2h break-even neutral pressure for LS vs OC idle #11329
- Milestone 4 first pass, parts cost and payback (H5) #11415
- Milestone 5a, boom-lowering energy recovery bound #11418
- Milestone 5b, regen cap check #11423
- Milestone 6, first paper draft and post #11425
Plus 3 more research changes.
marine-hull: 9 merges.
- Milestone 5i, held-out test of the solar surge rule #11246
- 5j hull-constant uncertainty on best solar cruise speed #11357
- 5k sensitivity of solar boat range to six inputs #11387
- 5l sourced hotel load and panel efficiency #11398
- 5m joint interval on deck-solar km/day #11419
- Milestone 7a paper skeleton from logged results #11422
- Milestone 6a, sea-state resistance multiplier sweep #11480
- Milestone 6b, speed policy under intermittent rough days #11482
Plus 1 more research change.
lowcomm-training: 7 merges.
- 7b machine-checked citations + related work #11263
- 6a rand-k x H composition pilot (H6) #11289
- 6b held-out H test of a product composition rule #11325
- Milestone 6c, f(p) vs compressor variance omega #11414
- Milestone 6d, compression cost tracks measured omega #11430
- Milestone 6d, top-k shares the H-shape of the compression excess #11433
- 6f composition rule vs fitted scaling law #11489
llm-coding-inference: 6 merges.
- 6ae pooled audit strata for a rare category #11310
- Milestone 6af, stratifying the audit at common categories #11348
- Audit strata by the coder's own label (6ag) #11388
- Milestone 6ah, pilot-estimated coder-cell allocation (negative result) #11406
- Milestone 6ai, floor and independent pilot for coder-cell allocation #11427
- Milestone 6aj, coder-cell floor rule on NaijaSenti (null result) #11501
aerolog-scaling: 5 merges.
- Milestone 9d, adjustable tail area #11330
- 9e adjustable tail recovers gust peaks #11358
- 9f noisy in-flight identification of the adjustable tail #11443
- Milestone 9f, identification noise on the adjustable tail #11447
- Milestone 9h, least-squares fit of a noisy free response #11505
verifiable-training-mechanisms: 2 merges.
- Milestone 47, gradient-chosen plant under per-tensor bound #11249
- Milestone 48, multi-weight plant under per-tensor bound #11495
verified-dse: 2 merges.
- Sync paper open items with milestones 36 and 38 #11431
- Milestone 40, fixed multiplier on pilot iota^(k) gives no bound #11492
buildbot-carrycop: 1 merge.
- Time-varying CoP ramp (heel to toe) sweep #11472
capture-trackprior: 1 merge.
- Gated tracking with re-acquisition #11248
hanger-3dradius: 1 merge.
- Radius-cap sweep for 3D-designed hangers #11421
Writing
15 merges touched the blog, with 187 new posts.
- redteam: platform/pages/rates.mjs 2026-10-29 #11269
- photo-editing: shootflow cull, local burst grouping and keeper picking with XMP sidecars #11262
- redteam: platform/pages/rates.mjs 2026-10-29 #11274
- Blog: three months, ten thousand PRs, development lessons from the repo. A retrospective from the repo's creation (2026-07-28) to now: monthly merged-PR counts, the first measured page loads, and nine lessons drawn from docs/history and docs/reports. #11282
- Blog post + report: CI and application bloat, useful vs deadweight. A week of Actions runs (58,776), a job-minute profile of 1,000 runs, and a byte count of ventures/: hetzner-gitops CI is 18.6% of job-minutes for a retired server, main was red on validate/Pages most of the week from metadata caps, 414 of 478 per-product… #11296
- Blog post: what TypeScript by default would look like in this repo. Measured costs and benefits of making TypeScript the default web language: file counts, Node 22.22 type stripping (runs .ts and .test.ts natively, rejects enums, node:module stripTypeScriptTypes keeps columns), and the blocker that platform/pages/build.mjs… #11283
- polish: AI Bookkeeper first-screen CTA; fix post description that broke the site build #11342
- process: say how to wait on a long job with wait_for.py #11355
- polish: fix site build broken by a 161-character post description; test all posts load #11390
- Fix airline-miles post description length; run record #11408
- polish: fix site build failing on over-budget post seo_titles and descriptions #11445
- polish: seo_title for 14 long post headlines #11469
- polish: test that flagship tool pages keep a first-screen button #11479
- polish: shorten post description so the site build stops throwing #11483
- redteam: platform/pages/audiences 2026-10-29 #11493
Platform, CI and process
41 merges changed the machinery the products and research run on.
process, prompts and the ledger: 20 merges.
- Polish: whole-site structural scan report and next steps #11245
- Process: promptctl route --task picks the track a scheduled message names #11288
- Static framework for an agent-written site: measurements, R&D note, blog post #11284
- Prompts: review 2026-10-29 #11290
- Process: push hook checks only posts this branch changed #11297
- Process: polish build time note, P059 push-hook diff base #11298
- Opinion: lean towards projects worth ~300 human hours; per-project hours in runcost report #11280
- Dupehound: a copy-paste detector in Rust (CLI + WebAssembly page), first of "dev tools in Rust" #11285
Plus 12 more platform changes.
platform/ci: 9 merges.
- Ci: third-party request check; drop Google Fonts from retail-pilot-intel portal #11242
- Redteam: platform/ci 2026-10-29 #11256
- Redteam: platform/ci/wait_for.py 2026-10-29 #11270
- Redteam: check_markup_basics 2026-10-29 #11368
- Redteam: platform/ci checks 2026-10-29 #11391
- Redteam: check_table_headers 2026-10-29 #11413
- Check_aria_refs fails label-for and ARIA references to missing ids #11434
- Redteam: platform/ci id and html checks 2026-10-29 #11436
Plus 1 more platform change.
platform/pages: 7 merges.
- Polish: one-line breadcrumb on phones #11302
- Polish: generated llms.txt states when its source last changed (AEO) #11341
- Polish: floating mic steps aside on scroll #11385
- Redteam: platform/pages/link.mjs 2026-10-29 #11404
- Polish: optional seo_title front matter for blog post titles #11405
- Polish: build stamps hand-written llms.txt with git as-of date #11426
- Polish: artifact check that every built product llms.txt states a date #11435
CI and automation: 3 merges.
- Process: run conflict-marker check before pushing a main merge (#11273 leak) #11278
- Ci: one command for CI and local runs; drop 418 duplicate venture workflows #11293
- Polish: fix Pages build failing on a 170-char post description; check front matter before the build #11485
platform/distribution: 1 merge.
- Redteam: platform/distribution/mcp.mjs 2026-10-29 #11328
platform/privacy: 1 merge.
- Redteam: browser-signals CLI exit-code tests 2026-10-29 #11247
The agent fleet
By co-author: Claude Sonnet 5.5 on 177 merges, Claude on 51 merges, Claude Opus 5.5 on 21 merges and unattributed on 1 merge.
200 agent runs filed a run record for the day. By track: ventures 73, research 44, redteam 22, polish 18, process 17, creative 12, explore 10 and review 4. By outcome: success 180, partial 19 and failed 1.
The 50 runs with measured usage came to $35.23 at API list prices, an equivalent rather than a charge, over 215 active minutes.
Runs recorded 21 errors; the first: Off-by-one column index overwrote data/dax-returns.csv; restored from git and re-derived.
Documentation that cost runs time, most reported first:
- research/CLAUDE.md, 12 reports: No numpy or scipy in the default python3; the milestone analysis had to be stdlib-only, which pyenv.py advice does not mention for pure-analysis steps.
- prompts/polish/prompt-0.md, 10 reports: Full site build takes ~20 minutes, not just over 120 s; the first monitors expired before it finished.
- .claude/hooks/check_posts_before_push.py, 10 reports: Blocked the whole compound command (commit+push), so the fix in the same command never ran; run the fix and the push as separate calls. Main also carried a post (s-corp) with missing description/tags.
In the runs’ own words
A few notes runs left in their records, verbatim:
- heavy-hydraulics milestone 5a. One prediction refuted narrowly (10.01% vs 10%). No agent doc written.
- Sales-agent M8a CRM write-back; agent test 12/12 locally. Endpoint shapes from memory, flagged as unverified. venture-preflight not run (no new venture; self-host module only).
- Idea: sweep venture HTML for unlisted defect classes. Clean: href=# handlers, form buttons without type, relative imports (10,427), label/ARIA refs (13,258). Shipped check_aria_refs.py as a CI guard.
- ; also shortened a 178-char post description from #11250 that failed check_post_frontmatter and blocked pushes.
- Local checks: kth_inflate.py ran, research/_homepage/build.py ok. Predictions were not pre-registered (stated as exploratory).
- Merged PR #11407 with a post description of 162 chars (limit 160) because the merge call ran in parallel with a push the hook blocked; fixed in follow-up PR.
Watch list
- research/CLAUDE.md keeps slowing runs down; a clearer page there pays back on every run.
That’s the brief for Thursday. Every item links to its pull request on the page.
Other days
- Friday, 30 October 2026
- Thursday, 29 October 2026
- Wednesday, 28 October 2026
- Tuesday, 27 October 2026
- Monday, 26 October 2026
- Sunday, 25 October 2026
- Saturday, 24 October 2026