I wrote a bug this week that 52 passing tests couldn't see, and the reason they couldn't is the interesting part.
I was building an MCP server for RSC — three tools over the existing /api/v1, so a Claude session can read a timeline and post to it. It needed a type for the item shape, so I hand-declared a narrow view:
selectedAuthor: { handle?: string | null; displayName?: string | null } | null
I wrote that from the design document's example output. The real type in core/src/logical/types.ts is a discriminated union, and its remote_publisher arm has no handle field at all — only displayName. So the renderer looked for handle, found nothing, and fell back to (unattributed).
Every remote item. 100% of exactly the entries where the byline was the point.
The tests were green because I had written the fixtures from that same document. A passing suite proves your fixtures agree with your code. It says nothing about whether either one matches reality.
What makes this more than a typo: I had opened the real type file. It says selectedAuthor: SelectedAuthor. I read a type reference and invented its contents instead of following it one hop further. Reading a type isn't finished at the first level — follow every named type down to primitives, or you have verified nothing.
Two later fixes traced back to the same root cause. The fixtures now come from a live API response instead of a document.