Skip to content

docs: expand and reorder the FAQ into a decision gateway#136

Merged
Reefact merged 1 commit into
mainfrom
agent/improve-faq
Jul 15, 2026
Merged

docs: expand and reorder the FAQ into a decision gateway#136
Reefact merged 1 commit into
mainfrom
agent/improve-faq

Conversation

@Reefact

@Reefact Reefact commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Summary

Rework the FAQ so it answers the real adoption objections a newcomer has, not only conceptual clarifications. Adds four practical questions, reorders the existing ones into three implicit movements, and sharpens several answers. English and French stay in sync.

Type of change

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

Changes

  • Add four practical questions: does FirstClassErrors replace logging; can I adopt it incrementally; how to handle an exception from a third-party library; can error messages be shown to users.
  • Reorder the questions into three implicit movements: why use the library → choosing between exceptions/Outcome/technical errors → documenting and diagnosing.
  • Reword "enriches the Error carried by that exception" to "attaches a structured Error to that exception" (the Error is not a standard field of a .NET exception).
  • Scope the documentation rule to "every first-class error you define"; keep the FCE009 reference.
  • Add the concrete factory benefit over new: it avoids repeating codes, messages, and metadata across use cases.
  • Rename "Why can a domain error contain only domain errors?" to "How do I nest the different error categories?" and link the dedicated Error Taxonomy and Composition page.
  • The third-party-exception answer states the first-class error captures the failure's meaning and does not store the caught exception object (DiagnosableException carries only an Error; Error.InnerErrors nests Errors, not exceptions).
  • Keep doc/FAQ.fr.md in sync with doc/FAQ.en.md.

Testing

Documentation-only change; no source code touched, so no build or test was run.

  • dotnet build FirstClassErrors.sln
  • dotnet test FirstClassErrors.sln
  • Analyzer tests pass (FirstClassErrors.Analyzers.UnitTests)

Documentation

  • Public API / error documentation updated
  • README / doc/ updated
  • French translation updated (doc/FAQ.fr.md kept in sync with doc/FAQ.en.md)
  • No documentation change required

Architecture decisions

  • No architectural decision in this pull request
  • New decision recorded — ADR drafted as Proposed: ADR-____
  • Supersedes an existing ADR — successor proposed, status not flipped: ADR-____
  • ⚠️ Conflicts with an existing ADR — flagged for the maintainer: ADR-____

Related issues

None — editorial documentation improvement.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LUaMS5EHzAdQHBJzrYvKTj


Generated by Claude Code

Turn the FAQ from a concept-clarifier into a page that answers the real
adoption objections a newcomer has.

Add four practical questions:

- Does FirstClassErrors replace logging? (no — it structures errors; the
  logging system records occurrences)
- Can I adopt FirstClassErrors incrementally? (yes — domain or use case
  at a time, no global migration)
- How do I handle an exception from a third-party library? (model it at
  the boundary when it is a stable failure; do not first-class every one)
- Can error messages be shown to users? (ShortMessage/DetailedMessage are
  the controlled public messages; DiagnosticMessage stays internal)

Reorder the questions into three implicit movements: why use the library,
choosing between exceptions/Outcome/technical errors, then documenting and
diagnosing.

Sharpen a few answers:

- Say the library attaches a structured Error to the exception, rather
  than "enriches the Error carried by" it (the Error is not a standard
  field of a .NET exception).
- Scope the documentation rule to "every first-class error you define".
- Give the concrete factory benefit over new: it avoids repeating codes,
  messages, and metadata across use cases.
- Rename the domain-nesting question to "How do I nest the different error
  categories?" and link the dedicated taxonomy page.

The third-party-exception answer states that the first-class error
captures the failure's meaning and does not store the caught exception
object: DiagnosableException carries only an Error, and Error.InnerErrors
nests Errors, not exceptions.

The English and French pages stay in sync.
@Reefact
Reefact enabled auto-merge July 15, 2026 23:53
@Reefact
Reefact merged commit 4bc3bdd into main Jul 15, 2026
12 checks passed
@Reefact
Reefact deleted the agent/improve-faq branch July 15, 2026 23:59
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.

2 participants