refactor(testing): rebase arbitrary values on Dummies - #202
Merged
Conversation
Reefact
force-pushed
the
claude/dummies-firstclasserrors-tests-ebuofy
branch
2 times, most recently
from
July 19, 2026 23:15
b0af163 to
424df42
Compare
Record the decision to source FirstClassErrors.Testing's arbitrary values from Dummies and mark ADR-0006 Superseded by it; the decision was accepted this session. Numbered 0026 after the binder expression-tree selectors (0023), the editorial-refactoring exception (0024), and the regex string generation (0025) landed on main. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XqQfM3Wp4CQpDbfrh647WK
Reefact
force-pushed
the
claude/dummies-firstclasserrors-tests-ebuofy
branch
from
July 19, 2026 23:29
424df42 to
081801e
Compare
Remove the FirstClassErrors.Testing.Any facade and its private seedable ArbitrarySource; every arbitrary value now comes from the Dummies generator library instead (ADR-0026). The error vocabulary Any exposed becomes named domain factories - ErrorCodeFactory, DiagnosticMessageFactory, ShortMessageFactory, DetailedMessageFactory, TransienceFactory, ErrorOriginFactory, InteractionDirectionFactory - each returning the value directly and drawing through Dummies' ambient context; arbitrary primitives come from Dummies.Any.*().Generate(). Clock.UseAny and InstanceIds.UseAny draw from that same ambient context, so a single Dummies.Any.Reproducibly scope freezes them together. FirstClassErrors.Testing references Dummies privately and embeds Dummies.dll in its package while Dummies is not yet on NuGet. Add a Testing.UnitTests project for the seam-reproducibility and meaningful-enum contracts, migrate the unit-test call sites, and update the arbitrary-test-values guide (English and French) and the package README. Testing.Any and its Reproducibly runner are removed; consumers use Dummies.Any.* with .Generate() and Dummies.Any.Reproducibly(...). At 0.1.0-preview this pre-1.0 removal ships without a breaking-change marker. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XqQfM3Wp4CQpDbfrh647WK
Reefact
force-pushed
the
claude/dummies-firstclasserrors-tests-ebuofy
branch
from
July 19, 2026 23:38
081801e to
23ad6ca
Compare
Reefact
enabled auto-merge
July 19, 2026 23:40
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
FirstClassErrors.Testingnow sources every arbitrary test value fromDummiesinstead of maintaining a private pseudo-random engine. TheAnyfacade andArbitrarySourceare removed; the error vocabulary is exposed as named domain factories (ErrorCodeFactory,TransienceFactory,DiagnosticMessageFactory, …) that return the value directly, drawing from Dummies' ambient reproducible context. This realizes ADR-0026 and unifies the repository under a single seeded arbitrary-value source. At0.1.0-previewthis pre-1.0 removal ships without a breaking-change marker.Type of change
Changes
FirstClassErrors.Testing.Anystatic facade and itsArbitrarySourceengine — replaced byDummies.Anyand its ambient context.Anyand itsReproduciblyrunner are gone; useDummies.Any.*().Generate()for primitives andDummies.Any.Reproducibly(...)to replay a seeded run (pre-1.0 preview, so no breaking-change ceremony).FirstClassErrors.Testing, eachAny()returning the value directly (drawn from Dummies' ambient context):ErrorCodeFactory.Any()— error codes shaped likeANY_CODE_7F3A9CDiagnosticMessageFactory.Any(),ShortMessageFactory.Any(),DetailedMessageFactory.Any()— arbitrary messagesTransienceFactory.Any(),InteractionDirectionFactory.Any()— meaningful enums (never theUnknownsentinel);ErrorOriginFactory.Any()— uniform (no sentinel to exclude)IAny<T>generator is added per factory only where a call site needs it (none required today)Clock.UseAny()andInstanceIds.UseAny()draw from Dummies' ambient context, so a singleDummies.Any.Reproduciblyscope freezes primitives, factories, clock, and instance ids together.FirstClassErrors.TestingreferencesDummiesprivately and embedsDummies.dllin its package whileDummiesis not yet on NuGet (verified:Dummies.dllinlib/, no phantom NuGet dependency emitted). To be switched to a NuGetPackageReferenceonce Dummies ships (ADR-0026 follow-up).Any.ErrorCode()→ErrorCodeFactory.Any(),Any.Int()→Dummies.Any.Int32().Generate(),Any.Reproducibly→Dummies.Any.Reproducibly).FirstClassErrors.Testing.UnitTests— contract tests for the seam reproducibility (Clock/InstanceIds underDummies.Any.Reproducibly) and the meaningful-enum factories (neverUnknown).Testing
dotnet build FirstClassErrors.sln— 0 warnings, 0 errorsdotnet test FirstClassErrors.sln— all greenFirstClassErrors.Testing.UnitTests(new) — seam reproducibility + never-Unknowncontractsdotnet packdry-run —Dummies.dllembedded inlib/, noDummiesdependency emittedDocumentation
doc/updated — arbitrary-test-values user guide rewritten (two-source model:Dummiesfor primitives, domain factories for the error vocabulary)ArbitraryTestValues.fr.mdand the ADR French versionArchitecture decisions
FirstClassErrors.TestingonDummiesADR-0026 records the decision to rebase
FirstClassErrors.TestingonDummies, realizing the follow-up actions anticipated by ADR-0006 (extract the generic value engine) and ADR-0011 (decide whether Testing re-bases on Dummies). It was numbered 0026 after ADR-0023 (binder expression-tree selectors), ADR-0024 (editorial refactoring), and ADR-0025 (regex string generation) landed onmain.🤖 Generated with Claude Code
https://claude.ai/code/session_01XqQfM3Wp4CQpDbfrh647WK