The image build runs the suite without docs/, which .dockerignore
excludes, so asserting that each note's spec exists on disk failed
there and blocked the image. The test now checks a path's shape;
check-changelog.ts checks the file exists, the same split the commit
refs already have for CI's shallow checkout.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
First-run setup marks a new reader up to date, since changes mean nothing
before you've used the app. An absent marker therefore means an install
from before the changelog, which is what lets the launch be announced to
existing readers once.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Forty-four reader-facing entries and ten release notes, backfilled from
the history and the specs, each naming the commit or range it describes.
Tests pin the shape; a script checks the refs exist, since CI's shallow
checkout can't.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>