SRS: UC_4.17.3 — Settings: Account Actions — Reset Associate Track (LIVE)
UC_4.17.3: Settings — Account Actions: Reset Associate Track (LIVE)
| Field | Value |
|---|---|
| BA in Charge | QuynhAnh12 |
| Date Created | 2026-08-26 |
| Version | v1.1 |
| Document References | QnA from clients — Stage 2 - Dashboard & Fomula (Settings).csv, category Settings: Reset Associate Track, rows Business logic / UI/UX (Adrian Stack, 2026-08-12 — [RAT-BIZ-04], the LIVE half of the button-enablement answer) · Same CSV, category Settings: Resign Account, [RES-ZAPF-01] (LIVE resignation ends at status = 'Terminated') · RFQ_ Website and Dashboard Implementation V7.pdf (§Scenario B — Live Failure / 1-Click Re-Buy Modal; §Part C — Settings & Profile Module) · RFQ_ Stack Trading Prop Tech V7.pdf (§Endpoint POST /calculate-cart, §Endpoint POST /initiate-rebuy) · Zapier Integration V7.pdf (§Table A/B — Retry_Discount; §Table C — Discount_Code_Duration_Days; §Table J — Full Challenge Price / locked_rebuy_price) |
Document References
| # | Original Document | Key Sections Used |
|---|---|---|
| 1 | QnA from clients — STAGE 2: Dashboard & Evaluation (Settings) | Stage 2 - Dashboard & Fomula (Settings).csv, category Settings: Reset Associate Track, row Business logic — [RAT-BIZ-04] (Adrian Stack, 2026-08-12, volunteered by the client): "Live Traders: the button is Disabled. A live trader must use 'Resign & Close Account' first to safely flatten all live market exposure. The 'Start New Associate Track' button only becomes enabled once their status is Failed or Terminated." This single answer is the entire client basis for this document — Ref: BR_4.17.3.3, BR_4.17.3.4 |
| 2 | QnA from clients — STAGE 2: Dashboard & Evaluation (Settings) | Same CSV, same category, row UI/UX — button state matrix: "LIVE: Disabled until status is Failed or Terminated; the trader must resign first. No extra confirmation dialog is introduced — the 1-Click Confirmation Modal (Base Price / Tax / Final Total + vaulted card) remains the confirmation step in every state." Ref: BR_4.17.3.3, BR_4.17.3.8 |
| 3 | QnA from clients — STAGE 2: Dashboard & Evaluation (Settings) | Same CSV, category Settings: Resign Account, [RES-ZAPF-01] — "SIM Resignation → status = Failed; LIVE Resignation → status = Terminated", and "update the trigger for Flow 7B. It must fire when an account status changes to EITHER Failed OR Terminated." This is what narrows the client's "Failed or Terminated" wording in row 1 down to Terminated alone on LIVE — Ref: BR_4.17.3.3 |
| 4 | RFQ_ Website and Dashboard Implementation V7.pdf | §Scenario B — Live Failure (In-App Re-Buy): the Re-Buy Modal, the Secure Checkout fallback and the "1-Click Confirmation Modal" pattern this screen hands off into · §Part C — Settings & Profile Module (tab inventory of the Account screen) |
| 5 | RFQ_ Stack Trading Prop Tech V7.pdf | §Endpoint POST /calculate-cart — the pricing/tax call this screen issues before any modal opens · §Endpoint POST /initiate-rebuy — the purchase call, owned downstream, confirmed "No change" by the same 2026-08-12 answer |
| 6 | Zapier Integration V7.pdf | §Table A (Forex) / §Table B (Futures) — Retry_Discount · §Table C — Discount_Code_Duration_Days (the window that decides the price) · §Table J — Full Challenge Price, locked_rebuy_price. All three are read server-side by POST /calculate-cart, never by this screen — Ref: BR_4.15.3.1 |
⚠️ WBS gap — this UC_ID does not exist in the WBS yet.
References/WBS/[BA Internal] Stacktrading.csvcurrently lists onlyUC_4.17.1(Market Data Management) andUC_4.17.2(Account Actions - Resign Account) underSTAGE 2.2: DASHBOARD LIVE → Settings.UC_4.17.3was assigned by BA instruction on 2026-08-26 to close open item A-23 of UC_4.11.1, which recorded that "the LIVE counterpart … which UC owns it" was unassigned. The WBS row must be added before this document is considered indexed — Ref: §10, A-40.
Design asset — the SIM frame governs the layout. Figma node
1-15026(Account Actionstab, shown to BA 2026-08-26) is the authoritative frame for this screen's shell: the 5-tab list, theControlspanel, and anAccount Actionscard holdingReset Associate TrackaboveResign & Close Account. Button styling convention: Reset = Primary (gold/tan), Resign = Danger (red). LIVE inherits all of it.The frame draws the button in its Enabled state only, because on SIM it is never Disabled (BR_4.11.1.3). That is a design omission, not a requirement gap — the client stated the LIVE behaviour explicitly, so the Disabled state is specified here as the standard disabled state of the same Primary button (Ref: BR_4.17.3.3, §9.1 row 4). No LIVE-specific variant needs to be drawn before FE can build it.
⏳ Still open on the design side: the frame is not committed to the repo (
References/Wireframe/has noSettingsfolder for any stage) — the same gap SIM tracks as A-17. And two copy strings genuinely differ on LIVE and cannot be inherited: the button label and the row description — Ref: §10, A-41, A-45, A-46.
Hand-off scope: this document owns the
Reset Associate Tracksection on the LIVEAccount Actionstab — its copy, its action button, the condition under which that button is Enabled, and the singlePOST /calculate-cartcall the click issues. Everything after that call returns HTTP 200 — pricing routing, the Re-Buy modal, the payment gates and paths, the Live→SIM rollback provisioning and the success screen — is owned by UC_4.15.2 and the UC_4.15.3 modal flow it routes into, and is not restated here — Ref: BR_4.17.3.9.
Forward reference:
UC_4.17.2(Account Actions — Resign Account, LIVE) is not yet documented in this repo. It is the hard prerequisite for this use case (BR_4.17.3.4) and is referenced by ID throughout rather than by link. Its confirmed contract as of today — LIVE branch ofPOST /resignonIs_Professional == True→RESIGNATION_EXECUTED→ Flow 20 → Flow 7 →status = 'Terminated'— is recorded in UC_4.11.2 BR_4.11.2.4 and QnA[RES-ZAPF-01], and that is all this document relies on.
Environment scope: LIVE only. The SIM counterpart is UC_4.11.1, whose rules are the opposite of this document's on the one point that matters: SIM is Enabled in every state, LIVE is Disabled in every state except one — Ref: BR_4.17.3.12.
1. Overview
| Field | Content |
|---|---|
| ID | UC_4.17.3 |
| Use Case | Settings — Account Actions: Reset Associate Track (LIVE) |
| Description | From the Account Actions tab of the Account screen, a LIVE trader restarts their career from a fresh Associate Track. Unlike the SIM counterpart, this control is not a self-service exit from a running account: while the trader still holds live market exposure the button is Disabled, and the client requires them to go through UC_4.17.2 — Resign & Close Account first, precisely so that all open positions are flattened and all working orders cancelled through the Atomic Kill Switch rather than abandoned by a purchase (Ref: BR_4.17.3.4). The button becomes Enabled only once users.status = 'Terminated' — reached either voluntarily through UC_4.17.2 or involuntarily through the Hard Breach of UC_4.15.2 (Ref: BR_4.17.3.3). Once Enabled, the click issues a single POST /calculate-cart and hands control to the LIVE recovery flow owned by UC_4.15.2 — the Terminated state, the archive_date window and the Case A / Case B broker provisioning all live in BR_4.15.2.7. What the trader buys is a Re-Buy, not a Reset — LIVE has no in-place reset path at all (Ref: BR_4.17.3.6). This is therefore a second entry point into an existing flow, not a second flow: UC_4.15.3 §2 already registers it as "Entry Point 2 — Account Actions screen". |
| Zapier Flow | — (this UC triggers no flow). The Terminated state that enables the button is written upstream by Flow 7 (via UC_4.17.2 or UC_4.15.2); the retention email that may race the trader to this screen is Flow 7B Path B, owned by UC_4.15.2 |
| Zapier Table | — (this UC reads no table directly). Table A/Table B (Retry_Discount), Table C (Discount_Code_Duration_Days) and Table J (Full Challenge Price / locked_rebuy_price) are read server-side by POST /calculate-cart and are specified in Ref: BR_4.15.3.1 |
| 3rd Party | Quaderno (regional tax calculation, reached through POST /calculate-cart) · Compliance_geo_restrictions (sanctions re-check on the same call — Ref: UC_4.15.3 §5 Step 2 Gate 2) |
Design: ⏳ No Figma node assigned. The WBS carries no design link for the LIVE Settings module beyond UC_4.17.1. Ref: §10, A-41.
2. Trigger
The trader clicks the action button in the Reset Associate Track row of the LIVE Account Actions tab (Ref: §9.1), while that button is Enabled — i.e. while users.status = 'Terminated' (Ref: BR_4.17.3.3).
Navigation path to that row:
- The trader clicks the user chip in the sidebar footer and selects Settings from the dropdown. Ref: UC_4.1.2 §2 Screen Description, row 6.
- The
Accountscreen opens on its default active tabConnections & Credentials. Ref: BR_4.6.1.1. - The trader selects the
Account Actionstab, which renders theReset Associate Tracksection (this UC) above theResign & Close Accountsection (Ref:UC_4.17.2).
The tab stays reachable after termination. The Frosted Glass overlay applies to the Dashboard screen only; the Account screen renders normally, and the Dashboard login never expires — Ref: UC_4.15.2 §4 Post-conditions. Without that, a Terminated trader could never reach an Enabled button and the client's rule would be unreachable.
This is the only path to the section — there is no deep link and no shortcut from the Dashboard. Ref: BR_4.17.3.2.
3. Pre-conditions
- The trader is authenticated and inside the Dashboard shell. Ref: UC_4.1.1 §1 Overview.
- The trader holds a LIVE funded account —
Is_Professional == True. This flag is the SIM/LIVE discriminator throughout the system;Current_Levelmust not be used, because a SIM account is provisioned atCurrent_Level1, 2 or 5 and would collide with the LIVE range. Ref: CR-65 BE-1, UC_4.11.2 §A-39. A SIM trader is out of scope for this document — Ref: BR_4.17.3.12. - For the section to render: none. The section renders in every LIVE account state; only the button's Enabled/Disabled state varies — Ref: BR_4.17.3.3.
- For the button to be Enabled:
users.status = 'Terminated'. Reached by exactly two routes, both of which run the Atomic Kill Switch first — Ref: BR_4.17.3.4:- Voluntary — the trader resigned via
UC_4.17.2→RESIGNATION_EXECUTED→ Flow 20 → Flow 7 →status = 'Terminated',termination_reason = 'VOLUNTARY_RESIGNATION'(Source: QnA[RES-ZAPF-01]; Zapier Integration V7.pdf §Flow 20). - Involuntary — Hard Breach Level Stop via UC_4.15.2, Stagnation (Flow 19) or a Defense-exhausted breach → Flow 7 →
status = 'Terminated',failure_timestamp = NOW().
- Voluntary — the trader resigned via
- Only when
Status = 'Terminated':archive_dateis available for the account and returned byGET /failure-state. It decides the price the trader will be quoted, not whether the button is Enabled — Ref: BR_4.15.2.7, BR_4.17.3.5.
4. Post-conditions
- Pricing has been calculated and the Re-Buy Modal is open, with control passed to the LIVE recovery flow owned by UC_4.15.2 (state, window, provisioning) and rendered by UC_4.15.3 §10.3 (the modal itself).
- This use case changes no account state on its own. No charge is created, no sub-account is touched, and
Statusis unchanged by anything specified in this document — the click only prices the purchase and opens the modal (Ref: BR_4.17.3.9). - No live exposure is ever closed by this screen. By construction the button cannot be clicked while exposure exists: it is Disabled until
Terminated, and by the timeTerminatedis written every position has already been flattened and every working order cancelled by the Atomic Kill Switch (Ref: BR_4.17.3.4). This is the entire point of the client's rule. - If the pricing call did not succeed, the trader remains on the
Account Actionstab with the button re-Enabled and nothing changed (Ref: §7).
5. Basic Flow
Happy case — the trader has already reached Status = 'Terminated' (by either route in §3), is inside the Discount_Code_Duration_Days window, and holds a vaulted card. The states in which the button is Disabled are covered in §6.1; the expired window in §6.4.
- The trader reaches the
Account Actionstab per §2. - The
Reset Associate Tracksection renders its title, its description and the action button. The button's Enabled/Disabled state follows Ref: BR_4.17.3.3; its label follows Ref: BR_4.17.3.5. - The trader clicks the button.
- The button is disabled immediately and the section enters a loading state showing a spinner and the text "Calculating regional taxes...", rendered in place on the
Account Actionsscreen (Ref: BR_4.17.3.10). The Failure Modal — "Trading Authority Revoked" — is not shown on this path (Ref: BR_4.17.3.7). - The frontend compares
archive_dateagainst NOW to determine whether the discount window is still open, and readsuser.is_founderto determine the pricing tier. Both feed the three-way routing defined in Ref: BR_4.15.3.1.archive_dateitself is broker-specific and is computed backend-side — Ref: BR_4.15.2.7. - The frontend calls
POST /calculate-cartwith the full payload. The backend returns the base price andtax_amount;Final_Charge = base_price + tax_amount. - On HTTP 200 the loading state ends and the Re-Buy Modal opens with the calculated pricing — control passes to UC_4.15.2, whose recovery path routes the purchase through UC_4.15.3 §5 Step 2.
- Everything from this point on — the promo code entry point, the three gates (status, sanctions, vaulted card), Paths A/B/C, the payment states, the Live→SIM rollback provisioning (Case A / Case B), the Rithmic Futures Market Data re-select screen and the success screen — is owned downstream. This use case makes no statement about them (Ref: BR_4.17.3.9).
- On a successful purchase the trader ends the flow on the Dashboard at Day 0 via the success screen's [Return to Dashboard] CTA, now on a new SIM evaluation account (
Status = 'Active_SIM', new credentials on the Paper Trading Gateway) — the trader is not returned to theAccountscreen they started from (Ref: BR_4.17.3.11, BR_4.17.3.6).
6. Alternative Flows
6.1 Button Disabled — Every LIVE State Except Terminated
This is the default state of this screen for a LIVE trader, and the one the client's answer is actually about.
- The trader reaches the
Account Actionstab per §2 whileusers.status = 'Active_DMA'— trading normally, or under a Soft Breach daily-loss lockout (UC_4.15.1), or inside the 48-hour Defense Protocol cooling-off / Shadow Mode (UC_4.15.4). - The section renders, and the action button renders Disabled. No request is issued and no modal can open. Ref: BR_4.17.3.3.
- The only route forward is the
Resign & Close Accountsection directly below, owned byUC_4.17.2— Ref: BR_4.17.3.4. - The button renders as the standard disabled state of the Primary button — no tooltip, no helper line. The section's explanatory copy is the row description (Ref: §9.1 row 3), which is where the LIVE wording must carry the message; the
Resign & Close Accountsection it points at is directly below on the same screen, so no separate pointer element is needed — Ref: §9.1 row 4.
Note — Soft Breach and Shadow Mode are trading locks, not account states. In both,
users.statusis still'Active_DMA', so this section behaves exactly as in the normal trading state: Disabled. This is the opposite of SIM, where a Soft Breach lockout leaves the button Enabled (BR_4.11.1.3) — and the divergence is the point: on SIM the capital is virtual, on LIVE both states still carry open positions in a real market.
6.2 Enabled After a Voluntary Resignation (Terminated, termination_reason = 'VOLUNTARY_RESIGNATION')
The route the client's answer prescribes.
- The trader completes the two-step friction barrier of
UC_4.17.2.POST /resigntakes the LIVE branch (Is_Professional == True), emitsRESIGNATION_EXECUTED→ Flow 20 → Flow 7 withReason = VOLUNTARY_RESIGNATION, and Flow 7 writesstatus = 'Terminated'(Ref: UC_4.11.2 BR_4.11.2.4 table rowTrue | LIVE, UC_4.15.2 §5 Step 1 Defense Gate — "IFResignation == True→ SKIP Defense Gate, proceed directly to Liquidation"). - The trader is not logged out and can return to the
Account Actionstab at any time. - The
Reset Associate Trackbutton is now Enabled. The flow is the full §5 Basic Flow, steps 1–9. - ⏳ What the trader is charged on this branch is not fully closed. UC_4.11.2 §10 A-25 records a BA decision of 2026-08-12 that "a resigned LIVE trader re-enters as a new Associate Track purchase; the Scenario B In-App Re-Buy path (
product_id="REBUY",POST /initiate-rebuy) and the Flow 7B Path B retention offer are not used on the resignation path" — still pending client confirmation. If that decision stands, the resignation branch does not get theRetry_Discountprice of BR_4.15.3.1 and this screen's click resolves to a differentproduct_id. This document does not pick a side — Ref: §10, A-25 (inherited), BR_4.17.3.6.
6.3 Enabled After a Hard Breach (Terminated, failure_timestamp set)
Applies when the trader never resigned — the account was terminated by the Atomic Kill Switch of UC_4.15.2, by the Stagnation Monitor (Flow 19), or by a breach with Defense already exhausted.
- The button is Enabled on exactly the same predicate —
status = 'Terminated'. The reason the account closed does not change this screen's behaviour; the client's condition is onstatusalone (Ref: BR_4.17.3.3). - The flow is the full §5 Basic Flow. Pricing follows BR_4.15.3.1 with no ambiguity on this branch — this is the canonical Scenario B Re-Buy.
- The trader may reach the same modal two ways at once. The Dashboard's Failure Modal re-summons on every Dashboard visit until a purchase completes (UC_4.15.3 §5 Step 0), while this screen offers the same purchase without it. Both converge on the same Re-Buy Modal — Ref: BR_4.17.3.7.
6.4 Discount Window Already Expired (Terminated, NOW > archive_date)
Applies when the archive_date failsafe has already fired — the historical ledger has been purged from the active Dashboard view, the Dashboard has reset to a blank D=0 state, and the broker-side cleanup has run (Rithmic: Live User ID disabled, market data revoked, LIVE sub-account unassigned · MT5/TE: LIVE sub-account hard-deleted). Ref: BR_4.15.2.7.
- The button stays Enabled. The client's condition is
status = 'Terminated', which does not change when the window closes. Expiry changes the price, never the enablement — Ref: BR_4.17.3.3, BR_4.17.3.5. - Steps 1–6 of the §5 Basic Flow run unchanged.
- On HTTP 200 the Re-Buy Modal opens priced at the Full Challenge Price (Table J) for a standard trader, or at
locked_rebuy_pricefor a founder — the founder route ignores the window entirely. Ref: BR_4.15.3.1. - Provisioning downstream follows Case B instead of Case A — the failsafe has already cleaned up, so only the new SIM sub-account is provisioned. Ref: BR_4.15.2.7.
6.5 Founding Mentor (Role_Flag = 'Founding Mentor')
- Enablement is unchanged —
status = 'Terminated'is the only condition (Ref: BR_4.17.3.3). - The Founding Mentor overlay and its acknowledgement gate are a Dashboard mechanism (Ref: UC_4.15.2 §6 Alternative Flow, UC_4.15.3 §2 Entry Point 3). Like the Failure Modal, it is not rendered on this path — Ref: BR_4.17.3.7.
- Pricing is
locked_rebuy_priceregardless of the window — Ref: BR_4.15.3.1. - ⏳ Open: whether reaching the Re-Buy Modal from Settings is allowed to bypass the Founding Mentor overlay acknowledgement, or whether the acknowledgement is a hard prerequisite that must be enforced here too. The two source documents describe the overlay only as a Dashboard gate and are silent on this screen — Ref: §10, A-44.
7. Exceptional Flow
-
[If the trader clicks the button repeatedly]
- The first click disables the button and starts the loading state, so no second
POST /calculate-cartis issued and no second modal can open. Ref: BR_4.17.3.10.
- The first click disables the button and starts the loading state, so no second
-
[If
POST /calculate-cartfails — HTTP 5xx, timeout, or no network]- The loading state ends, the modal does not open, and the trader stays on the
Account Actionstab with the button re-Enabled. - The system displays Ref: TE-SYS-01.
- The system does not auto-retry — retrying is a fresh click by the trader. Ref: BR_4.17.3.10.
- The loading state ends, the modal does not open, and the trader stays on the
-
[If the session / access token has expired — HTTP 401]
- The system displays Ref: TE-AUTH-01 and redirects to the Auth0 login.
-
[If
POST /calculate-cartreturns HTTP 403 — sanctioned region]- The sanctions check is real-time and runs on this call as well as on the purchase call. The handling is the one already specified for the LIVE Re-Buy flow — Ref: UC_4.15.3 §7 Exceptional Flow, which routes the trader to Ref: FP-02. This use case adds no separate handling.
-
[If
Statuschanges between page render and the click — e.g. thearchive_datefailsafe fires, or an Ops action reopens the account]- Not detected on this screen. It is caught by Gate 1 at the CTA click inside the Re-Buy Modal, which validates
Status == 'Terminated', closes the modal and displays Ref: TE-DASH-01 — Ref: UC_4.15.3 §5 Step 2 Gate 1, §7. - The Enabled state on this screen is not an authorisation. The backend gate remains the authority — Ref: BR_4.17.3.3.
- Not detected on this screen. It is caught by Gate 1 at the CTA click inside the Re-Buy Modal, which validates
-
[If a request reaches the backend while the account is still
Active_DMA— a bypassed or stale Disabled state]- Gate 1 on
POST /initiate-rebuyrejects it, since it accepts'Terminated'only (Ref: UC_4.15.3 §5 Step 2 Gate 1). The client's 2026-08-12 answer confirmedPOST /initiate-rebuyis "No change", so no LIVE-side backend widening is required by this document — the widened validation in that answer applies toPOST /purchase-challenge-reset, which is SIM-only. Ref: BR_4.17.3.6.
- Gate 1 on
8. Business Rules
BR_4.17.3.1: Scope of This Use Case Within the Account Screen
The Account screen hosts a tab list and a persistent Controls panel; the Account Actions tab itself contains two independent sections. This use case owns only the Reset Associate Track section on the LIVE side. Everything else is owned elsewhere:
| Element | Owning UC |
|---|---|
Account screen shell, tab list, default active tab | UC_4.6.1 (Connections & Credentials) · tab list table: BR_4.6.2.1 |
Profile & Preferences tab | UC_4.6.2 |
Market Data Management tab (LIVE) | UC_4.17.1 (not yet documented in this repo) |
Billing tab | UC_4.6.3 (not yet documented in this repo) |
Controls panel (Desk Manager / Reduce Motion) | UC_4.6.4 (not yet documented in this repo) |
Resign & Close Account section (same tab, below this one) — the prerequisite for this section | UC_4.17.2 (not yet documented in this repo) |
| Entry point — sidebar user chip and its dropdown | UC_4.1.2 |
The Terminated state, archive_date, Case A/B provisioning, Flow 7 / Flow 7B Path B | UC_4.15.2 — Ref: BR_4.17.3.9 |
| The Re-Buy Modal, its payment paths and provisioning outcome | UC_4.15.3 |
| The SIM counterpart of this very section | UC_4.11.1 — Ref: BR_4.17.3.12 |
This UC makes no statement about the display or enablement of the Resign & Close Account section — it only depends on that section's outcome.
BR_4.17.3.2: The Section Has Exactly One Entry Point
The Reset Associate Track section is reachable only through the sidebar footer user chip → dropdown → Settings → Account Actions tab (§2). There is no deep link to it, no shortcut from the Dashboard, and no route that lands on the Account Actions tab directly — the Account screen always opens on Connections & Credentials first (Ref: BR_4.6.1.1).
In particular, the Dashboard Failure Modal's own CTA is not an entry point to this section — it opens the Re-Buy Modal directly, bypassing Settings altogether (Ref: UC_4.15.3 §2 Entry Point 1).
The section holds no editable field, so switching tabs away from it needs no unsaved-changes interception.
BR_4.17.3.3: Button Enablement — Disabled Until Status = 'Terminated'
The action button is Disabled for a LIVE trader in every account state except Terminated. It is never hidden. Client-confirmed (Source: QnA from clients — Stage 2 - Dashboard & Fomula (Settings).csv, category Settings: Reset Associate Track, rows Business logic / UI/UX, [RAT-BIZ-04], Adrian Stack, 2026-08-12):
"Live Traders: the button is Disabled. A live trader must use 'Resign & Close Account' first to safely flatten all live market exposure. The 'Start New Associate Track' button only becomes enabled once their status is
FailedorTerminated."
| LIVE account state | Button | Basis | What the click does |
|---|---|---|---|
Active_DMA — trading normally | ❌ Disabled | Client wording above | Nothing — Ref: §6.1 |
Soft Breach lockout — Daily Loss Limit hit, status still Active_DMA (Ref: UC_4.15.1) | ❌ Disabled | Follows from the client's predicate — it is on status, and a Soft Breach does not change status. The trader still holds open live positions, so this is also the state the rule most needs to cover | Nothing — Ref: §6.1 |
Defense Protocol / Shadow Mode — 48h cooling-off, status still Active_DMA (Ref: UC_4.15.4) | ❌ Disabled | Same predicate. Defense is an explicit second chance at reduced parameters (Table F) — an account mid-Defense is being kept alive, not wound down, so letting the trader buy out of it would defeat the protocol | Nothing — Ref: §6.1 |
Terminated, termination_reason = 'VOLUNTARY_RESIGNATION' — after UC_4.17.2 | ✅ Enabled | Client wording above — this is the path the answer prescribes | §6.2 |
Terminated after a Hard Breach / Stagnation / Defense-exhausted breach — UC_4.15.2 | ✅ Enabled | Client wording above — the predicate is status, not the reason | §6.3 inside the window · §6.4 after it |
Failed | — | Not a LIVE state. See below | — |
Why the client's "Failed or Terminated" becomes Terminated alone here. 'Failed' is the SIM terminal value: [RES-ZAPF-01] confirms "SIM Resignation → status = Failed; LIVE Resignation → status = Terminated", and UC_4.15.2 §4 writes 'Terminated' on a LIVE Hard Breach. No LIVE flow produces 'Failed'. The client's two-value phrasing is a single predicate written once and reused across both environments — the same shape as the Flow 7B trigger (status IN ('Failed','Terminated')) and GET /failure-state, both of which deliberately keep both branches because SIM and LIVE share the endpoint (Ref: CR-65 BE-3, UC_4.11.2 BR_4.11.2.12). Applied to a LIVE-only screen the predicate collapses to one value. Implementing the frontend as status IN ('Failed','Terminated') is harmless and equivalent; implementing it as status == 'Terminated' is exact. Confirmed as the intended narrowing by BA instruction, 2026-08-26.
The Enabled state is not an authorisation. Status is re-checked server-side as Gate 1 at the CTA inside the Re-Buy Modal, which accepts 'Terminated' only (Ref: UC_4.15.3 §5 Step 2). A stale Disabled/Enabled state on this screen changes nothing about what the backend will accept — Ref: §7.
BR_4.17.3.4: Resignation Is a Hard Prerequisite — the Reason Is Live Market Exposure
The Disabled state is not a soft nudge; it is the mechanism by which the system guarantees that no LIVE trader can walk away from real market exposure by buying something. The client stated the reason explicitly: "Live traders must use the 'Resign & Close Account' button first to safely flatten all live market exposure" ([RAT-BIZ-04]).
Why this is the opposite of SIM. On SIM, BR_4.11.1.7 lets a trader forfeit a running evaluation straight from this section — the backend deletes the active sub-account, takes payment and provisions a fresh one. That routine is acceptable on simulated capital. On LIVE the same routine would mean the platform destroying a sub-account that may hold open positions in a real market: unhedged exposure with no owner, no flatten, no cancel of working orders, and a General Ledger that never closes. The client's rule removes the possibility entirely rather than adding a warning to it.
What the resignation guarantees before this button ever becomes clickable. Both routes into 'Terminated' run the same Atomic Kill Switch (Ref: UC_4.15.2 §5 Step 1):
| # | Action | Guaranteed before status = 'Terminated' is written |
|---|---|---|
| 1 | Lock — order entry disabled via Broker API | ✅ |
| 2 | Flatten — Market Close sent for ALL open positions | ✅ |
| 3 | Cancel — all working orders cancelled | ✅ |
| 4 | DB Update — status = 'Terminated' | ✅ — this is the write that enables the button |
| 5 | Liquidation second pass — Flow 7 Step 4 confirming re-check | ✅ (LIVE only; Flow 7 runs on both routes) |
Consequently §4 can assert that this screen never closes live exposure: by the time the button is clickable there is none left. This use case builds no flatten, cancel or lock logic of its own — it inherits the guarantee and does nothing more than refuse to act before it holds.
BR_4.17.3.5: Button Label — the Client Names a Different String Than the SIM Screen
The client's LIVE answer names the control "Start New Associate Track", not "Reset Associate Track": "The 'Start New Associate Track' button only becomes enabled once their status is Failed or Terminated" ([RAT-BIZ-04]). The section itself is still titled Reset Associate Track in the WBS and on the SIM frame.
| Button state | Label |
|---|---|
Disabled (Active_DMA and its lockouts) | ⏳ Pending — "Reset Associate Track" (inherited from the SIM frame) or "Start New Associate Track" (client wording). See below |
Enabled (Terminated) | ⏳ Pending — client says "Start New Associate Track"; three other strings are in play. See below |
⏳ Four strings currently name the same control across the repo, and the client has selected none of them:
| String | Where it comes from |
|---|---|
| "Start New Associate Track" | Client, [RAT-BIZ-04], 2026-08-12 — the only LIVE-specific answer |
| "Re-Buy" | UC_4.15.3 §2 Entry Point 2 — "the terminated trader's Settings → Account Actions screen exposes a 'Re-Buy' CTA". This is the same button as this document's |
| "Start Associate Track" | BR_4.15.3.1 — "CTA label is always 'Start Associate Track' regardless of route" (that rule governs the CTA inside the modal, not this button) |
| "Reset Associate Track" | WBS section name and the SIM frame (UC_4.11.1 §9.1 row 4) |
This document does not pick one — Ref: §10, A-45. It is the LIVE twin of the still-open SIM item A-05, where the client offered three post-expiry strings across two answers and selected none.
The label does not drive the routing. Price and modal are decided server-side on the pricing call from archive_date and is_founder (Ref: BR_4.15.3.1); the label is presentation only. Unlike SIM, the label does not need to change at the window boundary — there is no Reset-vs-New-Track split on LIVE to signal, only a price difference (Ref: BR_4.17.3.6, §6.4).
BR_4.17.3.6: LIVE Has No Reset — This Control Buys a Re-Buy
Despite the section name, nothing on the LIVE side is reset. The client and the LIVE architecture are consistent on this:
"LIVE has no 'Reset' option, only 'Re-Buy' — every LIVE failure requires purchasing a brand-new evaluation." (Source: UC_4.15.2 §Architecture note, from the BA-confirmed answer "LIVE thì auto xóa account nên chỉ có rebuy, k có reset" — QnA_init_docs UC_4.15.2 QN-03.)
What that means concretely for this screen:
| SIM (UC_4.11.1) | LIVE (this UC) |
|---|---|
POST /calculate-cart with product_id="RESET" | POST /calculate-cart — ⏳ product_id pending, see below |
Purchase call POST /purchase-challenge-reset — validation widened to Active_SIM / Failed on 2026-08-12 | Purchase call POST /initiate-rebuy — client confirmed "No change" in the same answer. No LIVE backend widening is required by this document |
Founder price locked_reset_price | Founder price locked_rebuy_price — locked_reset_price is SIM-only (Ref: BR_4.15.3.1) |
| Inside the window: existing SIM sub-account reused in place | Never reused. POST /initiate-rebuy always provisions a new sub-account (Ref: BR_4.15.3.2) |
| Outcome: a fresh SIM evaluation | Outcome: a fresh SIM evaluation — a Live→SIM rollback onto the Paper Trading Gateway, Status = 'Active_SIM' (Ref: UC_4.15.3 §4) |
The trader ends the flow on a SIM account, not a LIVE one. This is the single most consequential fact behind a control whose label says "Reset Associate Track", and the section's description copy must make it unambiguous — Ref: §9.1 row 3, §10 A-46.
⏳ product_id is not stated for this call. SIM sends product_id="RESET"; the LIVE Scenario B documents describe POST /calculate-cart "with the full payload" without naming the product, and UC_4.11.2 A-25 leaves open whether the resignation branch even uses product_id="REBUY". Ref: §10, A-47.
BR_4.17.3.7: This Entry Point Bypasses the Failure Modal
Clicking the button goes straight to the pricing call. The Failure Modal — the Dashboard-only "Trading Authority Revoked" modal that re-summons on every Dashboard visit until a purchase completes (Ref: UC_4.15.3 §5 Step 0, BR_4.15.2.2) — is never rendered on this path, and this screen never navigates the trader to the Dashboard in order to show it. The same holds for the Founding Mentor overlay (Ref: §6.5).
This is the defining difference between the entry points into the LIVE Re-Buy purchase, and it matches the structure UC_4.15.3 §2 already documents: Entry Point 1 starts at the Failure Modal, Entry Point 2 is this screen and skips it, Entry Point 3 is the Founding Mentor acknowledgement. All three converge on the same Re-Buy Modal.
The Frosted Glass overlay itself is unaffected by anything on this screen — it is removed only when a purchase completes (Ref: BR_4.15.2.2).
BR_4.17.3.8: No Separate Confirmation Step — the Re-Buy Modal Is the Confirmation
There is no additional confirmation dialog between the button and the Re-Buy Modal, and no typed-phrase friction barrier of the kind the neighbouring Resign & Close Account section uses. Client-confirmed for this category: "No extra confirmation dialog is introduced — the 1-Click Confirmation Modal (Base Price / Tax / Final Total + vaulted card) remains the confirmation step in every state." (Source: same CSV, row UI/UX, 2026-08-12).
The purchase is a paid action, so the payment modal already carries the confirmation, and the trader can abandon it at any point before the CTA without any state change.
On LIVE this rule carries less weight than on SIM, because the destructive step has already happened: by the time the button is clickable the account is Terminated, the positions are flat and the ledger is closed. There is nothing left for a confirmation dialog to protect. The friction that matters on LIVE sits one section below, in UC_4.17.2 — Ref: BR_4.17.3.4.
BR_4.17.3.9: Hand-off Boundary — No Pricing, Payment or Provisioning Logic Lives Here
This use case owns exactly one request: POST /calculate-cart. It owns none of the following, all of which belong to UC_4.15.2 and the UC_4.15.3 modal flow it routes into, and must not be duplicated or contradicted here:
| Owned by | Items |
|---|---|
| UC_4.15.2 | The 'Terminated' state and everything that writes it (Atomic Kill Switch, Flow 7 pipeline) · the broker-specific archive_date (M1/M2 routing) and the failsafe cron · the Pre-Archive Gate (PostgreSQL + S3 Glacier) · Case A / Case B provisioning per broker · Flow 9 Severance · Flow 7B Path B retention offer · Frosted Glass permanence · the 5 Failure Modal variants |
| UC_4.15.3 | The three-way price routing (is_founder × window) · the three gates at the purchase CTA (status, sanctions, vaulted card) · Path A (1-Click), Path B (Secure Checkout), Path C (Change Payment Method) · the promo code flow, the base-price lock and the tax re-calculation at pay click · POST /initiate-rebuy and POST /provision-sim-user · the Rithmic Futures Market Data re-select screen · the success screen and its CTA |
When either document changes, this one does not need to change with it — the hand-off is by reference, not by copy.
BR_4.17.3.10: One In-Flight Pricing Request Per Click
The button is disabled at the moment of click, before the request is issued, and stays disabled for as long as the loading state is on screen. Consequently:
- A double-click or a rapid repeat click cannot produce a second
POST /calculate-cart, and cannot open two Re-Buy Modals. - On success, the button is not re-enabled behind the modal — the modal owns the screen from that point (Ref: BR_4.17.3.9).
- On any failure, the loading state ends and the button is re-Enabled so the trader can retry manually. The system never retries automatically, because a retry re-prices the purchase and must be a deliberate act.
BR_4.17.3.11: The Flow Ends on the Dashboard, Not on the Account Screen
A purchase started from this section ends where a purchase started from the Dashboard ends: on the success screen "Track Started", whose [Return to Dashboard] CTA closes the screen, removes the Frosted Glass and shows the Dashboard at Day 0 on the new SIM account (Ref: UC_4.15.3 §4 Post-conditions).
For Rithmic Futures traders one screen is interposed first: the non-dismissible Market Data re-select screen, which the trader cannot skip and which blocks Dashboard access until submitted (Ref: BR_4.15.2.8). Forex traders (MT5, TraderEvolution) go straight to the success screen.
The trader is deliberately not returned to the Account Actions tab they started from. If the trader abandons the Re-Buy Modal instead of paying, they return to the Account Actions tab with nothing changed.
BR_4.17.3.12: This Document Is LIVE Only
Every rule in this document is written for a LIVE trader (Is_Professional == True). No rule is gated on environment — the document as a whole is. The SIM counterpart is UC_4.11.1, and the two are not variants of one rule set — they are opposites on the point that matters:
| SIM — UC_4.11.1 | LIVE — this UC | |
|---|---|---|
| Button while the account is running | ✅ Enabled — deliberate forfeit allowed | ❌ Disabled — Ref: BR_4.17.3.3 |
| Prerequisite | None | Resignation or breach — Ref: BR_4.17.3.4 |
| Enabling status | Every SIM state (Active_SIM, Failed) | Terminated only |
| What the click buys | A Reset (in-place inside the window) or a new Track | Always a Re-Buy — Ref: BR_4.17.3.6 |
| Purchase endpoint | POST /purchase-challenge-reset | POST /initiate-rebuy |
| Downstream owner | UC_4.10.3 | UC_4.15.2 → UC_4.15.3 |
| Ends on | A new SIM evaluation | A new SIM evaluation (Live→SIM rollback) |
This document closes UC_4.11.1 §10 A-23 — "The LIVE counterpart … Which UC owns it, and what a LIVE trader buys once enabled". The owner is UC_4.17.3; what the trader buys is a Re-Buy (Ref: BR_4.17.3.6). The WBS row still has to be created — Ref: §10, A-40.
9. Screen Description
9.1 LIVE Account Actions tab — Reset Associate Track section
Only the
Reset Associate Trackrow is specified here. TheResign & Close Accountrow below it belongs toUC_4.17.2; the tab list, the screen title and theControlspanel belong to the shell — Ref: BR_4.17.3.1.⏳ No LIVE design frame exists (Ref: §10, A-41). Copy marked "inherited" is taken from the SIM frame (UC_4.11.1 §9.1) as the working assumption; copy marked ⏳ is genuinely undecided and must not be implemented before the client answers.
| No. | Field Name | Field Type | Displaying rule / Behaviour rule |
|---|---|---|---|
| 1 | Section title | Label | Displaying rule:- Static text: "Account Actions" (inherited). Shared with the Resign & Close Account section below — it heads the whole tab, not this section alone.- Overflow: Wrap text. |
| 2 | Row title | Label | Displaying rule:- Static text: "Reset Associate Track" (inherited from the WBS section name and the SIM frame).- ⚠️ The row title is retained even though nothing is reset on LIVE — Ref: BR_4.17.3.6. ⏳ Whether the LIVE row should be retitled is part of A-45.- Overflow: Wrap text. |
| 3 | Row description | Label | Displaying rule:- ⏳ Copy pending. The SIM string "Reset and restart Associate Track. Current progress will be lost." is factually wrong on LIVE — nothing is reset, and the trader lands on a brand-new SIM evaluation, not a LIVE one (Ref: BR_4.17.3.6). LIVE-specific copy is required and is not supplied by any source — Ref: §10, A-46.- Static regardless of the discount window and of the account state — the description does not change when the button's enablement does.- Overflow: Wrap text. |
| 4 | Action button | Button (Primary) | Displaying rule:- ⏳ Label pending — four candidate strings, client has selected none. Ref: BR_4.17.3.5, §10 A-45.- Disabled whenever users.status = 'Active_DMA' — trading normally, Soft Breach lockout, and Defense Protocol / Shadow Mode included. Never hidden — the trader must be able to see that the path exists — Ref: BR_4.17.3.3.- The Disabled state renders as the standard disabled state of the same Primary button (reduced opacity / non-interactive), in place, same position and size. No tooltip and no helper line — matching the section's existing pattern, where the only explanatory copy is the row description in row 3 (BR_4.11.1.3: the SIM button "carries no explanatory tooltip"). The Figma frame draws only the Enabled state; that is a design omission, not an open requirement.- Enabled only when users.status = 'Terminated', whatever wrote it (resignation or breach) — Ref: BR_4.17.3.3, §6.2, §6.3.- Enablement does not change when the discount window expires — only the price does — Ref: §6.4.- Disabled for as long as the loading state in row 5 is on screen — Ref: BR_4.17.3.10.Behaviour rule:- While Disabled: no click handler fires, no request is issued.- On click while Enabled: the button is disabled, row 5 renders, and the frontend calls POST /calculate-cart — Ref: §5 steps 4–6. ⏳ The product_id on this call is not stated by any source — Ref: BR_4.17.3.6, §10 A-47.- On HTTP 200: the Re-Buy Modal opens and control passes downstream — Ref: UC_4.15.3 §10.3. No separate confirmation dialog is shown first — Ref: BR_4.17.3.8.- On failure: Ref: §7 Exceptional Flow.- The Failure Modal and the Founding Mentor overlay are never shown on this path — Ref: BR_4.17.3.7.Impact:- None at this step. The click prices the purchase and opens a modal; it creates no charge, changes no Status, and touches no sub-account. Every state change happens downstream at the modal's own CTA — Ref: BR_4.17.3.9. |
| 5 | Loading state | Label | Displaying rule:- Rendered in place on this screen only while POST /calculate-cart is in flight; hidden at all other times.- Spinner plus static text: "Calculating regional taxes..." (Ref: UC_4.15.3 §5 Step 1).- Overflow: Wrap text.Behaviour rule:- Read-only, non-interactive. It carries no cancel control — the trader cannot abort the pricing call.- Ends on HTTP 200 (modal opens) or on any failure (button re-Enabled, Ref: §7). |
10. Open Items Pending Client Confirmation
The following points sit on the main flow of this use case and are deliberately left unspecified rather than assumed. Each is tracked in QnA_init_docs.md.
| QnA ID | Open item | Affected section | Blocking? |
|---|---|---|---|
| A-40 | WBS row missing. UC_4.17.3 does not exist in References/WBS/[BA Internal] Stacktrading.csv; UC_4.17 currently ends at .2. The ID was assigned by BA instruction to close UC_4.11.1 A-23 | Document header, BR_4.17.3.12 | 🟡 BA action, not a client question |
| A-41 | 🟡 Downgraded 2026-08-26 — no longer blocking. The SIM frame (Figma 1-15026) governs the shell and LIVE inherits it; the Disabled state is the button component's standard disabled state, which needs no new artwork. What remains is housekeeping: the frame is not committed to the repo (References/Wireframe/ has no Settings folder for any stage) — same gap SIM tracks as A-17. Commit it so both documents can cite a path instead of a Figma node | Document header, §9.1 | 🟡 BA housekeeping |
| A-44 | Founding Mentor overlay vs. this entry point. May a Founding Mentor reach the Re-Buy Modal from Settings without acknowledging the overlay, or is the acknowledgement a hard prerequisite that this screen must enforce too? | §6.5 | 🟡 |
| A-45 | Button label — four candidate strings. "Start New Associate Track" (client, [RAT-BIZ-04]) · "Re-Buy" (UC_4.15.3 §2 Entry Point 2) · "Start Associate Track" (BR_4.15.3.1) · "Reset Associate Track" (WBS / SIM frame). Also: should the LIVE row title be retitled away from "Reset"? LIVE twin of the still-open SIM item A-05 | BR_4.17.3.5, §9.1 rows 2 & 4 | 🔴 Blocks FE |
| A-46 | Row description copy for LIVE. The SIM string "Reset and restart Associate Track. Current progress will be lost." is factually wrong on LIVE — nothing is reset and the trader lands on a new SIM account. LIVE copy is required | §9.1 row 3, BR_4.17.3.6 | 🔴 Blocks FE |
| A-47 | product_id on POST /calculate-cart. SIM sends "RESET". LIVE Scenario B never names the product, and A-25 leaves open whether the resignation branch uses "REBUY" at all | BR_4.17.3.6, §9.1 row 4 | 🔴 Blocks BE + FE |
| A-25 (inherited from UC_4.11.2) | What a resigned LIVE trader is charged. BA decided 2026-08-12 that a resigned LIVE trader re-enters as a new Associate Track purchase and that the Scenario B path (product_id="REBUY", POST /initiate-rebuy, Flow 7B Path B) is not used on the resignation branch — still pending client confirmation. If it stands, §6.2 and §6.3 diverge on price and endpoint instead of converging | §6.2, BR_4.17.3.6 | 🔴 Blocks BE |
| A-48 | Cross-UC contradiction inside UC_4.15.2, owned by that document. §1 Description still says the LIVE sub-account is "hard-deleted immediately" at T+0, while §4, §5 Step 7 and BR_4.15.2.7 (v4/v5) say it is locked Read-Only and deleted only at archive_date or on Re-Buy. This document follows the latter. The stale sentence should be corrected in UC_4.15.2 | §6.4, BR_4.17.3.6 | 🟡 Owned by UC_4.15.2 |
| A-49 | Cross-UC naming, owned by UC_4.15.3. Its §2 Entry Point 2 describes this exact screen as exposing a "Re-Buy" CTA. Once A-45 is answered, that sentence must be re-synced to the chosen string and cross-referenced to UC_4.17.3 | BR_4.17.3.5, BR_4.17.3.7 | 🟡 Owned by UC_4.15.3 |
Closed by this document:
| QnA ID | Was open | Now |
|---|---|---|
| A-23 (of UC_4.11.1) | The LIVE counterpart of the Reset Associate Track control — which UC owns it, and what a LIVE trader buys once enabled | ✅ Owned by UC_4.17.3 (this document). The trader buys a Re-Buy — Ref: BR_4.17.3.6, BR_4.17.3.12. The WBS row remains to be added — A-40 |
| A-42 | Whether the Disabled button carries a tooltip or helper line, and its copy | ✅ Closed by BA, 2026-08-26 — no tooltip, no helper line. The client stated the LIVE behaviour outright ("the button is Disabled"); Figma not drawing that variant is a design omission, not a requirement gap. The button uses the standard disabled state of the same Primary component, and the section's explanatory copy stays in the row description — Ref: §9.1 row 4 |
| A-43 | Soft Breach lockout and Defense Protocol / Shadow Mode — button behaviour | ✅ Closed by deduction, 2026-08-26 — Disabled in both. Neither changes users.status, which stays 'Active_DMA', and the client's predicate is on status. Both states also still carry open positions in a real market, so they are exactly what the rule exists to cover — Ref: BR_4.17.3.3, §6.1 |
Changelog
| Date | Version | Updated item | Before | After | Notes |
|---|---|---|---|---|---|
| 2026-08-26 | v1.1 | BA supplied the Account Actions Figma frame (node 1-15026); three open items resolved. Design note in the header, BR_4.17.3.3 state table, §6.1, §9.1, §10 | Header carried "⚠️ No design asset exists for this screen". BR_4.17.3.3 marked the Soft Breach and Shadow Mode rows "⏳ Derived, not quoted" and pointed at A-43. §6.1 step 4 left the Disabled affordance "unspecified rather than assumed". §9.1 had a 6th row, Disabled-state helper text / tooltip, marked "⏳ Existence and copy both pending". §10 listed A-41 🔴 Blocks FE, A-42 🔴 Blocks FE, A-43 🟡 needs confirmation. | Header records the frame as authoritative for the shell — 5-tab list, Controls panel, Reset Associate Track above Resign & Close Account, Reset = Primary (gold) / Resign = Danger (red) — and states plainly that the frame drawing only the Enabled state is a design omission, not a requirement gap. BR_4.17.3.3 asserts Disabled for both lockout states with the reasoning written out, no hedge. §6.1 step 4 specifies the standard disabled state, no tooltip, no helper line. §9.1 row 5 deleted and folded into row 4; former row 6 (Loading state) renumbered to 5. A-42 and A-43 closed; A-41 downgraded 🔴 → 🟡 (housekeeping only — commit the PNG to the repo, same gap as SIM's A-17). | BA direction, 2026-08-26: "Figma không vẽ trạng thái disable thôi, nhưng state sẽ nên là disable, và bạn nên tự hiểu điều đó." The client had already stated the LIVE behaviour outright in [RAT-BIZ-04] — treating the missing Figma variant as a requirement gap was over-flagging. Same principle applied to A-43, which followed deductively from the status predicate. ⚠️ The frame is the SIM one (it shows Days remaining 13d 20h, chip Lvl 5, and the button Enabled — all quoted in BR_4.11.1.3 and UC_4.11.1 §2); LIVE inherits its layout but inverts its enablement. The two genuinely LIVE-specific copy strings — button label and row description — stay open as A-45 / A-46. |
| 2026-08-26 | v1 | Initial creation | — | Full SRS: §1–§10, 12 Business Rules (BR_4.17.3.1 → BR_4.17.3.12), 1 Screen Description table (LIVE Account Actions tab — Reset Associate Track section, 6 rows), plus §10 listing 10 open items and the one item this document closes. | Written per BA instruction, 2026-08-26, on the LIVE half of the client answer [RAT-BIZ-04] (Adrian Stack, 2026-08-12) that UC_4.11.1 BR_4.11.1.8 recorded but deliberately did not specify. Scoped as an entry point into the existing LIVE Re-Buy flow — no pricing, payment or provisioning logic is restated (Ref: BR_4.17.3.9). The prerequisite resignation is referenced to UC_4.17.2; everything after the button becomes Enabled is referenced to UC_4.15.2, per BA instruction. The client's "Failed or Terminated" is narrowed to Terminated on the basis of [RES-ZAPF-01] — Ref: BR_4.17.3.3. No new IDs were added to common_rules.md or list-toast-popup.md — the failure paths reuse the existing TE-SYS-01, TE-AUTH-01, TE-DASH-01 and FP-02. Ten items are on HOLD pending client/BA answers and are marked in-place rather than filled with assumptions. |