Dart 7 · Career follow-up
Career Mode & DartBot clarity · implementation report

A career that feels like a mode, not a detour.

Nine distinct follow-up improvements make Career navigation intentional, make DartBot strength legible in darts language, and keep active simulation feedback truthful. This report records the user problem, implementation, benefit, accessibility behavior, verification, and evidence plan for each outcome.

Branch feature/react-native-performance Baseline ab3faf48190baa19e62d71deb61117f56bef152f Register snapshot · 13 July 2026 iOS debug native · build, launch, dark mode & reduced motion passed Implementation 5a5a33e5249f49820c841fcc66dbc624801f8052
8 completed outcomes Automated contracts plus native iOS proof
1 platform proof pending Android hardware Back containment only
360 named DartBots 64 Tour pros · 296 qualifying players
Navigation architecture

Enter once. Stay oriented. Exit deliberately.

Tour remains the launcher. Continuing replaces into a sibling Career shell with four stable destinations. Child routes resolve back to their owning tab, and one labelled control returns to Tour.

Screen-by-screen

What changed, and where users feel it.

Shared implementations are counted once. Each card groups the candidates a user encounters on that surface and links to the full register entry.

Tour → Career HomeInformation architecture

The complete Career map is visible immediately.

Calendar, World Results, Cabinet, and Settings no longer sit behind “More destinations.” Continue enters the dedicated shell, while Exit career is always explicit.

No disclosure gate 4 native tabs 1 explicit exit
My ProProfile & Cabinet

Career identity and trophies stay inside Career.

A Career-owned My Pro tab now holds Profile and Cabinet sections. Career settings, statistics, and Back behavior no longer spill into global Players.

Profile / Cabinet selector Career-owned history Clear mode note
Players → BotsRoster clarity

Pros and qualifiers now have names, counts, and context.

The Bots surface separates 64 Tour pros from 296 qualifying opponents, uses cohort-specific ranks, and presents England, Scotland, Wales, and Northern Ireland instead of generic Great Britain.

Tour pros · 64 Qualifying field · 296 Four UK home nations
Settings & Bot profileDifficulty meaning

World Level speaks in three-dart averages.

W is explained as a world-strength dial. At W50, the app shows Tour pros at 44–52 average (typical 47) and the qualifying field at 17–43 (typical 30). Profiles add an expected average with cohort and W context.

Exact population ranges Expected, not guaranteed Shared W precedence
Career week & tournament runState and motion

Simulation feedback exists only while work exists.

Preparing, simulating, resolving, and live progress states mount an active three-dot indicator and live pulse. Terminal, error, and cancellation states remove it. Reduced motion preserves the busy label and progress while stopping ambient movement immediately.

Real state owns visibility UI-thread animation Static reduced-motion fallback Stops while app is inactive
Every Career child routeContainment & compatibility

Back means “within Career,” including old saved links.

Canonical builders own matches, settings, results, broadcasts, bot profiles, training returns, and tournaments. Tab-root hardware Back is intercepted, parent gestures are disabled, and legacy Career paths replace into the new shell.

Stable owning-tab fallback No redirect loops Legacy links preserved Training returnTo retained
Visual evidence deck

Prepared for native proof.

Static changes use screenshots; navigation, active simulation, and Back behavior use short recordings. Empty slots are intentional and never render as broken media.

Evidence state: twelve native iOS screenshots and recordings are embedded directly in this file. One deliberate placeholder remains for Android hardware-Back containment, which is not claimed as verified.
Verification snapshot

Deterministic contracts and native proof aligned.

The iOS debug client built, launched, and exercised the changed surfaces in dark mode, including rapid navigation and reduced motion. The sole partial item is explicitly limited to Android hardware-Back containment.

Passed

Roster identity

Exact home-nation distribution: England 25, Scotland 6, Wales 4, Northern Ireland 2. All supported labels validate.

Passed

Population math

W50 counts, ranges, typical averages, clamping, and lightweight/full-profile parity pass focused core and mobile tests.

Passed

Ranking cohorts

Tour and qualifying labels, counts, ladder terminology, active W context, and profile W precedence pass focused automation.

Passed

Route contracts

Stable tab roots, parameterized descendants, owning-tab fallbacks, and legacy mappings pass focused navigation tests without loops.

iOS passed · Android pending

Mode containment

Entry, all four tabs, Career Home, Cabinet, Season, World, and explicit Exit were exercised in the iOS debug build. Android hardware Back remains the only open platform-specific proof.

Passed

Motion lifecycle

The native recording shows active simulation feedback and its removal when the playable match becomes available. Reduced motion preserves a clear static busy state without ambient movement.

Distinctness audit passed. Population ranges, cohort discovery, one bot’s expected average, Career shell ownership, descendant containment, and truthful simulation feedback are separate outcomes. Shared implementation is never counted once per screen.
Machine-readable mirror

Nine candidates, fully traceable.

Search by screen, benefit, file, or candidate ID. Expand an entry for accessibility, reduced-motion behavior, risk, verification, and implementation paths.

9 visible