diff --git a/app/Tests/Serialization/JsonOptionsResolverTests.cs b/app/Tests/Serialization/JsonOptionsResolverTests.cs
new file mode 100644
index 000000000..5403f894d
--- /dev/null
+++ b/app/Tests/Serialization/JsonOptionsResolverTests.cs
@@ -0,0 +1,49 @@
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
+using AIStudio.TrimSmokeTest;
+
+namespace AIStudio.Tests.Serialization;
+
+///
+/// Checks that all options of the app get their contracts from source generation, never from reflection.
+///
+///
+/// MWAIS0015 refuses options without a TypeInfoResolver while compiling, but cannot tell what the resolver does.
+/// Only contexts throw for a type they do not know. Any other resolver, e.g., a DefaultJsonTypeInfoResolver which
+/// a helper adds to the chain, builds the missing contract by reflection instead, and in a published build, the
+/// code it needs for that may be gone.
+///
+[TestFixture]
+public sealed class JsonOptionsResolverTests
+{
+ private static IEnumerable AllOptions()
+ {
+ TestHost.PrepareStaticState();
+ return AppJsonOptions.FindAll().Select(options => new TestCaseData(options.Value).SetArgDisplayNames(options.Key));
+ }
+
+ [TestCaseSource(nameof(AllOptions))]
+ public void TheOptionsResolveWithContextsOnly(JsonSerializerOptions options)
+ {
+ using (Assert.EnterMultipleScope())
+ {
+ Assert.That(options.TypeInfoResolverChain, Is.Not.Empty);
+ Assert.That(options.TypeInfoResolverChain, Is.All.InstanceOf());
+ }
+ }
+
+ [Test]
+ public void FieldsAndPropertiesOfTheAppAreFound()
+ {
+ TestHost.PrepareStaticState();
+ var names = AppJsonOptions.FindAll().Keys.ToList();
+
+ using (Assert.EnterMultipleScope())
+ {
+ Assert.That(names, Does.Contain("SettingsManager.JSON_OPTIONS"));
+ Assert.That(names, Does.Contain("VisualBriefingJson.Canonical"));
+ Assert.That(names, Has.None.Contains("k__BackingField"));
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/Tests/Tests.csproj b/app/Tests/Tests.csproj
index 5277865b1..ee96038d5 100644
--- a/app/Tests/Tests.csproj
+++ b/app/Tests/Tests.csproj
@@ -45,6 +45,13 @@
+
+
+
+
+