Skip to content

refactor(dummies): name the replay guidance and its snippet distinctly - #303

Merged
Reefact merged 1 commit into
mainfrom
claude/generatemany-terminal-method-oxor0f
Jul 26, 2026
Merged

refactor(dummies): name the replay guidance and its snippet distinctly#303
Reefact merged 1 commit into
mainfrom
claude/generatemany-terminal-method-oxor0f

Conversation

@Reefact

@Reefact Reefact commented Jul 26, 2026

Copy link
Copy Markdown
Owner

Summary

ReplayHint and ReplayInstruction name a whole and its part — one sentence embedding the code a reader copies — but neither name advertised the containment, nor which was which. The weight was inverted too: the whole was a "hint" (which undersells an exact, verbatim sentence) while the part carried the stronger "instruction". Renamed to ReplayGuidance and ReplaySnippet, so prose contains code reads without a comment. No behavioural change: every generated message is byte-identical.

Type of change

  • Refactoring
  • Breaking change — public parameter renamed; see note below on why this costs nothing today
  • Documentation

Changes

  • ReplayHintReplayGuidance, PartialReplayHintPartialReplayGuidance (internal, on RandomSource and both implementations).
  • ReplayInstructionReplaySnippet (the private helper and the ambient-state property).
  • Any.UseSeed(int, string replayInstruction)replaySnippet, with the PublicAPI baselines updated on both TFMs.
  • The same rename in Dummies.Xunit's private helper and in both test suites.
  • XML docs now state the whole/part relation outright instead of leaving it to be inferred, and Any.UseSeed(int, string) gains a worked example showing the snippet and the sentence it lands in.
  • ADR-0038 amended in place, EN and FR.
  • User docs and the two package readmes follow the same vocabulary.

Why the public rename is free

Dummies has never shipped: both PublicAPI.Shipped.txt files are empty, there is no dum-v* tag, and no PackageValidationBaselineVersion is set. No consumer can be affected, which is exactly the pre-1.0 latitude ADR-0011 and ADR-0038 rely on. The box above is ticked because the signature changes, not because anyone is broken.

On amending an accepted ADR

ADR-0038 is Accepted, and the repository's rule is that an accepted ADR is not edited in place. This edit was authorised by @Reefact in the session on the grounds that the terminology is not the decision. Its Decision, Rationale, Alternatives and Consequences are unchanged in substance — only the two words naming the concepts move, including one section heading (Phrase the ambient hint neutrallyPhrase the ambient guidance neutrally). If you would rather this were a superseding ADR than an in-place amendment, say so and I will restructure it.

French

The French docs keep « indication de rejeu » for the sentence — the right French word, where a calque like « guidage » would read as a guidance system — and move the fragment to « extrait de rejeu », the usual rendering of snippet.

Testing

  • dotnet build FirstClassErrors.sln — succeeds, no warnings
  • dotnet test FirstClassErrors.sln — 11 suites, 1559 tests, 0 failures
  • Analyzer tests pass (FirstClassErrors.Analyzers.UnitTests) — 132 passed, as part of the solution run

That the behaviour is unchanged is not merely asserted: the pre-existing tests pin the exact message text ("The arbitrary values were seeded with 1234", "Any.Reproducibly(1234") and pass untouched. A repository-wide grep confirms no occurrence of ReplayHint, ReplayInstruction, replayInstruction, "replay instruction" or « instruction de rejeu » remains.

Not run here: the net472 leg, as before — there is no Mono on the Linux legs, so the framework-floor job proves it.

Documentation

  • Public API / error documentation updated
  • README / doc/ updated
  • French translation updated if user-facing behavior changed

Architecture decisions

  • No architectural decision in this pull request

ADR-0038 is touched, but for vocabulary only — no decision is created, superseded or contradicted.

Related issues

Refs #226 — follow-up to #300, which introduced the two concepts.


Generated by Claude Code

The two concepts are a whole and its part -- one sentence embedding the
code a reader copies -- but ReplayHint/ReplayInstruction advertised
neither the containment nor which was which. The weight was inverted too:
the whole was a "hint" (which undersells an exact, verbatim sentence)
while the part carried the stronger "instruction".

Rename to ReplayGuidance and ReplaySnippet. Prose contains code, so the
containment now reads without a comment, and "guidance" no longer suggests
the sentence is approximate. The XML docs state the relation outright
rather than leaving it to be inferred.

The public parameter follows (replayInstruction -> replaySnippet): Dummies
has never shipped -- both PublicAPI.Shipped.txt files are empty and no
dum-v tag exists -- so the surface can still be named right at no cost to
any consumer.

ADR-0038 is amended in place, EN and FR. Its decision, rationale,
alternatives and consequences are untouched; only the vocabulary naming
the two concepts changes, which is terminology rather than the decision
itself. French keeps "indication de rejeu" for the sentence and moves the
fragment to "extrait de rejeu".

No behavioural change: every generated message is byte-identical.

Refs: #226
@Reefact
Reefact merged commit 153693d into main Jul 26, 2026
16 checks passed
@Reefact
Reefact deleted the claude/generatemany-terminal-method-oxor0f branch July 26, 2026 14:19
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