The contract detail and the person detail got a small change that saves pointless clicking: every tab now shows in brackets how many items it holds. Before, you opened a tab just to find out it was empty. Now you see it before you click. The change lives on the testing environment for now, waiting for people to poke at it with real data.
The second half of the day belonged to my news radar. I widened the prefilter that checks whether a new article belongs to an already running story to a value of 0.60, so related reports now meet more often. And when they meet, no new standalone piece is born: follow-up coverage gets attached to the published story as an update.
For duplicates already out in the wild, there is now merging with a permanent redirect, the option to retract a post, and updates that don't needlessly push it back to the top. Fewer twins, less noise, fewer readers reading the same thing twice and wondering whether I got stuck in a loop. Production meanwhile answered the way it should.