SRS: UC_4.11.1 — Settings: Account Actions — Reset Associate Track (SIM)
UC_4.11.1: Settings — Account Actions: Reset Associate Track (SIM)
| Field | Value |
|---|---|
| BA in Charge | QuynhAnh12 |
| Date Created | 2026-08-11 |
| Version | v2.0 |
| Document References | See table below |
Scope — read this first. This document specifies one control: the
[Reset Associate Track]button on theAccount Actionstab. It answers three questions and nothing else:
- Where the button lives and how the trader reaches it — §2.
- When it is Enabled — BR_4.11.1.3.
- What the click fires — BR_4.11.1.4.
Everything that happens after the click is UC_4.10.3 — Scenario A: Sim Reset (In-App), which already registers this screen as its Entry Point 2 and specifies the whole path in §5.3: loading state, pricing, the Reset Modal, the gates, the payment paths, provisioning and the success screen. None of it is restated here — Ref: BR_4.11.1.5.
Document References
| # | Original Document | Used for |
|---|---|---|
| 1 | RFQ_ Website and Dashboard Implementation V7.pdf | §Part C — Settings & Profile Module (tab inventory of the Account screen) |
| 2 | RFQ_ Stack Trading Prop Tech V7.pdf | §Endpoint POST /calculate-cart — the only request this screen issues |
| 3 | QnA from clients — Stage 2 - Dashboard & Fomula (Settings).csv, category Settings: Reset Associate Track (Adrian Stack, 2026-08-12) | Button enablement per account status; backend validation widened to Active_SIM. Ref: BR_4.11.1.3, BR_4.11.1.7 |
| 4 | CR-65 | SIM resignation writes status = 'Failed', not 'Terminated' |
| 5 | BA design set, 2026-08-11 — Figma node 1-15026 | On-screen copy in §9. Not yet committed to References/Wireframe/ (Ref: §10, A-17) |
1. Overview
| Field | Content |
|---|---|
| ID | UC_4.11.1 |
| Use Case | Settings — Account Actions: Reset Associate Track (SIM) |
| Description | A SIM trader starts a reset from the Account Actions tab instead of from the Dashboard's Hard Breach Popup. This UC owns the section's copy, the button and its Enabled state. The click hands off to UC_4.10.3 §5.3. |
| Zapier Flow | — (this UC triggers no flow) |
| Zapier Table | — (this UC reads no table) |
| 3rd Party | — (reached only indirectly, through POST /calculate-cart — owned by UC_4.10.3) |
Design: Figma — Account Actions (Reset Associate Track), node 1-15026
2. Trigger
The trader clicks [Reset Associate Track] on the Account Actions tab while the button is Enabled (Ref: BR_4.11.1.3).
Navigation path — the only one (Ref: BR_4.11.1.2):
- Sidebar footer user chip → Settings. Ref: UC_4.1.2 §2 row 6.
- The
Accountscreen opens on its default tabConnections & Credentials. Ref: BR_4.6.1.1. - The trader selects the
Account Actionstab → theReset Associate Tracksection renders.
3. Pre-conditions
- The trader is authenticated and inside the Dashboard shell. Ref: UC_4.1.1 §1.
- The trader holds a SIM evaluation account (
Is_Professional == False). LIVE is out of scope — Ref: BR_4.11.1.8. StatusisActive_SIMorFailed— the two entry states this screen serves. They differ in what the trader is walking away from:
Entry state 1 — Failed | Entry state 2 — Active_SIM (Early Reset, [CHR-40]) | |
|---|---|---|
| How the trader got here | Hard Breach (UC_4.10.2) · Stagnation expiry (UC_4.10.4) · Resignation (UC_4.11.2, CR-65) | Nothing happened — the evaluation is still running (Soft Breach lockout included) |
failure_timestamp / archive_date | Present | Absent — there is no window to expire, Ref: BR_4.11.1.6 |
| Dashboard | Frosted Glass + Hard Breach Popup (Ref: BR_4.10.2.2) — this screen bypasses it, Ref: BR_4.11.1.5 | Normal, still trading |
| Challenge progress | Already lost | Still intact — the reset forfeits it, Ref: BR_4.11.1.7 |
Both states render the same button and run the same flow (§5). What differs downstream is the price and the Status transition, both owned by UC_4.10.3 — see §4.
4. Post-conditions
At the hand-off point — where this use case ends, identical in both entry states:
POST /calculate-cartreturned HTTP 200 and the Reset Modal is open; control passed to UC_4.10.3 §5.3 Step 2.- No account state changed. No charge, no
Statustransition, no sub-account touched — including fromActive_SIM, where the running evaluation is still fully intact. Abandoning the modal costs the trader nothing. Ref: BR_4.11.1.5, BR_4.11.1.7. - On failure, the trader stays on the
Account Actionstab with the button re-Enabled — Ref: §7.
At the end of the purchase — owned by UC_4.10.3, recorded here only so the two entry states can be told apart, not restated:
Entry state Failed | Entry state Active_SIM | |
|---|---|---|
Status after payment | 'Failed' → 'Active_SIM' | Unchanged — already 'Active_SIM' |
| Price route (BR_4.10.3.1) | A/B/C/D — window checked | A or C only — Early Reset override, Ref: BR_4.11.1.6 |
| Sub-account (BR_4.10.3.2) | Case A or B, depending on whether the failsafe has fired | Always Case A — the running sub-account is deleted first |
| Trader ends on | Dashboard at Day 0 | Dashboard at Day 0 |
Source for the Status column: BR_4.10.3.5 — "Status in DB changes from 'Failed' → 'Active_SIM' on the post-Hard-Breach path. For Early Reset (input already Status = 'Active_SIM'), Status does not change."
Neither path ever produces Status = 'Failed'. That value is written only by UC_4.10.2 (Hard Breach), UC_4.10.4 (stagnation expiry) or UC_4.11.2 (resignation) — never by a reset.
5. Basic Flow
- The trader reaches the
Account Actionstab per §2. - The
Reset Associate Tracksection renders — title, description, button. The button is Enabled (Ref: BR_4.11.1.3). - The trader clicks [Reset Associate Track].
- The button is disabled and the frontend calls
POST /calculate-cartwithproduct_id="RESET". Ref: BR_4.11.1.4. - Hand-off. On HTTP 200 the Reset Modal opens and control passes to UC_4.10.3 §5.3. This UC ends here — Ref: BR_4.11.1.5.
6. Alternative Flows
None. The flow in §5 is identical in every SIM account state — same button, same single call, same modal. What differs is the price, and the price is decided by UC_4.10.3, not by this screen — Ref: BR_4.11.1.6.
7. Exceptional Flow
| Case | Handling |
|---|---|
| Repeated clicks | The first click disables the button, so no second call and no second modal. Ref: BR_4.11.1.4. |
POST /calculate-cart fails — 5xx / timeout / no network | Modal does not open; button re-Enabled; Ref: TE-SYS-01. No auto-retry. |
| Session expired — 401 | Ref: TE-AUTH-01 → redirect to Auth0 login. |
| Sanctioned region — 403 | Handled by UC_4.10.3 §7 → FP-02. This UC adds no separate handling. |
| Status no longer permits the reset | Not detected here. Caught by Gate 1 inside the modal — Ref: UC_4.10.3 §5.3 Step 3. |
8. Business Rules
BR_4.11.1.1: What This UC Owns
This UC owns only the Reset Associate Track section of the Account Actions tab. Everything else on the Account screen is owned elsewhere:
| Element | Owner |
|---|---|
Account screen shell, tab list, default tab | UC_4.6.1 · tab list: BR_4.6.2.1 |
Profile & Preferences tab | UC_4.6.2 |
Market Data Management / Billing tabs · Controls panel | UC_4.17.1 · UC_4.6.3 · UC_4.6.4 |
Resign & Close Account section (same tab, below this one) | UC_4.11.2 |
| Sidebar user chip (entry point) | UC_4.1.2 |
| The entire reset purchase flow after the click | UC_4.10.3 — Ref: BR_4.11.1.5 |
BR_4.11.1.2: One Entry Point Only
The section is reachable only through user chip → Settings → Account Actions tab. There is no deep link, no shortcut from the Dashboard, and no route landing directly on the tab — the Account screen always opens on Connections & Credentials (Ref: BR_4.6.1.1).
The section holds no editable field, so leaving the tab needs no unsaved-changes interception.
BR_4.11.1.3: Button Enablement — Enabled in Every SIM Account State
The [Reset Associate Track] button is Enabled for a SIM trader in every account state. It is never hidden, never Disabled, and carries no tooltip.
| SIM account state | Button | Source |
|---|---|---|
Active_SIM — evaluation running | ✅ Enabled | "Enabled. Allow users to manually forfeit their current challenge and restart from scratch." (Adrian Stack, 2026-08-12) — this is the Early Reset case, Ref: BR_4.11.1.7 |
Active_SIM + Soft Breach lockout (Daily Loss Limit hit — UC_4.10.1) | ✅ Enabled | "Enabled." (same answer). A Soft Breach is a trading lock, not an account state — Status is still Active_SIM, so nothing changes here |
Failed, failure_reason = 'Drawdown' (Hard Breach) | ✅ Enabled | UC_4.10.3 §5.3 Step 0 |
Failed, failure_reason = 'VOLUNTARY_RESIGNATION' (after resignation — login survives, Ref: BR_4.11.2.7) | ✅ Enabled | Same as the Hard Breach row — resignation writes 'Failed', Ref: CR-65 |
Two notes:
Terminatedis not a SIM state. Since 2026-08-25 no SIM flow produces it; it survives on LIVE only (UC_4.17.2). Ref: CR-65.- Enabled ≠ authorised. Status is re-checked server-side as Gate 1 at the modal's CTA, which accepts
FailedandActive_SIM— Ref: UC_4.10.3 §5.1 Step 2.
BR_4.11.1.4: The Click Fires Exactly One Request
POST /calculate-cart with product_id="RESET" — the only request this UC owns.
- The button is disabled at the moment of click, before the request is issued, and stays disabled while the call is in flight. A double-click cannot produce a second call or a second modal.
- On HTTP 200 the button is not re-enabled behind the modal — the modal owns the screen. Ref: BR_4.11.1.5.
- On failure the button is re-Enabled for a manual retry. The system never auto-retries: a retry re-prices the purchase and must be deliberate. Ref: §7.
- The loading state shown during the call (spinner + "Calculating regional taxes...") is specified in UC_4.10.3 §5.3 Step 1.
BR_4.11.1.5: Hand-off — Everything After the Click Belongs to UC_4.10.3
This screen is Entry Point 2 of UC_4.10.3. From the click onward, follow UC_4.10.3 §5.3. This document makes no statement about, and must never restate:
- Pricing and the four-way route — BR_4.10.3.1.
- The Reset Modal, the promo code flow, the base-price lock and the tax re-calculation at pay click.
- Gate 1 (status), Gate 2 (sanctions), Gate 3 (vaulted card); Paths A / B / C.
POST /purchase-challenge-reset,POST /provision-sim-user, and every post-payment consequence — trade archive, balance reset,Statustransition, Frosted Glass removal, credentials.- The success screen and its [Return to Dashboard] CTA — the flow ends on the Dashboard at Day 0, not back on the
Accountscreen.
Two behaviours this UC does assert about the boundary itself:
- The Hard Breach Popup is never shown on this path. That popup is Dashboard-only (Ref: BR_4.10.2.2); clicking here goes straight to the pricing call, and this screen never navigates to the Dashboard to show it. This is the defining difference between Entry Point 1 and Entry Point 2.
- There is no separate confirmation dialog before the modal. The Reset Modal is the confirmation — reset is a paid action, so the payment modal carries it. No typed-phrase friction barrier of the kind
Resign & Close Accountuses (Ref: BR_4.11.2.1). Abandoning the modal changes nothing.
When UC_4.10.3 changes, this document does not — the hand-off is by reference, not by copy.
BR_4.11.1.6: Pricing Is Not Decided Here
Price and modal are resolved server-side on POST /calculate-cart and specified in BR_4.10.3.1 — four routes over Discount_Code_Duration_Days × is_founder. Not restated here.
One consequence is worth recording for this entry point:
A trader who resets proactively from a running evaluation (
Status = 'Active_SIM') can only land on the within-window routes — A (founder →locked_reset_price) or C (standard → Reset Fee byCurrent_Level+Asset_Class). There is no countdown to expire:Discount_Code_Duration_Daysruns fromfailure_timestamp, and an active account has none. The Early Reset override in BR_4.10.3.1 states this explicitly: "always uses the withinDiscount_Code_Duration_Dayspricing tier (no window check performed)".
For a Failed account entering from this screen the normal window check applies, so routes B and D remain reachable — Ref: §10, A-25.
BR_4.11.1.7: Early Reset From an Active Evaluation Forfeits It
Enabling the button in Active_SIM makes reset destructive: the account being reset still has progress. The client specified the backend consequence (Adrian Stack, 2026-08-12, row Endpoints):
| Endpoint | Change |
|---|---|
POST /purchase-challenge-reset | Validation accepts Active_SIM and Failed. "If a user resets while active, the backend must instantly execute the routine to delete the active sub-account, process the payment, and provision a fresh account." |
POST /initiate-rebuy | "No change." |
Boundaries this document asserts:
- Nothing is forfeited on this screen. Delete-pay-provision runs on the purchase call, not on
POST /calculate-cart. A trader who opens the modal and abandons it keeps their evaluation intact — positions and progress included. - The forfeit is not refunded and not reversible. The original fee is gone; the new challenge is a new purchase.
- Provisioning itself is owned by BR_4.10.3.2 (Case A / Case B), not by this UC.
BR_4.11.1.8: SIM Only
Every rule here is written for a SIM trader (Is_Professional == False). No individual rule is gated on environment — the document as a whole is.
The LIVE counterpart is UC_4.17.3, and its rules are the opposite of this document's: Disabled in every LIVE state except Terminated, resignation via UC_4.17.2 is a hard prerequisite, and the purchase is a Re-Buy (POST /initiate-rebuy), never a Reset — Ref: BR_4.17.3.3, BR_4.17.3.6.
9. Screen Description
9.1 Account Actions tab — Reset Associate Track section
Only this section is specified.
Resign & Close Accountbelow it belongs to UC_4.11.2 §9.1; the tab list andControlspanel belong to the shell — Ref: BR_4.11.1.1.
| No. | Field Name | Field Type | Displaying rule / Behaviour rule |
|---|---|---|---|
| 1 | Section title | Label | Displaying rule:- Static text: "Account Actions". Heads the whole tab, shared with the section below.- Overflow: Wrap text. |
| 2 | Row title | Label | Displaying rule:- Static text: "Reset Associate Track".- Overflow: Wrap text. |
| 3 | Row description | Label | Displaying rule:- Static text: "Reset and restart Associate Track. Current progress will be lost."- Static in every account state.- This is the only warning shown before an Early Reset forfeit — Ref: BR_4.11.1.7.- Overflow: Wrap text. |
| 4 | [Reset Associate Track] | Button (Primary) | Displaying rule:- Static label: "Reset Associate Track" — it does not change with the pricing window, because the modal behind it is always the Reset Modal (Ref: BR_4.10.3.1).- Enabled in every SIM account state — never hidden, never Disabled, no tooltip. Ref: BR_4.11.1.3.- Disabled while POST /calculate-cart is in flight. Ref: BR_4.11.1.4.Behaviour rule:- On click → POST /calculate-cart (product_id="RESET").- On HTTP 200 → Reset Modal opens, control passes to UC_4.10.3 §5.3. No confirmation dialog in between — Ref: BR_4.11.1.5.- On failure → Ref: §7.Impact:- None at this step, in any state. No charge, no Status change, no sub-account touched. |
10. Open Items Pending Client Confirmation
| QnA ID | Item | Affected |
|---|---|---|
| A-25 | 🟡 New — should a Failed trader entering from Settings after Discount_Code_Duration_Days still get the discounted tier? BA's position (2026-09-03) is that a proactive reset should never hit an expired window. That holds automatically for Active_SIM (routes A/C only), but a Failed trader can sit past the window and then open Settings, where BR_4.10.3.1 routes them to B/D. Confirm whether that is intended or whether this entry point forces A/C for all states. | BR_4.11.1.6 |
| A-17 | ⚪ Wireframe not yet committed to References/Wireframe/Stage 2/Settings/; the Figma node is cited instead. | Document References |
Closed:
| QnA ID | Was open | Closed by |
|---|---|---|
| A-03 / A-04 | Button behaviour in Active_SIM / Soft Breach; whether the design frame was authoritative | Client answer 2026-08-12 → BR_4.11.1.3 |
| A-05 | Button label after the window expires | ✅ Moot — the modal is always the Reset Modal, so the label never changes. Ref: BR_4.10.3.1 [CHR-59] |
| A-22 | Which price applies to a reset from Active_SIM | ✅ Early Reset override — always the within-window tier (A or C). Ref: BR_4.11.1.6 |
| A-23 | Who owns the LIVE counterpart | ✅ UC_4.17.3 (2026-08-26) |
| A-24 | UC_4.10.3 Gate 1 still Failed-only | ✅ Updated — Gate 1 now accepts Failed + Active_SIM [CHR-40] |
| A-21 | Broken anchor #7-exceptional-flow in UC_4.10.3 | ✅ Anchor now exists |
Changelog
| Date | Version | Change |
|---|---|---|
| 2026-09-03 | v2.1 | §3 và §4 tách theo 2 entry state (BA review). §3 Pre-conditions: thêm bảng so sánh Failed vs Active_SIM — cách trader tới đây, có/không failure_timestamp + archive_date, Dashboard có/không Frosted Glass, tiến độ challenge còn hay mất. §4 Post-conditions: tách 2 tầng — tại điểm bàn giao (giống nhau ở cả 2 state, không đổi state nào) và cuối luồng mua (thuộc UC_4.10.3: Failed→Active_SIM vs giữ nguyên; route A/B/C/D vs chỉ A/C; Case A/B vs luôn Case A). Ghi rõ không đường nào tạo ra Status = 'Failed' — giá trị đó chỉ do UC_4.10.2 / UC_4.10.4 / UC_4.11.2 ghi. Không rule nào thay đổi; chỉ làm rõ điều đã ngầm định. |
| 2026-09-03 | v2.0 | Full rewrite on BA instruction — the document was over-specified and unreadable. Scope narrowed to the button alone: where it lives, when it is Enabled, what the click fires. Everything downstream now points at UC_4.10.3 §5.3 instead of being restated. Removed: §6.1 (window expired) and the old BR_4.11.1.4 button-label rule — UC_4.10.3 [CHR-59] confirms the modal is always the Reset Modal, so no "Start New Track Modal" and no label change exist; §6.2 / §6.3 (they were the same flow written three times); all source-history commentary. Business rules 11 → 8, renumbered; inbound references were repointed accordingly — old BR_4.11.1.11 → BR_4.11.1.7 and old BR_4.11.1.10 → BR_4.11.1.8 in UC_4.17.3, UC_4.11.2 and this UC's QnA_init_docs.md. Added BR_4.11.1.6 — pricing refers to BR_4.10.3.1; a proactive Early Reset lands on routes A/C only. Closed A-05, A-21, A-22, A-24; opened A-25. No client-confirmed rule was dropped. |
| 2026-08-26 | v1.3 | A-23 closed — LIVE counterpart assigned to UC_4.17.3. Pointer update only. |
| 2026-08-25 | v1.2 | CR-65 — SIM resignation writes 'Failed', not 'Terminated'. A resigned account is an ordinary Failed account on this screen. |
| 2026-08-12 | v1.1 | Client answer — button Enabled in every SIM state; POST /purchase-challenge-reset validation widened to Active_SIM. |
| 2026-08-11 | v1 | Initial creation. SIM only, scoped as an entry point into the UC_4.10.3 purchase flow. |