acdream/docs/research/2026-08-12-campaign-fa-test-script.md
Erik b6a25110f3 docs: FA3 -- connected-gate test script + plan ledger update
- 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>
2026-08-12 02:59:10 +02:00

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

  1. 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.
  2. 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*Panel action (e.g. F11/Options, Spellbook).
  3. Press F4. The social panel opens directly on its Fellowship tab (F4 switches AND opens in one press, even if the panel was closed).
  4. 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.
  5. 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.
  6. Drag the window by its border/chrome; resize it from the BOTTOM edge only. Same shared gmPanelUI geometry 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

  1. Open Character Info (or Inventory, or Options), then press F3. The other panel closes and the social panel opens on Allegiance — the SAME retail gmPanelUI one-active-panel-at-a-time behavior every sibling panel already has (RetailPanelUiController.RegisterMainPanel shares one geometry rectangle across all ten registered main panels).
  2. 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

  1. 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.
  2. 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

  1. 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).
  2. 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

  1. 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.
  2. This state may not change automatically — FA3 does not send the 0x001F AllegianceUpdateRequest subscription (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 info chat 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

  1. 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).
  2. 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

  1. 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.
  2. 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

  1. 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 @friend chat 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 — see SocialFriendsPageController/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 gmPanelUI panels (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 +Acdream has no fellowship).
  • The Allegiance page's monarch/patron blocks staying hidden after a real allegiance push has visibly landed (e.g. after @allegiance info shows 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).