diff --git a/tests/AcDream.Headless.Tests/HeadlessConsoleTests.cs b/tests/AcDream.Headless.Tests/HeadlessConsoleTests.cs index b36cea786..81d1e9f11 100644 --- a/tests/AcDream.Headless.Tests/HeadlessConsoleTests.cs +++ b/tests/AcDream.Headless.Tests/HeadlessConsoleTests.cs @@ -527,7 +527,7 @@ public sealed class HeadlessConsoleTests /// than a decorator only this call site could see. /// [Fact] - public void UnknownVerbProducesTheSameInterfaceTextTheChatBoxShows() + public void UnknownVerbProducesTheSameChatLineTheChatBoxShows() { var operations = new FixtureSessionOperations(); using var credential = new HeadlessCredentialSecret("fixture", "password"); @@ -548,10 +548,16 @@ public sealed class HeadlessConsoleTests SubmitOutcome outcome = host.SubmitConsoleLine("/"); Assert.Equal(SubmitOutcome.UnknownCommand, outcome); + // Owner override 2026-09-07 (register row AD-124): the refusal lands + // in the CHAT scroll, not the SpewBox — the same line the graphical + // chat box shows (ChatCommandRouterFeedbackRoutingTests pins that + // route). The console sees it through OnChat, so the SpewBox stays + // empty. + var chatEntry = Assert.Single(host.Runtime.CommunicationOwner.Chat.Snapshot()); + Assert.Contains("Unknown command:", chatEntry.Text); SpewBoxState spewBox = host.Runtime.CommunicationOwner.SpewBox; spewBox.Tick(host.Runtime.Clock.SimulationTimeSeconds); - SpewBoxEntry entry = Assert.Single(spewBox.Snapshot()); - Assert.Contains("Unknown command:", entry.Text); + Assert.Empty(spewBox.Snapshot()); } // ── HeadlessConsoleSpewBoxPump: server/plugin-driven interface text ──