fix(ui): OP3 re-review residuals R1/R2/R3 (coordinator pass)
R1: the gate script no longer promises a timestamp prefix on the Magic
macro lines — acdream renders no chat timestamps yet (the Display
Timestamps consumer is OP4 scope; no chat-log file exists, TS-69). A
bare light-blue transcript line is the CORRECT gate outcome.
R2: IsGrounded yields null (silent) for a NULL controller in player
mode — the prior pattern returned false and fired the mid-air refusal
retail cannot produce in that state; comments now match the code.
R3: the dormant-ActivePageChanged pin now applies the real stimulus —
every authored tab button on a dormant host must carry NO click handler
(RetailTabBinding.SetClick never ran), which is AD-73's actual dormancy
mechanism; SwitchTo deliberately has no guard.
OP3 is CLOSED: dual APPROVE-WITH-FIXES -> fix round 386076af ->
re-review REOPEN(narrow) -> this pass. Connected gate now READY.
Full Release suite: 12,956 passed / 4 skipped / 0 failed.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
7b60e71b85
commit
cb3346907d
3 changed files with 33 additions and 8 deletions
|
|
@ -108,11 +108,14 @@ for this slice, not a bug.
|
|||
session sees zero lines (everything already at the macro's target).
|
||||
**These six lines are byte-verified `RetailLogTextType.Magic` (0x07),
|
||||
NOT the client-local refusal type** — expect LIGHT BLUE text in the
|
||||
SCROLLING CHAT TRANSCRIPT (not the transient SpewBox overlay), with
|
||||
a timestamp prefix, same as any other Magic-colored system line. If
|
||||
you see bright red text in a transient 5-second overlay instead (the
|
||||
ClientLocal/SpewBox look used by the mid-air refusal and UA/RA
|
||||
above), that is the pre-fix-round bug — report it.
|
||||
SCROLLING CHAT TRANSCRIPT (not the transient SpewBox overlay). Do
|
||||
NOT expect a timestamp prefix: acdream renders no chat timestamps
|
||||
yet (the Display Timestamps consumer is OP4 scope, and there is no
|
||||
chat-log file — TS-69), so a bare light-blue line is CORRECT here
|
||||
(OP3 re-review R1). If you see bright red text in a transient
|
||||
5-second overlay instead (the ClientLocal/SpewBox look used by the
|
||||
mid-air refusal and UA/RA above), that is the pre-fix-round bug —
|
||||
report it.
|
||||
**Known, registered gap (TS-74): acdream has no persistent
|
||||
"turn to face camera" mouse-turning MODE yet, so this button changes
|
||||
stored preferences and sends the wire bit, but you will not see the
|
||||
|
|
|
|||
|
|
@ -811,9 +811,15 @@ internal sealed class RetailInteractionRetainedUiCompositionFactory
|
|||
// into "not grounded", which fired the mid-air message
|
||||
// outside player mode — the opposite of retail and the
|
||||
// opposite of what the old comment here claimed.
|
||||
IsGrounded: () => !d.PlayerMode.IsPlayerMode
|
||||
? (bool?)null
|
||||
: d.PlayerController.Controller is { IsAirborne: false },
|
||||
// R2 (OP3 re-review, 2026-08-11): a NULL controller in
|
||||
// player mode must ALSO yield null (silent) — the prior
|
||||
// `is { IsAirborne: false }` pattern returned false for
|
||||
// null and fired the refusal retail cannot produce.
|
||||
IsGrounded: () =>
|
||||
d.PlayerMode.IsPlayerMode
|
||||
&& d.PlayerController.Controller is { } liveController
|
||||
? !liveController.IsAirborne
|
||||
: (bool?)null,
|
||||
IsUseMouseTurningEnabled: () =>
|
||||
CharacterOptionTable.TryGet(
|
||||
CharacterOptionId.UseMouseTurning,
|
||||
|
|
|
|||
|
|
@ -89,6 +89,22 @@ public class OP2ReworkBlastRadiusConformanceTests
|
|||
host.ActivePageChanged += (_, _) => raised++;
|
||||
|
||||
Assert.False(host.BehaviorActive);
|
||||
|
||||
// R3 (OP3 re-review, 2026-08-11): a subscribe-then-assert-zero pin
|
||||
// passes even with dormancy fully broken. The REAL dormancy
|
||||
// mechanism is that ActivateTabBehavior (via RetailTabBinding.
|
||||
// SetClick) was never called, so the authored tab BUTTONS carry no
|
||||
// click handler — clicking a dormant host's tab can invoke nothing.
|
||||
// SwitchTo itself deliberately has no dormancy guard (a controller
|
||||
// may drive it directly), so the button wiring IS the contract.
|
||||
foreach (UiTabTableEntry tab in host.Tabs)
|
||||
{
|
||||
var button = layout.FindElement(tab.ButtonElementId);
|
||||
Assert.NotNull(button);
|
||||
Assert.False(button!.HandlesClick,
|
||||
$"dormant tab button 0x{tab.ButtonElementId:X8} has a click "
|
||||
+ "handler — import-time activation regressed (AD-73)");
|
||||
}
|
||||
Assert.Equal(0, raised);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue