You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Route B, step 1: hand-written axes list and the JSON options probe sweep #121
The first step of route B from #105 (the 2026-10-18 comment): no tooling, a hand-written axes list and probe classes as ordinary MSTest sweeps.
Scope
test/oracles/axes.md: one section per surface family of claims.json (literals and JSON; TypeConverter, configuration and web binding; EF Core; hosting and AOT). Per axis its values, the test that already varies it, and the pairs no test varies yet.
JsonOptionsProbeTests in the conventions project: every discovered range, multirange and value set type × how it is declared {union, sealed variant, IRange<T>/IValueSet<T> interface, object, property of a record, dictionary value} × JsonSerializerOptions {default, camelCase, snake_case, ReferenceHandler.Preserve, a source-generated context, NumberHandling.AllowReadingFromString}. Oracle: the wire form is the type's literal (or array) and the round trip is the same value, or the refusal docs/serialization.md promises. Disagreements go through Candidates.Verdict.
Registered in oracles.json, named in the heldBy of the J* claims it holds, with a seed under test/oracles/seeds/ proven by dotnet run tools/oracles.cs seeds.
Any disagreement that is not a harness mistake becomes a candidate with its own issue (bug, found-by/oracle).
Why
#114, #116 and #117 were each found by a one-off combination of consumer settings that no test kept. The probe sweeps keep the product.
Implemented on branch test/json-options-probe. Result of the first run: 52 rows, 13,560 checks, no disagreement with the documented wire form across the six declarations × six option sets. The only lines were a harness mistake (ReferenceHandler.Preserve wraps a List<object> itself in {"$id","$values"}). No candidate registered. The pairs axes.md lists as unvaried are the next two probe classes from the #105 comment: entry point × culture × type, and literal corpus × entry point against psql.
Activity
CaffeinatedCoder commentedon Oct 17, 2026
Implemented on branch
test/json-options-probe. Result of the first run: 52 rows, 13,560 checks, no disagreement with the documented wire form across the six declarations × six option sets. The only lines were a harness mistake (ReferenceHandler.Preservewraps aList<object>itself in{"$id","$values"}). No candidate registered. The pairsaxes.mdlists as unvaried are the next two probe classes from the #105 comment: entry point × culture × type, and literal corpus × entry point againstpsql.