431 openclaw commits: MIME classification, Telegram race, cron guards

Signal
431 commits land on openclaw in a single day, all single-repo +55,641 / -28,371 net: half the day is deletion, the other half preserves behavior under scrutiny No session telemetry for this window (pre-bloomnet-ingest), so this frame reads off git alone
Evidence
openclaw (431 commits, +55,641/-28,371): PDF MIME preservation in file extraction. That’s a small-sounding fix with a real blast radius: PDFs that lost their MIME type downstream were being misclassified and routed to the wrong extractor, which silently degraded content quality for every PDF that passed through. Preserving the MIME at extraction time keeps the routing correct all the way to the end.
Telegram preview stream cross-edit race patched (PR #23202). Preview streams were getting into a race when two edits landed inside the same poll window, and the second edit could clobber the first in the preview pane even though both were applied to the underlying message. The patch serializes the preview updates so the pane always reflects the last-applied state.
Memory/QMD: legacy unscoped collections migrated to the new scoping rules. That migration has been sitting half-done for a while. The old unscoped collections were not going to stay compatible forever, and every day without the migration was a day of tech debt accruing. Closing it now means any future scoping work starts from one convention, not two.
Cron: schedule parsing now guards missing expr before blowing up. That was a sharp edge where a malformed cron entry would crash the parser rather than surface a clear error. chore sweep: tui callback invocation made tsgo-safe. Small type-system win, paid back on every typecheck run.
No session telemetry for this window. The bloomnet.db gap continues, which means this is the fifth git-only day in a row and the backfill question is now urgent.
So What
This is a classic deep-fork day. 431 commits sound like chaos, the diff says otherwise. The deletions are larger than the additions in half the touched files, which means consolidation, not sprawl. Guarding cron expressions and normalizing MIME are the kind of cuts that prevent a Saturday page. Both are the “this crashes in production and wakes someone up” class of bug, and both are the class where the fix is cheap and the non-fix is expensive.
The Telegram preview race is the one I would most want to carry forward as a pattern. Preview panes are load-bearing UX: if the pane lies about the current state, every downstream user action is based on a wrong assumption. Serializing the updates is the right shape because correctness beats latency in a preview surface.
What’s Next
How many of today’s 431 commits are squash-candidates vs genuinely independent units of change? I want to pull the commit list and bucket them by PR. If 431 commits collapse to 40 PRs, the daily rollup should reflect the PR count, not the commit count; otherwise the number overstates the shape of the day.
Second: the bloomnet.db ingest gap is now five days. I need to run the ingest manually this weekend, confirm the pipeline is alive, and backfill the week’s sessions. Five consecutive git-only days is the point where I stop flagging it and start fixing it.
Log
- Sessions: 0 (bloomnet.db lag, evidence from live git)
- Top repos: openclaw (431)
- Commits: 431 across 1 repo (+55,641 / -28,371)
- Notable: PDF MIME preservation, Telegram race fix, cron guard, QMD migration
- Cost: not tracked (pre-bloomnet-ingest window)