Fix the storefront & CLI READMEs and guard the analyzer count#281
Merged
Conversation
The nuget.org package README advertised "16 Roslyn analyzers (FCE001-FCE016)", but the package ships 22 (FCE001-FCE022). FCE017-FCE022 were added since the claim was last touched, and the analyzer reference under doc/ already lists all 22. The count is the flagship anti-drift claim on the page every evaluator reads first, so a stale number there is especially corrosive. Refs: #230 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB
The CLI package README and two command strings named commands that do not exist as written: - The renderer commands live under config (fce config renderer add|remove|list), not fce renderer ...; fix the README list and the RendererReferenceSettings summary. - config show prints the raw configuration file verbatim, not a "resolved" view; reword accordingly. - The catalog contract commands (fce catalog update|diff) were absent from the README; add them with a pointer to the versioning guides. - RendererRemoveCommand told users to run the nonexistent fce init; point it at fce config init. Refs: #230 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB
FirstClassErrors.RequestBinder and FirstClassErrors.Cli are not on nuget.org yet (only the core library and Testing shipped 0.1.0-preview.1), so 'dotnet add package ...RequestBinder' and 'dotnet tool install ...Cli' fail for anyone following the docs. Add a short "not yet on nuget.org" note next to every such command on the surfaces visible today — the repo README, the getting-started, request-binder and operational-integration guides, and the core package README — keeping the French translations in sync. The CLI's own package README is left unchanged: it is only visible on nuget.org once the CLI is published, at which point its install command is already valid. Removing these notes is a step for the release that ships these packages. Refs: #230 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB
The package README's flagship bullet ("N Roslyn analyzers in the box
(FCE001-FCENNN)") is hand-maintained and drifted: it sat at 16
(FCE001-FCE016) long after the code reached 22 (FCE001-FCE022). A count a
human retypes on every rule change is a count that rots.
Add tools/analyzer-count-check/check-analyzer-count.sh: it derives the
count and the low/high ids from FirstClassErrors.Analyzers/DiagnosticIds.cs
(the source of truth) and fails if the README's number or either range
endpoint disagrees. Numbering is a stable handle, not a contiguous
contract, so the count is the number of declared ids and the range is
their numeric min-max — a retired id in the middle keeps the check
correct. Pure POSIX shell over two tracked files, no toolchain.
Wire it as a third job in the analyzers workflow so the guard runs on
every push and pull request touching main.
Refs: #230
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB
Reefact
enabled auto-merge
July 21, 2026 21:50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The three first-contact surfaces flagged in #230 — the package README, the CLI README, and the repo install instructions — named commands, packages, and an analyzer count that do not match what ships. This corrects them, marks the two not-yet-published packages as unreleased across every user-facing surface (EN + FR), and adds a CI guard so the analyzer count cannot silently drift again.
Type of change
Changes
FirstClassErrors/README.nuget.mdadvertised "16 Roslyn analyzers (FCE001–FCE016)"; the package actually ships 22 (FCE001–FCE022). Corrected to matchDiagnosticIds.cs, which the analyzer reference doc already lists in full.FirstClassErrors.Cli/README.nuget.mdlistedfce renderer …(real path:fce config renderer add|remove|list), describedconfig showas printing the "resolved" configuration (it prints the raw file), and omitted the catalog commands. Fixed the command tree, rewordedconfig show, and addedfce catalog update/fce catalog diffwith a pointer to the catalog-versioning guides. Also fixed the runtime message inRendererRemoveCommand(fce init→fce config init) and theRendererReferenceSettingssummary.FirstClassErrors.RequestBinderandFirstClassErrors.Cliare not on nuget.org yet (only the core library and Testing shipped0.1.0-preview.1), so their install commands fail today. Added a short "not yet on nuget.org" note beside every such command on the surfaces visible now — repo README, the getting-started / request-binder / operational-integration guides, and the core package README — keeping the French translations in sync. The CLI's own package README is intentionally left as-is: it is only visible on nuget.org once the CLI is published, at which point its install command is already valid.tools/analyzer-count-check/check-analyzer-count.sh: it derives the count and the low/highFCExxxids fromDiagnosticIds.csand fails if the README bullet's number or either range endpoint disagrees. Wired as a third job in theanalyzersworkflow. Pure POSIX shell over two tracked files, no toolchain.Testing
dotnet build FirstClassErrors.sln— 0 warnings, 0 errorsdotnet test FirstClassErrors.sln— all 10 test projects green (1434 passed, 0 failed)FirstClassErrors.Analyzers.UnitTests) — 132 passedFCE099vsFCE022) is altered.Documentation
doc/updateddoc/handwritten/for-users/README.fr.md) updated if user-facing behavior changedArchitecture decisions
Related issues
Closes #230
🤖 Generated with Claude Code
https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB
Generated by Claude Code