v1.36.1 ·
The file was there the whole time
The release blog refused a post because it cited a file that did not exist. The file existed. It had a line number on the end.
The blog has a guard that checks every path in backticks names a real file. It was added after two releases went out linking to files that had been deleted, and it should stay. But it looked up the whole token. It knew to strip a trailing slash, so directories worked. It did not know about line numbers. So packages/cli/src/compile/adapters/cursor.ts:86 was looked up as a file literally named cursor.ts:86, not found, and the release stopped.
That is not an edge case here. Citing code by line is how this project's own requirements point at evidence. The guard blocked v1.17.0, v1.20.0 and v1.36.0 this way. Each time the way through was the same: hand-write an override that reworded the citation until the guard stopped seeing it. Across those three, it rejected six paths. All six were tracked files.
The fix was filed after the first time and marked "do later", because the workaround was cheap. It was cheap once. Paid on every release that cites code by line, it was not.
What changed
The guard now strips a trailing line reference before it checks the file exists, and only there. Which tokens count as paths at all is unchanged. That rule was built one measured false positive at a time, and loosening it would have been the easy, wrong fix. When the guard does reject a path, it still reports the token as written, line number included, so you can find it.
It accepts a single line, a range, and comma lists of either. Before picking, we counted the shapes across every document in the project: a single line shows up 329 times, a range 262, lists a handful. Anything else after a colon still fails, so a typo still gets caught.
What it cost
About $2. The proof runs on real content: the three documents that forced overrides now pass the guard as written, with none. The v1.36.0 override existed only to reword one citation, so it is gone. The two older ones were full rewrites of published posts, and those stay. Deleting them would change nothing a reader sees.
Nothing changes for anyone who installs the CLI. The guard lives in the website package, which is not published.