Of the source-text assertions on Markdown, shell, Makefile, and workflow files, most pinned wording: they failed on a rewording and passed when the document was wrong. Each was classified by what it protects. Removed as prose pins (24): feature-name phrases in the usage guide, README section headings, "latest release", and similar sentences whose wording carries no contract. Replaced with derived checks that fail on real drift and tolerate rewording, each verified by a mutation: - The descriptor contract's rendering bounds and identifier pattern are read from ProviderDescriptor.js and required in the proposal. Changing maximumActions to 48 without the doc fails; rewording the sentence passes. - "all 77 providers" in README and the usage guide is now derived from the icon check's registry list, so a registry change that forgets the docs fails. #316 had to update these pins by hand. - Six hand-listed Makefile wiring pins became one loop over scripts/test_*.sh, so a new unwired check script fails. - Two SHA-specific action pins became a property check: every `uses:` in every workflow must pin a full commit SHA. A pinned bump passes; an unpinned `actions/checkout@v4` fails. - install.sh's three spelling pins became an execution of the real script with recording stand-ins for make, kpackagetool6, and systemctl. Installing the source tree instead of the built package fails. Kept, with reasons: README install commands and the troubleshooting command are user-facing instructions whose exact text is the contract, and the reject_* assertions express an absence with no executable equivalent. A duplicate checksum pin was dropped. Documentation impact: none; contributor-facing check behavior only. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
5 files changedLine totals unavailable