DEV Community

Matthew Gladding
Matthew Gladding

Posted on • Originally published at gladlabs.io

What we shipped on 2026-05-20

Every publish with tags had been silently 500'ing since the posts.tag_ids → post_tags split. We caught this when investigating alert #293 on post dcd86ea6-9d8e-4841-9543-a46a55d96283. The create_post insert was using unnest($2::text[]) on a uuid column, causing a Postgres error that rolled back the transaction mid-flight. We fixed the cast to uuid[] and added a regression test (PR #509).

That database error exposed a drift in the reconciliation job. It was still filtering by slug prefix, a pattern from a previous refactor that it missed. We updated media_reconciliation.run to check cardinality(media_to_generate) > 0 first, so it stops regenerating media for posts that explicitly opted out (PR #508).

The initial publish path also needed fixing. PR #510 notes that publish_post_from_task ignored the media_to_generate array, spawning podcasts for posts with empty arrays while fire_post_distribution_hooks gated correctly. We split the logic into per-type checks to match the hooks (PR #510).

We also cleaned house on the test suite. PR #511 removed a stale xfail marker from test_threshold_triggers_summary_with_llm_payload because the dispatcher payload had already been restored to emit summary_request and annotations fields. The test now passes cleanly (PR #511).

On the release front, the CHANGELOG was leaking private keys into the public mirror, causing release-please to wedge. We added a line-redaction pass in scripts/sync-to-github.sh to strip out mercury_ and nightrider patterns before the leak guard ran (PR #506). v0.10.1 shipped today.

Auto-compiled by Poindexter from today's commits and PRs.

Sources

Top comments (0)