- docs/research/2026-08-12-campaign-fa-test-script.md: the user's connected-gate script for FA3 -- open paths (F3/F4 + tab switch), gmPanelUI exclusivity vs sibling panels, tab switching, all four pages' expected shells/empty states, Friends/Squelch read-only expectations + the D1 INERT buttons, what to report, what's explicitly out of scope (FA4/FA5/FA6/D1's deferred wire). - Plan ledger: FA3 row filled in with commit SHAs, totals (13,233/4/0, 13,237 total, +18 over FA2's close), the tab-table correction finding, and the reverted unrelated fixture drift note. Campaign status line updated from "FA3 in flight" to implementation-complete pending review + gate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
8.8 KiB
8.8 KiB
Campaign FA connected-gate test script
Status: FA3 owes its connected gate. Launch with ACDREAM_LIVE=1
against the local ACE server (testaccount / +Acdream). Anything marked
INERT is authored and clickable but deliberately does nothing yet —
that is the correct, contracted behavior for this slice (D1), not a bug.
FA3 is the panel SHELL only: mount, F3/F4 open paths, tab switching, all four pages' empty states, and Friends/Squelch read-only lists. Fellowship roster rows, the create-fellowship dialog, live vitals, and every Allegiance swear/break/kick action are FA4/FA5 scope — do not report their absence here.
FA3 — the social panel shell
Opening the panel — F3/F4, keyboard only
- Press F3. The social panel opens on its Allegiance tab (the authored default tab — NOT Friends, despite Friends being drawn left-most on the tab strip in some sort orders; Allegiance is retail's own authored default entry). No toolbar button opens this panel — retail authors none (lane A §6.1) — so there is nothing to click for this step besides the keybind itself.
- Press F3 again while the panel is open and already on the
Allegiance tab. The panel closes — same toggle-closes-on-repeat-press
shape as every other
Toggle*Panelaction (e.g. F11/Options, Spellbook). - Press F4. The social panel opens directly on its Fellowship tab (F4 switches AND opens in one press, even if the panel was closed).
- With the panel open on Fellowship, press F3. The panel does NOT close — it switches to the Allegiance tab (F3 is scoped to its own tab, not a blanket close). Symmetrically, pressing F4 while open on Allegiance switches to Fellowship rather than closing.
- Click the panel's own close (X) button, top-right of the window chrome. The panel closes — same action as a repeat F3/F4 press on the already-active tab.
- Drag the window by its border/chrome; resize it from the BOTTOM
edge only. Same shared
gmPanelUIgeometry policy as every sibling main panel (Options, Character, Inventory, Spellbook, the indicator-detail panels): draggable, resizable from the bottom edge only, remembers its height across a close/reopen within the session.
Exclusivity vs sibling panels
- Open Character Info (or Inventory, or Options), then press F3.
The other panel closes and the social panel opens on Allegiance — the
SAME retail
gmPanelUIone-active-panel-at-a-time behavior every sibling panel already has (RetailPanelUiController.RegisterMainPanelshares one geometry rectangle across all ten registered main panels). - With the social panel open, open Character Info. The social panel closes. Confirms the exclusivity is bidirectional, not just "opening the social panel closes others."
Tab switching
- Click each of the four tabs (Allegiance, Fellowship, Friends, Squelch — left-to-right authored order is Friends, Allegiance, Fellowship, Squelch; only ONE tab is highlighted "open" at a time). Each switches the visible page; exactly one page is visible at a time. No crash, no stuck state, switching back and forth repeatedly is safe.
- Note the tab captions read correctly — "Friends", "Allegiance", "Fellowship", "Squelch" — not blank. A blank caption on any tab button would be the #375 missing-string-resolver class of bug; report it immediately if seen.
Fellowship page — empty state
- On a character with NO fellowship (the default state), open the Fellowship tab. Expect: an editable fellowship-name text field, a Create Fellowship button, and three checkboxes (Ignore Fellowship Requests / Auto-Accept Requests / Share XP — a fourth, Share Loot, may also be present). No member list, no leader/quit/open/recruit/dismiss/disband buttons visible — those belong to the OTHER (in-fellowship) frame, which is hidden. INERT: the Create Fellowship button, the name field, and all visible checkboxes do nothing yet on click/edit (FA4 wires the create flow and the checkboxes already have Options-tab live consumers — this page's OWN copies are not yet cross-bound).
- If the test character IS currently in a fellowship (uncommon for
+Acdream's default state, but possible if a prior session left one active), open the Fellowship tab instead expecting: a fellowship name display, a member roster ListBox (empty rows — FA4 populates them), and six buttons (Leader/Quit/Open/Recruit/Dismiss/Disband). All six buttons are INERT for FA3.
Allegiance page — empty state
- On a character with NO allegiance profile ever received this session (the default state — nothing has queried allegiance data yet), open the Allegiance tab. Expect: the monarch block and patron block BOTH HIDDEN (no visible "Monarch:" / "Patron:" labels or name lines), while your own character line (name/followers/rank) and the vassal list area remain visible per their authored layout. The Swear/Break/Kick buttons and the "Ignore Allegiance Requests" checkbox are present and INERT.
- This state may not change automatically — FA3 does not send the
0x001F AllegianceUpdateRequestsubscription (that is FA5 scope, per the plan's corrected D6/CF-1 note), so simply opening the tab will NOT cause a profile to arrive. If some other client action causes an allegiance push to land server-side during this session (e.g. a@allegiance infochat command, which already works independently of this panel), the monarch/patron blocks should then become VISIBLE — report if they do not.
Friends page — read-only list
- Open the Friends tab. If the test account has any friends server-side, their NAMES appear as rows in the list (no online/ offline styling, no icons — names only, this slice's explicit scope). If the account has none, the list is empty (no placeholder text is invented).
- The three action-shaped buttons and the "Appear Offline"-shaped checkbox are INERT — clicking/toggling them does nothing (register row AD-79). This is CONTRACTED for FA3; do not report it.
Squelch page — read-only list
- Open the Squelch tab. If the test account has any squelched characters or accounts, their names appear as rows (characters and account-level squelches both listed, names only). Empty otherwise.
- The three action-shaped buttons are INERT (register row AD-79, same as Friends). CONTRACTED, do not report.
Live update while the panel is closed
- This is a soft check, not required to pass/fail the gate: if
Friends/Squelch state changes server-side while the social panel is
CLOSED (e.g. via
@friendchat commands, if any are wired), then reopening the panel afterward should show the up-to-date list immediately (the read-only binding polls every frame regardless of which tab or window is visible — seeSocialFriendsPageController/SocialSquelchPageController's own doc comments). Report if the list is stale on reopen.
What to report
- Any tab caption that renders blank instead of its retail name.
- The panel opening on the wrong DEFAULT tab (should be Allegiance, not Friends) on a fresh F3 press with the panel previously closed.
- F3/F4 failing to switch tabs while the panel is already open, or closing the panel when it should only switch tabs.
- The panel NOT closing/opening exclusively with sibling
gmPanelUIpanels (Character/Inventory/Options/etc.). - The Fellowship page showing the WRONG frame for the character's actual
fellowship state (e.g. showing the roster/six-button frame while
+Acdreamhas no fellowship). - The Allegiance page's monarch/patron blocks staying hidden after a
real allegiance push has visibly landed (e.g. after
@allegiance infoshows non-empty data in chat). - Any INERT button/checkbox producing a VISIBLE effect (a Create Fellowship, Swear, Friends, or Squelch action that unexpectedly does something) — this would mean either an accidental wire connection or a stale INERT claim in this script.
- A Friends/Squelch row showing anything other than a plain name (an exception, a blank row, garbled text).
- Any crash, hang, or exception in the log while opening/closing/ switching tabs repeatedly.
Explicitly NOT in scope for this gate
- Fellowship roster population, vitals, the create-fellowship dialog, recruit/dismiss/leader/open/disband wire sends, and the option-row un-dims (FA4).
- Allegiance monarch/patron/vassal LIVE population, swear/break/kick wire sends, and their confirmation dialogs (FA5).
- Friends/Squelch add/remove/appear-offline/clear wire sends (D1 — out of campaign scope entirely, register row AD-79).
- The bot-vs-ACE two-session fellowship gate (FA6).