One outlet wrote 8 of 9 articles. The cap that should have stopped it stepped aside on purpose.
A three-article cap keeps one outlet from owning the edition. It lifts entirely rather than leave a slot empty. That happened four times in 28 editions, and only twice because the news was actually thin. One was a configuration mistake of mine. One I still cannot explain.
This is not a news summary. It is a record of something that happened while building this site.
This site publishes ten articles every morning and caps any single outlet at three of them. The cap is there so a reader gets a cross-section instead of one newsroom's front page. Across 28 editions it has been broken five times, and four of those were not close.
| Edition | Outlets used | Largest outlet |
|---|---|---|
| Jul 28 (Tue) | 3 | TechCrunch, 6 of 9 |
| Jul 29 (Wed) | 5 | TechCrunch, 4 of 10 |
| Jul 31 (Fri) | 2 | TechCrunch, 8 of 9 |
| Aug 10 (Mon) | 2 | AI Times, 6 of 10 |
| Aug 16 (Sun) | 2 | AI Times, 7 of 10 |
The four heavy days are exactly the four editions that drew on three outlets or fewer. Every other edition used between four and seven.
The cap is written to step aside
Selection walks the candidates in score order and takes one only if its outlet is still under three and its story cluster is unused. If that pass ends short of ten, a second pass runs the same list again with the outlet cap gone. A third pass drops the cluster check as well.
if len(selected) < args.top_n:
chosen_links = {a["link"] for a in selected}
for article, cid in zip(candidates, cluster_ids):
if len(selected) >= args.top_n:
break
if article["link"] in chosen_links or cid in used_clusters:
continue
selected.append(article)
I wrote it that way deliberately. Nine articles under a promise of ten is a visible failure and an empty slot looks broken. Concentration does not look like anything. The edition still has ten entries, the page renders identically, and no log records that the cap was lifted.
Two different causes, one shape
August 10th was a Monday and August 16th a Sunday. A morning run looks back 24 hours, which on those days is the American weekend, when the English-language outlets barely publish. On August 10th only two of the twelve feeds produced a candidate at all.
July 31st was a Friday and there was nothing thin about the news. Five feeds returned 403 that morning. The scheduled run reaches the internet through a network allowlist, and at least three of those five failed for one reason: the allowlist held theverge.com, wired.com and technologyreview.com, while the feed URLs point at the www subdomains of the same sites. Host matching is exact, so those feeds never answered. TechCrunch wrote 8 of that day's 9 articles because of a missing www.
July 28th I cannot explain. The instrumentation that records how many candidates each feed produced did not exist until August 8th, so the only surviving record of that morning is the edition itself: three outlets, six articles from one of them.
Two of the four were real scarcity, one was a configuration mistake of mine, and one is unknown. The cap treated all of them the same way, because the only question it asks is whether ten slots are full.
What the reader actually got
On August 16th one outlet supplied seven of the ten. Two of those seven covered weight releases from the same model family at the same company on the same day. Two more covered Anthropic's watermark, one explaining how it works and one on subscribers cancelling over it.
So the cost is not only the nine outlets that are missing. A ten-item digest assembled from one newsroom also inherits that newsroom's repetition, and four of the ten slots went to two stories.
Not fixed
The fallback should tell apart the two states it currently merges. Running short because the world was quiet is a different situation from running short because five feeds returned 403, and the second is not a reason to hand an edition to one outlet. Failed feeds are now recorded by name in the daily funnel, which is what makes that distinction checkable, and that record starts with the 2026-08-20 edition.
What the right behaviour is on a genuinely quiet day, I do not know yet. Publishing eight good articles from five outlets may beat ten from two. That is a judgement about the product, not a bug, and I would rather decide it against a few weeks of the new records than guess now.
As with the previous note, the writeup comes before the fix so the numbers above stay reproducible. Whatever changes gets appended to this page.