Skip to content

ADR: backfill the foundational decisions as Proposed ADRs #228

Description

@Reefact

Problem

17 of 26 ADRs govern the peripheral packages (RequestBinder 10, Dummies/Testing 7) while the project's foundational decisions have no record: the Outcome/Error model and the exception-vs-outcome duality, the netstandard2.0 target for shipped libraries, the class-never-struct value-object rule (CLAUDE.md only), the FCE diagnostic-ID scheme and the analyzer-bundled-in-main-package choice, GenDoc's extraction-by-runtime-reflection approach (rationale currently trapped in a SuppressMessage justification in the Worker), and the bilingual EN-canonical/FR-translation documentation policy.

Impact

ADR-0004 makes the ADR base the artifact every PR is checked against. A PR that converts ErrorCode to a struct, adds a runtime dependency to the core, or abandons the FR mirror contradicts no accepted ADR — the governance loop cannot fire on the project's most important invariants.

Direction

  • Draft ~6 ADRs as Proposed, each with a Context sentence stating explicitly that it records a decision made before the ADR practice began (first ADR: 2026-07-10), so history is not falsified.
  • Most rationale already exists (DesignPrinciples.en.md, FAQ.en.md, CLAUDE.md, code comments) — this is relocation into the decision record, not invention.
  • Per AGENTS.md, agents draft; @reefact accepts.

Acceptance criteria

  • Proposed ADRs exist for (at least): the Outcome model + exception transport; the netstandard2.0 target; the class-not-struct rule; the FCE ID scheme + analyzer bundling; GenDoc reflection extraction; the bilingual policy.
  • Each is indexed in adr/README.md with its FR twin, and states it records a pre-practice decision.

Context

Surfaced by the 2026-07-20 architecture, design & ecosystem audit (doc/handwritten/for-maintainers/audit/2026-07-20-firstclasserrors-architecture-and-design-audit.md, §6.5/§14-C1; branch claude/firstclasserrors-audit-83gap7).

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions