Prompt Details
Model
(gemini-3.6-flash)
Token size
241
Example input
[STATE_INVENTORY]: Seventy-two SVG icons with names, screenshots, component references, and dark-mode variants.
[INTERFACE_SCOPE]: A mobile wallet covering card provisioning, transfers, cash-out, disputes, and identity verification.
[ACCESSIBILITY_RULES]: Functional icons require labels; status cannot rely on color; error and warning meanings must remain distinct.
[PLATFORM_CONSTRAINTS]: iOS and Android use different biometric and navigation conventions while sharing transaction semantics.
Example output
Workflow-State Map
┌──────────────────────────────────────────────────────────────────┐
│ WORKFLOW STATE MAP │
└──────────────────────────────────────────────────────────────────┘
[TRIGGER] ──────────────────► [IN-PROGRESS] ──────────────────► [SUCCESS]
│ │ │
▼ ▼ ▼
[BLOCKED] ◄───────────────────► [WARNING] ────────────────────► [RECOVERY]
│ │ │
▼ ▼ ▼
[FAILURE] ──────────────────► [UNKNOWN] ◄───────────────────► [AUDIT STOP]
1. Card Provisioning Workflow
Trigger State
System Event: User taps [+] Add Card or selects issuer push provisioning from bank app.
Context: Provisioning Entry (SCR-PROV-001).
Icon Mapping: ic_plus_24 (Functional, Primary Action).
Platform Context: iOS uses PassKit presented sheet; Android uses Google Pay API embedded intent.
In-Progress State
System Event: Token request dispatched to TSP (Token Service Provider); decrypting payload.
Context: Issuer Handshake Overlay (SCR-PROV-002).
Icon Mapping: ic_spinner_animated_24 (Status, System Busy).
Success State
System Event: Token status returns ACTIVE; pass added to local Secure Element (SE).
Context: Provisioning Complete (SCR-PROV-003).
Icon Mapping: ic_check_circle_filled_24 (Status, Success).
Warning State
System Event: Step-up authentication required by issuer (e.g., OTP or bank app verification).
Context: Verification Choice Modal (SCR-PROV-004).
Icon Mapping: ic_shield_alert_24 (Status, Attention Required).
Blocked State
System Event: Device Secure Element not initialized, NFC disabled, or device rooted/jailbroken.
Context: Hardware Prerequisites Blocked (SCR-PROV-005).
Icon Mapping: ic_lock_padlock_slash_24 (Status, Hardware Block).
Failure State
System Event: Issuer declined tokenization; card expired or unsupported BIN.
Context: Provisioning Declined (SCR-PROV-006).
Icon Mapping: ic_cross_circle_filled_24 (Status, Terminal Error).
Recovery State
System Event: Alternative verification chosen (e.g., call bank support or retry manual entry).
Context: Manual Entry Fallback (SCR-PROV-007).
Icon Mapping: ic_phone_operator_24 (Functional, Support Action).
Unknown State
System Event: Network timeout during SE token injection; status unconfirmed locally.
Context: Sync Pending (SCR-PROV-008).
Icon Mapping: ic_cloud_sync_question_24 (Status, Unverified State).
2. Peer-to-Peer (P2P) & Bank Transfers Workflow
Trigger State
System Event: User selects recipient and inputs transfer amount.
Context: Send Money Form (SCR-TRNS-001).
Icon Mapping: ic_arrow_up_right_24 (Functional, Transfer Direction).
In-Progress State
System Event: Ledger debit initiated; waiting for ACH/RTP clearinghouse settlement.
Context: Processing Transfer (SCR-TRNS-002).
Icon Mapping: ic_arrows_loop_24 (Status, Processing).
Success State
System Event: Receiver account credited; ledger transaction finalized.
Context: Receipt Screen (SCR-TRNS-003).
Icon Mapping: ic_receipt_check_24 (Status, Settled).
Warning State
System Event: Transaction triggers velocity risk check or high-value review delay.
Context: Transfer Review Delay Notice (SCR-TRNS-004).
Icon Mapping: ic_clock_warning_24 (Status, Temporal Delay).
Blocked State
System Event: Recipient account frozen, OFAC sanction flag triggered, or insufficient funds.
Context: Transfer Restricted (SCR-TRNS-005).
Icon Mapping: ic_hand_stop_24 (Status, Compliance Block).
Failure State
System Event: ACH return code received (e.g., R01, R03); transfer reversed.
Context: Transfer Failed (SCR-TRNS-006).
Icon Mapping: ic_transfer_failed_24 (Status, Execution Failed).
Recovery State
System Event: User edits payment source or adjusts amount within allowed balance limit.
Context: Source Selection Adjustment (SCR-TRNS-007).
Icon Mapping: ic_edit_pencil_24 (Functional, Action Modifier).
Unknown State
System Event: Intermediary bank did not issue confirmation or drop frame during gateway handoff.
Context: Gateway Timeout Ledger Hold (SCR-TRNS-008).
Icon Mapping: ic_question_mark_circle_24 (Status, Undefined Execution).
3. Cash-Out Workflow
Trigger State
System Event: User requests balance transfer to connected debit card or bank account.
Context: Cash-Out Transfer Selection (SCR-CSHO-001).
Icon Mapping: ic_bank_building_24 (Functional, Destination Target).
In-Progress State
System Event: Instant debit card payout API request executing via Visa Direct / Mastercard Send.
Context: Instant Payout Processing (SCR-CSHO-002).
Icon Mapping: ic_lightning_pulse_24 (Status, Active Processing).
Success State
System Event: Network funds pull approved; wallet balance decremented.
Context: Cash-Out Success Receipt (SCR-CSHO-003).
Icon Mapping: ic_bank_check_24 (Status, Settlement Confirmed).
Warning State
System Event: Instant payout unavailable; destination bank downgraded transfer to standard ACH (1–3 days).
Context: Rail Downgrade Warning (SCR-CSHO-004).
Icon Mapping: ic_calendar_alert_24 (Status, Service Level Degraded).
Blocked State
System Event: Cash-out daily limit reached or card network endpoint maintenance.
Context: Limit Reached (SCR-CSHO-005).
Icon Mapping: ic_gauge_max_24 (Status, Limit Exceeded).
Failure State
System Event: Destination debit card declined by issuer (e.g., card revoked, non-OCT eligible).
Context: Payout Rejected (SCR-CSHO-006).
Icon Mapping: ic_card_declined_24 (Status, Network Rejection).
Recovery State
System Event: User switches target from instant debit card to linked checking account.
Context: Destination Switch (SCR-CSHO-007).
Icon Mapping: ic_swap_horizontal_24 (Functional, Target Switcher).
Unknown State
System Event: Network connection lost after payload dispatch; ledger state pending pull acknowledgement.
Context: Unconfirmed Payout Status (SCR-CSHO-008).
Icon Mapping: ic_hourglass_question_24 (Status, Unconfirmed Ledger).
4. Disputes Workflow
Trigger State
System Event: User selects item from transaction history and taps "Dispute Transaction."
Context: Transaction Detail (SCR-DSPT-001).
Icon Mapping: ic_flag_dispute_24 (Functional, Dispute Action).
In-Progress State
System Event: Submitting dispute payload, chargeback reason codes, and supporting evidence files.
Context: Submitting Claim (SCR-DSPT-002).
Icon Mapping: ic_document_upload_24 (Status, Evidence Uploading).
Success State
System Event: Case opened successfully; provisional credit issued; case ID generated.
Context: Dispute Case Confirmation (SCR-DSPT-003).
Icon Mapping: ic_scale_balance_check_24 (Status, Case Open/Approved).
Warning State
System Event: Merchant documentation requested; 7-day clock ticking for additional evidence.
Context: Evidence Action Required (SCR-DSPT-004).
Icon Mapping: ic_document_warning_24 (Status, Evidence Deficit).
Blocked State
System Event: Transaction outside Regulation E/Z chargeback window (>60 days from statement date).
Context: Ineligible Transaction (SCR-DSPT-005).
Icon Mapping: ic_calendar_x_24 (Status, Window Expired).
Failure State
System Event: Merchant compelling evidence accepted by issuer; dispute closed in merchant favor.
Context: Dispute Closed Lost (SCR-DSPT-006).
Icon Mapping: ic_scale_balance_x_24 (Status, Claim Denied).
Recovery State
System Event: User initiates arbitration appeal or uploads additional documentation.
Context: Appeal Dispute (SCR-DSPT-007).
Icon Mapping: ic_upload_arrow_24 (Functional, Appeal Action).
Unknown State
System Event: Network arbitration system unreachable; claim status out of sync with issuer core.
Context: Dispute Sync Lag (SCR-DSPT-008).
Icon Mapping: ic_document_question_24 (Status, Core Out-of-Sync).
5. Identity Verification (KYC) Workflow
Trigger State
System Event: Account tier upgrade requested or regulatory threshold requires identity check.
Context: KYC Onboarding Banner (SCR-IDV-001).
Icon Mapping: ic_id_card_24 (Functional, Verification Entry).
In-Progress State
System Event: Document scanning camera active or biometric liveness video capture streaming to vendor.
Context: Camera Capture / Scanning Overlay (SCR-IDV-002).
Icon Mapping: ic_scan_face_24 (Status, Active Scanning).
Success State
System Event: Vendor identity check passed; CIP/OFAC status clear; account limits upgraded.
Context: IDV Verification Complete (SCR-IDV-003).
Icon Mapping: ic_badge_check_24 (Status, Verified Tier).
Warning State
System Event: Document blur detected, glare on ID, or selfie liveness confidence low.
Context: Capture Quality Warning (SCR-IDV-004).
Icon Mapping: ic_camera_alert_24 (Status, Capture Quality Issue).
Blocked State
System Event: Sanction match, age below regulatory minimum, or maximum automated retries reached.
Context: Identity Unverified / Account Blocked (SCR-IDV-005).
Icon Mapping: ic_user_x_24 (Status, Compliance Restriction).
Failure State
System Event: Document expired, name mismatch on SSN check, or fraudulent liveness attempt detected.
Context: Identity Verification Failed (SCR-IDV-006).
Icon Mapping: ic_id_card_cross_24 (Status, Identity Rejected).
Recovery State
System Event: User prompted to switch from automated liveness to manual document upload / agent review.
Context: Manual Identity Document Fallback (SCR-IDV-007).
Icon Mapping: ic_file_text_edit_24 (Functional, Manual Input Action).
Unknown State
System Event: IDV provider webhook failed to deliver resolution within timeout window.
Context: Identity Review Pending (SCR-IDV-008).
Icon Mapping: ic_user_clock_24 (Status, Asynchronous Review).
Inventory Mapping
Icon Name Component Reference Platform Variant Light Theme Color (Hex) Dark Theme Color (Hex) Accessible Label Semantic Role System Interaction Context
ic_plus_24 UIBaseIcon Universal #1C1B1F #E6E1E5 "Add payment method" Functional Provisioning Trigger
ic_spinner_animated_24 ProgressSpinner Universal #6750A4 #D0BCFF "Provisioning card, please wait" Status Provisioning In-Progress
ic_check_circle_filled_24 StatusBadge Universal #146C2E #6DD58C "Card provisioned successfully" Status Provisioning Success
ic_shield_alert_24 BannerIcon Universal #7D5260 #EFB8C8 "Additional card verification required" Status Provisioning Warning
ic_lock_padlock_slash_24 ModalAlertIcon Universal #B3261E #F2B8B5 "Secure Element hardware unavailable" Status Provisioning Blocked
ic_cross_circle_filled_24 StatusBadge Universal #B3261E #F2B8B5 "Card provisioning failed" Status Provisioning Failure
ic_phone_operator_24 ActionButton Universal #21005D #E8DEF8 "Contact issuer support" Functional Provisioning Recovery
ic_cloud_sync_question_24 SyncBanner Universal #7D5260 #EFB8C8 "Card status pending network sync" Status Provisioning Unknown
ic_arrow_up_right_24 TransferAction Universal #1C1B1F #E6E1E5 "Send money" Functional Transfers Trigger
ic_arrows_loop_24 ProgressInline Universal #6750A4 #D0BCFF "Processing transfer" Status Transfers In-Progress
ic_receipt_check_24 ReceiptHeader Universal #146C2E #6DD58C "Transfer completed" Status Transfers Success
ic_clock_warning_24 ToastIcon Universal #7D5260 #EFB8C8 "Transfer review delayed" Status Transfers Warning
ic_hand_stop_24 BlockDialog Universal #B3261E #F2B8B5 "Transfer restricted by compliance" Status Transfers Blocked
ic_transfer_failed_24 StatusBadge Universal #B3261E #F2B8B5 "Transfer failed" Status Transfers Failure
ic_edit_pencil_24 IconButton Universal #49454F #CAC4D0 "Edit transfer details" Functional Transfers Recovery
ic_question_mark_circle_24 StatusInline Universal #7D5260 #EFB8C8 "Transfer status unconfirmed" Status Transfers Unknown
ic_bank_building_24 TileIcon Universal #1C1B1F #E6E1E5 "Select bank cash-out" Functional Cash-Out Trigger
ic_lightning_pulse_24 ProcessingPulse Universal #6750A4 #D0BCFF "Processing instant cash-out" Status Cash-Out In-Progress
ic_bank_check_24 ReceiptHeader Universal #146C2E #6DD58C "Cash-out settled" Status Cash-Out Success
ic_calendar_alert_24 BannerIcon Universal #7D5260 #EFB8C8 "Instant payout unavailable, 1-3 days delay" Status Cash-Out Warning
ic_gauge_max_24 LimitNotice Universal #B3261E #F2B8B5 "Daily cash-out limit reached" Status Cash-Out Blocked
ic_card_declined_24 StatusBadge Universal #B3261E #F2B8B5 "Cash-out declined by destination bank" Status Cash-Out Failure
ic_swap_horizontal_24 ActionButton Universal #21005D #E8DEF8 "Switch cash-out method" Functional Cash-Out Recovery
ic_hourglass_question_24 StatusBanner Universal #7D5260 #EFB8C8 "Cash-out status unconfirmed" Status Cash-Out Unknown
ic_flag_dispute_24 RowAction Universal #49454F #CAC4D0 "Dispute this transaction" Functional Disputes Trigger
ic_document_upload_24 UploadProgress Universal #6750A4 #D0BCFF "Uploading dispute evidence" Status Disputes In-Progress
ic_scale_balance_check_24 CaseStatus Universal #146C2E #6DD58C "Dispute approved" Status Disputes Success
ic_document_warning_24 AlertTile Universal #7D5260 #EFB8C8 "Additional evidence needed for dispute" Status Disputes Warning
ic_calendar_x_24 InlineError Universal #B3261E #F2B8B5 "Dispute window expired" Status Disputes Blocked
ic_scale_balance_x_24 CaseStatus Universal #B3261E #F2B8B5 "Dispute claim denied" Status Disputes Failure
ic_upload_arrow_24 ActionButton Universal #21005D #E8DEF8 "Upload dispute appeal document" Functional Disputes Recovery
ic_document_question_24 SyncInline Universal #7D5260 #EFB8C8 "Dispute status syncing with core" Status Disputes Unknown
ic_id_card_24 ListTileIcon Universal #1C1B1F #E6E1E5 "Start identity verification" Functional IDV Trigger
ic_scan_face_24 CameraOverlay Universal #6750A4 #D0BCFF "Scanning identity document" Status IDV In-Progress
ic_badge_check_24 ProfileBadge Universal #146C2E #6DD58C "Identity verified" Status IDV Success
ic_camera_alert_24 CaptureGuide Universal #7D5260 #EFB8C8 "Capture quality poor: adjust lighting" Status IDV Warning
ic_user_x_24 BlockBanner Universal #B3261E #F2B8B5 "Identity verification restricted" Status IDV Blocked
ic_id_card_cross_24 StatusBadge Universal #B3261E #F2B8B5 "Identity verification failed" Status IDV Failure
ic_file_text_edit_24 ActionButton Universal #21005D #E8DEF8 "Enter identity details manually" Functional IDV Recovery
ic_user_clock_24 ReviewNotice Universal #7D5260 #EFB8C8 "Identity verification under manual review" Status IDV Unknown
ic_face_id_ios_24 BiometricSheet iOS Only #000000 #FFFFFF "Authenticate with Face ID" Functional Platform Auth Trigger
ic_touch_id_ios_24 BiometricSheet iOS Only #000000 #FFFFFF "Authenticate with Touch ID" Functional Platform Auth Trigger
ic_fingerprint_android_24 AuthPrompt Android Only #1C1B1F #E6E1E5 "Authenticate with Fingerprint" Functional Platform Auth Trigger
ic_face_unlock_android_24 AuthPrompt Android Only #1C1B1F #E6E1E5 "Authenticate with Face Unlock" Functional Platform Auth Trigger
ic_chevron_left_ios_24 NavBar iOS Only #007AFF #0A84FF "Back" Functional Platform Navigation
ic_arrow_back_android_24 TopAppBar Android Only #1C1B1F #E6E1E5 "Navigate up" Functional Platform Navigation
ic_share_ios_24 ActionBar iOS Only #007AFF #0A84FF "Share transaction receipt" Functional Receipt Action
ic_share_android_24 ActionBar Android Only #1C1B1F #E6E1E5 "Share receipt" Functional Receipt Action
ic_nfc_contactless_24 POSPrompt Universal #1C1B1F #E6E1E5 "Hold near terminal to pay" Decorative NFC Field Indication
ic_card_generic_24 CardArtPlaceholder Universal #79747E #938F96 "Payment card background" Decorative Card Visual Slate
ic_shield_outline_24 SecurityFooter Universal #79747E #938F96 "Secured by 256-bit encryption" Decorative Trust Aesthetic Banner
ic_wallet_outline_24 EmptyState Universal #79747E #938F96 "Empty wallet illustration" Decorative Empty State Backdrop
ic_chevron_right_24 NavigationList Universal #79747E #938F96 "Open details" Functional Trailing List Affordance
ic_info_circle_24 InlineHelp Universal #49454F #CAC4D0 "View fee breakdown" Functional Contextual Tooltip
ic_search_24 SearchBar Universal #49454F #CAC4D0 "Search transactions" Functional Input Affordance
ic_filter_24 FilterChip Universal #49454F #CAC4D0 "Filter transactions" Functional List Control
ic_close_24 ModalHeader Universal #1C1B1F #E6E1E5 "Dismiss" Functional Modal Control
ic_qr_code_scan_24 QuickAction Universal #1C1B1F #E6E1E5 "Scan QR code" Functional Camera Trigger
ic_bell_24 HeaderAction Universal #1C1B1F #E6E1E5 "View notifications" Functional System Alerts
ic_eye_show_24 TextField Universal #49454F #CAC4D0 "Show balance details" Functional Visibility Toggle
ic_eye_hide_24 TextField Universal #49454F #CAC4D0 "Hide balance details" Functional Visibility Toggle
ic_copy_24 InlineAction Universal #49454F #CAC4D0 "Copy account number" Functional Clipboard Action
ic_download_24 ReceiptAction Universal #49454F #CAC4D0 "Download PDF statement" Functional File Action
ic_exclamation_triangle_24 SystemAlert Universal #7D5260 #EFB8C8 "System alert warning" Status Generic Alert
ic_star_rating_24 FeedbackPrompt Universal #79747E #938F96 "Rate experience" Decorative Visual Feedback Star
ic_lock_closed_24 SecurityBadge Universal #146C2E #6DD58C "Connection secure" Decorative Static Trust Symbol
ic_sparkle_24 FeatureHighlight Universal #79747E #938F96 "New feature available" Decorative Promotional Accent
ic_help_circle_24 TopAppBar Universal #49454F #CAC4D0 "Open help center" Functional Global Help Entry
ic_trash_can_24 ListSwipeAction Universal #B3261E #F2B8B5 "Delete payment method" Functional Destructive Action
ic_check_single_24 SelectionControl Universal #1C1B1F #E6E1E5 "Option selected" Functional Selection Indicator
ic_refresh_24 PullToRefresh Universal #1C1B1F #E6E1E5 "Refresh transaction history" Functional Data Sync Action
Coverage Matrix
┌──────────────────────────┬───────────────────────────────────────────────────────────────────────────────────┐
│ WORKFLOW │ STATES │
│ ├───────┬─────────────┬─────────┬─────────┬─────────┬─────────┬──────────┬───────────┤
│ │ TRIG │ IN-PROG │ SUCCESS │ WARN │ BLOCK │ FAIL │ RECOVERY │ UNKNOWN │
├──────────────────────────┼───────┼─────────────┼─────────┼─────────┼─────────┼─────────┼──────────┼───────────┤
│ 1. Card Provisioning │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │
│ 2. Transfers │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │
│ 3. Cash-Out │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │
│ 4. Disputes │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │
│ 5. Identity Verification │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │ [X] │
└──────────────────────────┴───────┴─────────────┴─────────┴─────────┴─────────┴─────────┴──────────┴───────────┘
Undocumented & Unverifiable States
Card Provisioning – Hardware SE Bus Conflict (SCR-PROV-009):
Gap: No icon exists to distinguish between user-disabled NFC and hardware-level Secure Element lockouts.
Evidence Needed: Hardware Diagnostics Telemetry (event_se_bus_exception); iOS PassKit error log code PKPassKitErrorCodeEnterprisePolicy; owner evidence from Embedded Security Team.
Transfers – Dual-Sided Settlement Discrepancy (SCR-TRNS-009):
Gap: Transfer shows success on sender ledger but unknown/pending on destination ledger during cross-border FX execution.
Evidence Needed: Payment Gateway ISO 20022 message trace (pacs.002 status report); Telemetry trx_ledger_mismatch_flag; owner evidence from Core Banking Settlement Team.
Disputes – Provisional Credit Revocation (SCR-DSPT-009):
Gap: Lack of icon differentiating standard dispute failure from secondary credit reversal notification.
Evidence Needed: Ledger posting event REV_PROV_CREDIT; screen spec SCR-DSPT-REV-01; owner evidence from Merchant Chargeback Processing Unit.
Ambiguity Register
┌──────────────────────────────────────────────────────────────────────────────────┐
│ AMBIGUITY REGISTER │
└──────────────────────────────────────────────────────────────────────────────────┘
[MISMATCHED SEMANTICS] [COMPETING SYMBOLS] [DUPLICATE ICONS]
ic_exclamation_triangle_24 ic_clock_warning_24 ic_exclamation_triangle_24
│ │ │
▼ ▼ ▼
Generic vs Contextual Temporal vs Compliance Overlapping Failure Types
1. Mismatched Semantics: Generic Warning Used for Blocked/Failure
Asset Code: ic_exclamation_triangle_24
Violation Type: Semantic Overload / Warning vs. Error Confusion.
Conflict Context: Used interchangeably for "System Alert Warning" (Warning State) and "Hard Compliance Block" in Transfers (SCR-TRNS-005).
System Impact: Users mistake terminal transaction failures for retryable system warnings, causing repeated failed submissions and rate-limiting blocks.
Root Cause: Component library lacks a distinct shape for soft warnings vs. unrecoverable system halts.
2. Competing Meanings: Time-Based vs. Compliance Delays
Asset Code: ic_clock_warning_24 vs. ic_user_clock_24
Violation Type: Structural Ambiguity / Symbol Competition.
Conflict Context: ic_clock_warning_24 indicates a financial clearing delay in Transfers (SCR-TRNS-004), whereas ic_user_clock_24 indicates manual KYC review in IDV (SCR-IDV-008).
System Impact: Icon glyphs share a primary clock motif with subtle secondary badge overlays (warning sign vs user silhouette). At 16dp rendered size on low-DPI displays, the secondary glyphs are unresolvable, causing cross-workflow confusion between identity holds and payment delays.
3. Duplicate Symbols: Overlapping Rejection/Failure Indicators
Asset Code: ic_cross_circle_filled_24, ic_transfer_failed_24, ic_card_declined_24, ic_id_card_cross_24
Violation Type: Redundant Asset Proliferation / Structural Duplication.
Conflict Context: Four separate assets encode identical terminal error semantics across different workflows using slightly altered base metaphors (circle cross, slashed card, slashed ID).
System Impact: Increases app bundle size and breaks design system token consolidation without providing distinct perceptual value over a base error indicator coupled with clear text labels.
4. Misapplied Decorative Assets: Functional Reliance on Decorative Security Elements
Asset Code: ic_shield_outline_24, ic_lock_closed_24, ic_nfc_contactless_24
Violation Type: Decorative Asset Misuse / False Affordance.
Conflict Context: ic_shield_outline_24 is mapped as static visual flair in payment footers (SCR-PROV-001), but ic_shield_alert_24 carries interactive functional weight in provisioning warnings (SCR-PROV-004).
System Impact: Users attempt to tap non-interactive security shields expecting transaction details, while ignoring functional security alerts due to perceived decorative fatigue.
Accessibility Tests
Check 1: Semantic Exclusivity Audit
Test Method: Evaluate full icon set against a strict 1:1 mapping constraint: 1 Glyph Motif = 1 System State Group.
Failure Log:
FAIL: ic_exclamation_triangle_24 mapped to both Warning State (Cash-Out) and Blocked State (Transfers).
FAIL: ic_lock_closed_24 (Decorative Security) conflicts visually with ic_lock_padlock_slash_24 (Provisioning Blocked).
Remediation Rule: Reserve triangular containers (▲) exclusively for Warning States (recoverable/attention needed). Reserve octagonal or circular filled containers (●) exclusively for Failure/Blocked States (non-recoverable without intervention).
Check 2: Distinguishability Without Color (Grayscale & High-Contrast Test)
Test Method: Convert all screens containing status icons to 100% monochromatic grayscale. Verify state recognizability using visual geometry alone.
COLOR-INDEPENDENT GLYPH GEOMETRY
[SUCCESS] [WARNING] [FAILURE / BLOCKED]
Circle + Checkmark Triangle + Exclamation Octagon + Heavy Cross
┌───┐ ▲ ┌───┐
│ 🗸 │ /!\ │ X │
└───┘ ───── └───┘
Failure Log:
FAIL: ic_check_circle_filled_24 (Success) vs. ic_cross_circle_filled_24 (Failure) rely heavily on green (#146C2E) vs. red (#B3261E) fill hues. When rendered in grayscale, both appear as identical 24px solid filled dark circles with inner white vector cutouts.
FAIL: ic_lightning_pulse_24 (Cash-Out In-Progress) and ic_clock_warning_24 (Cash-Out Warning) use identical circular stroke weights; distinction relies entirely on amber vs. purple tinting.
Remediation Rule: Enforce outer container shape differentiation:
Success: Circular outline or badge with checkmark (ic_check_circle).
Warning: Equilateral triangle container with interior exclamation point (ic_triangle_warning).
Failure/Blocked: Octagonal container ("Stop" sign geometry) or heavy stroke cross (ic_octagon_cross).
Check 3: Label Agreement (Screen Reader Integrity)
Test Method: Inspect contentDescription (Android / Compose) and accessibilityLabel + accessibilityTraits (iOS / UIKit) for every functional and status icon.
Failure Log:
FAIL: ic_plus_24 in Provisioning (SCR-PROV-001) reads as "Plus icon" instead of the action "Add payment method".
FAIL: ic_nfc_contactless_24 (Decorative) missing explicit accessibility hiding flags (importantForAccessibility="no" on Android; isAccessibilityElement = false on iOS). Screen readers read "NFC Contactless 24 graphic", confusing visually impaired users during tap-to-pay setups.
FAIL: ic_spinner_animated_24 announces continuous, unthrottled state change updates to VoiceOver/TalkBack on every frame draw.
Remediation Rule: All functional icons must use imperative action verb labels. All decorative icons must be explicitly hidden from the accessibility tree. All status progress icons must use liveRegion="polite" and update only on state completion/failure.
Check 4: Cross-Platform Continuity Test
Test Method: Map side-by-side execution of identical workflows on iOS and Android. Verify semantic equivalency despite native Human Interface Guidelines (HIG) vs. Material Design 3 (M3) divergence.
┌───────────────────────────┬───────────────────────────┬───────────────────────────┐
│ ACTION / CONTEXT │ iOS NATIVE (HIG) │ ANDROID NATIVE (M3) │
├───────────────────────────┼───────────────────────────┼───────────────────────────┤
│ Biometric Auth │ `ic_face_id_ios_24` │ `ic_fingerprint_androi…` │
│ Screen Back Navigation │ `ic_chevron_left_ios_24` │ `ic_arrow_back_androi…` │
│ Document / Item Share │ `ic_share_ios_24` │ `ic_share_android_24` │
└───────────────────────────┴───────────────────────────┴───────────────────────────┘
Failure Log:
FAIL: Android implementation of Cash-Out Receipt used iOS-styled chevron ic_chevron_left_ios_24 for top-left screen exit, violating M3 back-arrow expectations.
FAIL: iOS Biometric Auth Sheet rendered generic Android fingerprint symbol ic_fingerprint_android_24 on devices equipped with Face ID.
Remediation Rule: Abstract platform-divergent icons behind platform abstraction wrappers (PlatformIcon(id)), binding iOS builds to SF Symbols / native SVGs and Android builds to Material Symbols at compile time.
Platform Divergences
1. Biometric Authentication Affordances
iOS Alignment: Follows Apple Human Interface Guidelines for LocalAuthentication. The UI must present Face ID (ic_face_id_ios_24) or Touch ID (ic_touch_id_ios_24) glyphs matching the hardware capabilities of the specific device model (LABiometryType). Glyphs must never be embedded inline within body content; they belong inside system-presented modal sheets (PASSKit / LAContext).
Android Alignment: Follows Material Design 3 BiometricPrompt API guidelines. Uses the unified biometric glyph (ic_fingerprint_android_24 or ic_face_unlock_android_24) inside standard bottom sheet dialogs.
Shared Transaction Semantics: Regardless of visual glyph differences, the underlying authentication invocation must bind to the identical transaction signature payload, triggering telemetry event auth_biometric_validated with identical claims payload on both platforms.
2. Navigation Control Hierarchies
iOS Alignment: Uses ic_chevron_left_ios_24 aligned to the top-left corner of the UINavigationBar, accompanied by textual back labels matching the title of the previous view when space permits. Swipe-from-left edge gesture is enabled by default.
Android Alignment: Uses ic_arrow_back_android_24 aligned top-left in the TopAppBar. Back action integrates with Android System Predictive Back Gesture navigation.
3. Action Sheet & Receipt Sharing Protocols
iOS Alignment: P2P transfer receipts and dispute confirmation screens invoke UIActivityViewController using ic_share_ios_24 (square container with upward pointing arrow).
Android Alignment: Uses native Intent.ACTION_SEND target selector invoked via ic_share_android_24 (three interconnected nodes/less-than network structure).
Remediation Order
┌──────────────────────────────────────────────────────────────────────────────────┐
│ CRITICAL REMEDIATION PATH │
└──────────────────────────────────────────────────────────────────────────────────┘
[REM-01: Compliance Block] ──► [REM-02: Grayscale Failure] ──► [REM-03: Screen Reader]
│ │ │
▼ ▼ ▼
[REM-04: Platform Nav] ──► [REM-05: Decorative Purge] ──► [REM-06: Duplication]
Priority 1: Critical System & Compliance Blockers
Remediation ID: REM-01
Affected Workflow: P2P & Bank Transfers (SCR-TRNS-005).
Issue: ic_exclamation_triangle_24 (Warning) misapplied to hard OFAC compliance/insufficient funds blocked states.
Action: Replace ic_exclamation_triangle_24 in SCR-TRNS-005 with ic_hand_stop_24 utilizing an octagonal red container.
Falsifiable Acceptance Test:
TypeScript
describe('REM-01: Transfer Blocked State Icon Audit', () => {
it('renders ic_hand_stop_24 and excludes triangle warning glyph when transfer is blocked', () => {
const state = mockTransferState({ status: 'BLOCKED', reason: 'OFAC_HOLD' });
const screen = render(<TransferStatusScreen state={state} />);
expect(screen.getByTestId('status_icon')).toHaveAttribute('data-icon', 'ic_hand_stop_24');
expect(screen.queryByTestId('ic_exclamation_triangle_24')).toBeNull();
});
});
Priority 2: Visual Accessibility & Color Reliance Violations
Remediation ID: REM-02
Affected Workflows: Card Provisioning (SCR-PROV-003, SCR-PROV-006) & Cash-Out (SCR-CSHO-003, SCR-CSHO-006).
Issue: Success and Failure status icons share identical outer circular geometry, relying solely on Green vs. Red color hues.
Action: Redesign ic_cross_circle_filled_24 to use an octagonal boundary (ic_cross_octagon_filled_24) to guarantee visual distinction in 0% color saturation conditions.
Falsifiable Acceptance Test:
TypeScript
describe('REM-02: Color-Independent Icon Geometry Test', () => {
it('ensures success and failure icons have non-identical bounding paths in grayscale', async () => {
const successPath = getSVGPathData('ic_check_circle_filled_24');
const failurePath = getSVGPathData('ic_cross_octagon_filled_24');
const pathSimilarity = calculatePathSimilarity(successPath, failurePath);
expect(pathSimilarity).toBeLessThan(0.70); // Must be geometrically distinct
});
});
Priority 3: Screen Reader & Label Agreement Deficits
Remediation ID: REM-03
Affected Workflows: Card Provisioning (SCR-PROV-001), Identity Verification (SCR-IDV-001).
Issue: Interactive trigger icons read raw asset file names or uninformative noun labels ("Plus icon", "ID card").
Action: Update design system string localizers to inject imperative action verb strings into node accessibility descriptions.
Falsifiable Acceptance Test:
TypeScript
describe('REM-03: Screen Reader Imperative Label Test', () => {
it('attaches imperative accessibility action labels to provisioning and IDV trigger buttons', () => {
const provButton = render(<ProvisioningTriggerButton />);
const idvButton = render(<IDVTriggerButton />);
expect(provButton.getByRole('button')).toHaveAccessibleName('Add payment method');
expect(idvButton.getByRole('button')).toHaveAccessibleName('Start identity verification');
});
});
Priority 4: Platform Continuity & HIG/M3 Compliance
Remediation ID: REM-04
Affected Workflows: All Workflows (Global Top Bar Navigation & Biometrics).
Issue: Android top bars rendering iOS chevrons and iOS auth sheets displaying Android fingerprint vectors.
Action: Implement PlatformIcon abstraction component enforcing platform-native asset resolution at build time.
Falsifiable Acceptance Test:
TypeScript
describe('REM-04: Cross-Platform Asset Target Test', () => {
it('resolves correct platform back navigation icon based on target OS', () => {
const iOSNav = renderWithPlatform(<TopNavigationBar />, 'ios');
const androidNav = renderWithPlatform(<TopNavigationBar />, 'android');
expect(iOSNav.getByTestId('back_icon')).toHaveAttribute('data-icon', 'ic_chevron_left_ios_24');
expect(androidNav.getByTestId('back_icon')).toHaveAttribute('data-icon', 'ic_arrow_back_android_24');
});
});
Priority 5: Decorative Asset Accessibility Purge
Remediation ID: REM-05
Affected Workflows: Card Provisioning (SCR-PROV-001), Global Footer Elements.
Issue: Decorative icons (ic_shield_outline_24,
By purchasing this prompt, you agree to our terms of service
GEMINI-3.6-FLASH
Audit an interface state inventory against workflows and accessibility rules to expose missing, ambiguous, or duplicated icon states.
...more
Added 20 hours ago
