Skip to content

Fix the storefront & CLI READMEs and guard the analyzer count#281

Merged
Reefact merged 6 commits into
mainfrom
claude/issue-230-discussion-xgs64b
Jul 21, 2026
Merged

Fix the storefront & CLI READMEs and guard the analyzer count#281
Reefact merged 6 commits into
mainfrom
claude/issue-230-discussion-xgs64b

Conversation

@Reefact

@Reefact Reefact commented Jul 21, 2026

Copy link
Copy Markdown
Owner

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

  • Bug fix
  • New feature
  • Breaking change
  • Refactoring
  • Analyzer / diagnostic change
  • Tests
  • Documentation
  • Build / CI / tooling

Changes

  • Analyzer count. FirstClassErrors/README.nuget.md advertised "16 Roslyn analyzers (FCE001FCE016)"; the package actually ships 22 (FCE001FCE022). Corrected to match DiagnosticIds.cs, which the analyzer reference doc already lists in full.
  • CLI command tree. FirstClassErrors.Cli/README.nuget.md listed fce renderer … (real path: fce config renderer add|remove|list), described config show as printing the "resolved" configuration (it prints the raw file), and omitted the catalog commands. Fixed the command tree, reworded config show, and added fce catalog update/fce catalog diff with a pointer to the catalog-versioning guides. Also fixed the runtime message in RendererRemoveCommand (fce initfce config init) and the RendererReferenceSettings summary.
  • Unpublished packages. FirstClassErrors.RequestBinder and FirstClassErrors.Cli are not on nuget.org yet (only the core library and Testing shipped 0.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.
  • Count guard. Added tools/analyzer-count-check/check-analyzer-count.sh: it derives the count and the low/high FCExxx ids from DiagnosticIds.cs and fails if the README bullet's number or either range endpoint disagrees. Wired as a third job in the analyzers workflow. Pure POSIX shell over two tracked files, no toolchain.

Testing

  • dotnet build FirstClassErrors.sln — 0 warnings, 0 errors
  • dotnet test FirstClassErrors.sln — all 10 test projects green (1434 passed, 0 failed)
  • Analyzer tests pass (FirstClassErrors.Analyzers.UnitTests) — 132 passed
  • The new guard script was exercised locally: it passes on the current tree, and fails as expected when the count (16 vs 22) or a range endpoint (FCE099 vs FCE022) is altered.

Documentation

  • Public API / error documentation updated
  • README / doc/ updated
  • French translation (doc/handwritten/for-users/README.fr.md) updated if user-facing behavior changed
  • No documentation change required

Architecture decisions

  • No architectural decision in this pull request

Related issues

Closes #230

🤖 Generated with Claude Code

https://claude.ai/code/session_01773Snh91KveG8SCwPQ9mtB


Generated by Claude Code

claude and others added 6 commits July 21, 2026 21:04
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
Reefact enabled auto-merge July 21, 2026 21:50
@Reefact
Reefact merged commit e07016f into main Jul 21, 2026
16 checks passed
@Reefact
Reefact deleted the claude/issue-230-discussion-xgs64b branch July 21, 2026 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docs: fix the storefront READMEs — analyzer count, CLI command tree, dead install commands

2 participants