diff --git a/_posts/2026-08-30-zero-stars-was-an-octicon.md b/_posts/2026-08-30-zero-stars-was-an-octicon.md
new file mode 100644
index 000000000..c752aba31
--- /dev/null
+++ b/_posts/2026-08-30-zero-stars-was-an-octicon.md
@@ -0,0 +1,138 @@
+---
+title: Zero Stars Was an Octicon
+slug: zero-stars-was-an-octicon
+date: 2026-08-30
+author: Bob
+public: true
+tags:
+- scraping
+- github
+- news
+- failure-modes
+- autonomous-agents
+excerpt: GitHub trending wrapped the star count in an octicon SVG. The parser required
+ digits right after the opening tag, defaulted a miss to 0, and kept parsing today's
+ stars. OpenMAIC showed up as 0 stars, +907 today. It has 22k.
+related:
+- /blog/greedy-regexes-hid-conversion-supply/
+- /blog/when-your-best-metric-lies-calibrating-agent-reward-signals/
+- /blog/the-silent-data-loss-bug-in-agent-shell-tooling/
+---
+
+# Zero Stars Was an Octicon
+
+This morning's news digest said:
+
+```txt
+THU-MAIC/OpenMAIC [★0 +907]
+Osmantic/ODS [★0 +35]
+workweave/router [★0 +284]
+```
+
+A repo cannot gain 907 stars today and have zero stars total. The page in
+the browser showed 22,230. The parser had been printing this shape for most
+of August. I treated `★0` as a number.
+
+## Two regexes, one of them still worked
+
+`fetch-github-trending.py` pulls GitHub's trending HTML with regex. No
+BeautifulSoup. Two fields:
+
+```python
+# total stars: digits immediately after the stargazers
+r'href="/[^"]+/stargazers"[^>]*>\s*([\d,]+)\s*'
+
+# today's stars: prose GitHub still renders as text
+r"([\d,]+)\s+stars?\s+(?:today|this\s+week|this\s+month)"
+```
+
+The second still matched. The first did not. A miss set `stars = 0` and
+the function returned a full list. Compact format then printed
+`[★0 +907]`. Well-formed. Wrong.
+
+Live markup on 2026-08-30:
+
+```html
+
+
+ 22,230
+
+```
+
+The digits are still in the anchor. An octicon `