Skip to content

docs: realign guides and CONTRIBUTING with the shipped contracts#292

Merged
Reefact merged 1 commit into
mainfrom
claude/issue-231-discussion-wfrh45
Jul 23, 2026
Merged

docs: realign guides and CONTRIBUTING with the shipped contracts#292
Reefact merged 1 commit into
mainfrom
claude/issue-231-discussion-wfrh45

Conversation

@Reefact

@Reefact Reefact commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

Fix the four documentation/contract drifts surfaced by the 2026-07-20 architecture audit: each is a place where following the docs produced a wrong result. They are realigned with the shipped API, the linter's scope list, the real anchors, and the release tooling's actual semantics. English and French are kept in lockstep for every touched file.

Type of change

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

Changes

  • DeterministicTesting.en.md / .fr.mdClock.UseAny() and InstanceIds.UseAny() are parameterless; corrected the stale "both take an optional seed" claim to point at Dummies.Any.Reproducibly(...), which is how reproducibility actually flows since the ADR-0026 rebase.
  • CONTRIBUTING.fr.md — added the missing binder and dummies commit scopes so the French scope table matches the English one and the enforcing commit-lint (7 scopes, not 5).
  • 20 French user guides — fixed the dead footer anchor README.fr.md#-étapes-suivantes#-documentation (the heading was renamed; this is the French mirror of the English fix 7cf826a, which was never applied to the FR pages). The two dated audit files that quote the dead anchor as a finding are intentionally left unchanged.
  • CONTRIBUTING.md / CONTRIBUTING.fr.md — rewrote the commit-scope paragraph: the scope now routes a commit to a release train (tools/trains.sh: lib / cli / dum), so an unscoped feat:/fix: matches no train and is silently dropped from that train's release notes and changelog. Documented the mapping, linked AddingAReleaseTrain, and warned about the unscoped-commit consequence. Also refreshed the stale future-tense "Adoption" paragraph now that the commit-msg hook and CI check already exist.

Testing

Documentation-only change (Markdown; no code, analyzers, or tooling touched), so no build or test suite was run:

  • dotnet build FirstClassErrors.sln — not run (no code change)
  • dotnet test FirstClassErrors.sln — not run (no code change)
  • Analyzer tests pass (FirstClassErrors.Analyzers.UnitTests) — not run (no analyzer change)

Verified instead against the tree: no optional seed / graine optionnelle remains; the FR scope table now has 7 rows matching the linter list; 0 dead #-étapes-suivantes anchors remain in the user guides (25 now point at #-documentation); and the AddingAReleaseTrain links resolve from both file locations.

Documentation

  • Public API / error documentation updated
  • README / doc/ updated
  • French translation updated — EN and FR kept in lockstep for every touched file (DeterministicTesting, CONTRIBUTING, and the 20 user guides). README.fr.md itself is not among the touched files.
  • 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-____

The changes only realign documentation with decisions and tooling already in place (ADR-0026 for UseAny reproducibility; the release-train partition in tools/trains.sh). Advisory follow-up, not in this PR: making commit-lint require a scope on feat:/fix: — the mechanical closure of the footgun this PR documents — would be a behaviour change worth its own ADR.

Related issues

Closes #231


🤖 Generated with Claude Code


Generated by Claude Code

Four drifts surfaced by the 2026-07-20 architecture audit, each verified
against the tree:

- DeterministicTesting (en+fr): Clock.UseAny()/InstanceIds.UseAny() are
  parameterless; reproducibility flows through Dummies.Any.Reproducibly(...),
  not an "optional seed".
- CONTRIBUTING.fr: add the missing `binder` and `dummies` commit scopes so
  the French list matches the English one and commit-lint (7 scopes).
- French user guides: fix the dead footer anchor
  README.fr.md#-etapes-suivantes to #-documentation (FR mirror of 7cf826a).
- CONTRIBUTING (en+fr): document that a commit's scope routes it to a release
  train (tools/trains.sh) and that an unscoped feat:/fix: is silently dropped
  from the release notes and changelog; refresh the stale future-tense
  "Adoption" paragraph now that the hook and CI check exist.

Refs: #231
@Reefact
Reefact merged commit 1164493 into main Jul 23, 2026
16 checks passed
@Reefact
Reefact deleted the claude/issue-231-discussion-wfrh45 branch July 23, 2026 09:37
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 four confirmed documentation/contract drifts

2 participants