fix #FA4-mechanism-SF-6: assert (not just print) the live-DAT checkbox labels and Open/Close captions

SocialPanelLiveMountProbeTests wrote the four checkbox labels and the two
Open/Close captions to the console with no assertion, yet the FA4 ledger's
live-DAT paragraph cited them as verified -- the same finding FA3's own
mechanism SF-3 raised for a different table ("printed but never asserted
-- deserves a real assertion, not just a hope"). Now asserts each label is
non-null/non-empty and the two captions equal the exact retail strings
"Open"/"Close". Env-gated (ACDREAM_PROBE_LIVE_MOUNT=1, real installed
DATs) -- inert in this session's build/test run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-12 07:33:50 +02:00
parent 300d8189f6
commit 55b17e15fd

View file

@ -181,7 +181,10 @@ public sealed class SocialPanelLiveMountProbeTests
// Checkbox labels/tooltips (0x23000003) and the Open/Close caption
// pair (0x23000001) — the two string tables SocialFellowshipPageController
// resolves at Bind time (lane A §4.3).
// resolves at Bind time (lane A §4.3). Fix-round SF-6: these were
// previously PRINTED but never asserted even though the ledger's
// live-DAT paragraph cited them as verified — the same finding
// FA3's own mechanism SF-3 raised for a different table.
foreach (string retailName in new[]
{
"IgnoreFellowshipRequests", "FellowshipAutoAcceptRequests",
@ -190,15 +193,19 @@ public sealed class SocialPanelLiveMountProbeTests
{
string? label = strings.Resolve(0x23000003u, DatStringResolver.ComputeHash($"ID_PlayerOption_{retailName}"));
Console.WriteLine($"[socialprobe] checkbox label ID_PlayerOption_{retailName} -> '{label}'");
Assert.False(
string.IsNullOrEmpty(label),
$"checkbox label ID_PlayerOption_{retailName} (table 0x23000003) did not resolve.");
}
foreach (string key in new[]
{
"ID_Fellowship_OpenFellowshipButtonText", "ID_Fellowship_CloseFellowshipButtonText",
})
{
string? label = strings.Resolve(0x23000001u, DatStringResolver.ComputeHash(key));
Console.WriteLine($"[socialprobe] fellowship caption {key} -> '{label}'");
}
string? openLabel = strings.Resolve(
0x23000001u, DatStringResolver.ComputeHash("ID_Fellowship_OpenFellowshipButtonText"));
string? closeLabel = strings.Resolve(
0x23000001u, DatStringResolver.ComputeHash("ID_Fellowship_CloseFellowshipButtonText"));
Console.WriteLine($"[socialprobe] fellowship caption ID_Fellowship_OpenFellowshipButtonText -> '{openLabel}'");
Console.WriteLine($"[socialprobe] fellowship caption ID_Fellowship_CloseFellowshipButtonText -> '{closeLabel}'");
Assert.Equal("Open", openLabel);
Assert.Equal("Close", closeLabel);
// Full end-to-end Bind against the PRODUCTION mount (the same
// resolver/scrollbar/frame wiring MountSocialPanel does) — proves