Chasing MasteryDevelopers
Complete verticals
Chasing Mastery public platform

Darts, end to end

Trace the demanding Darts reference implementation through every public SDK, Station, creator, and release boundary.

Darts Core is the proof that the extension platform can support a rich vertical without privileged Darts behavior in the host. It contains eight modes, three rule families, manual and automatic input, four progression lanes, corrections, overlays, matches, narration, OBS synchronization, and immutable Studio intake.

What the member receives

Adding the official Darts Experience Suite provisions all eight immutable package defaults. There is no rank-threshold form and no required setup step.

Practice ModePrimary experienceImportant MeasurementsProgression
Around the ClockClear singles 1–20darts used, target accuracySingles Accuracy
Around the Clock + BullClear 1–20 and bulldarts used, target accuracyindependent history
Doubles Around the ClockClear every doubledarts used, target accuracyindependent history
Trebles Around the ClockClear every trebledarts used, target accuracyindependent history
100 Darts at 20Score 100 darts at 20target score, three-dart average, accuracyScoring at 20
Doubles RotationPractice finishing doublesdarts used, target accuracyDoubles Finishing
501Double-out X01three-dart average, darts used, bustsX01 Matchplay
301Faster double-out X01three-dart average, darts used, bustsindependent history

Each completed Attempt is terminal by itself. A member can practice any mode with no Sprint, or let a compatible Attempt advance an active Sprint.

The artifact graph

@chasingmastery/darts-domain-kit
  pure rules · target normalization · board geometry · checkout policy · fixtures
                         │ bundled with provenance

club.chasingmastery/darts-core@0.4.0
  8 engines · player · overlay · progressions · story · matches · narration
                         ▲ exact observation contract

club.chasingmastery/autodarts
  separately reviewed Station sidecar · source health · visit snapshots

The Domain Kit is a build-time dependency, not a mutable production service. The .cmpkg release is self-contained. The AutoDarts connector is separately installed, reviewed, granted, bound, verified, and revocable.

One source-neutral reducer

The portable dartboard sends darts.throw with canonical segments such as S20, D16, T19, SB, DB, or MISS. AutoDarts sends an exact cumulative visit snapshot. The package converts both into the same ordered throw facts before applying an ordered-target, fixed-count, or X01 rule family.

darts.throw command ───────────┐
                               ├─ canonical throw → rule family → transition
AutoDarts visit observation ───┘

That distinction catches subtle failures. A bull hit while aiming at 20 is a valid off-target miss—not an invalid numbered segment. Duplicate cumulative visits, stale source revisions, reconnect replay, and partial visits are deduplicated before they can corrupt the Attempt.

Attempt and correction semantics

Every accepted throw receives a stable package transition key. Ordinary input creates immutable evidence. A later host-authorized replace or remove correction replays the exact pinned package release from that evidence, creates a new Attempt revision, retracts obsolete Story Events, and rebuilds progression and Sprint projections. A terminal Attempt reopens only when the corrected rules require it.

This is intentionally stricter than a pre-terminal UI undo. The package declares correction meaning; the host authorizes and persists the revision.

Player and overlay

The same package-owned player artifact runs in a browser iframe, native WebView, and Workbench. It owns board geometry, target state, visit input, checkout guidance, correction intent, terminal result, keyboard/touch interaction, and responsive presentation.

The read-only overlay consumes bounded Activity Presentation. It explains the current target or score, pace, goal, change, next milestone, connection quality, and terminal outcome without receiving command or correction capability.

Progression and history

The package fixes four progression definitions: Singles Accuracy, Scoring at 20, Doubles Finishing, and X01 Matchplay. The host projects each member's state from comparable Attempts and retains the exact definition/configuration lane. Changing result meaning or evidence policy creates a new revision or lane; presentation improvements can remain comparable.

Coordination

The package contributes match policy for 501, 301, and 100 Darts at 20. The host owns Live Run identity, invitations, participants, readiness, presence, recovery, and routing. Package policy owns scoring, eligible turns, legs, winners, outcomes, rematches, and domain presentation.

  • shared_sequenced routes one physical board only to the eligible player.
  • independent lets remote participants use separate authorized inputs.
  • A match remains coordination around atomic Attempts, never a replacement for ordinary practice history.

Narration and creator evidence

X01 engines emit declared broadcast facts. A package-owned narration director maps them to provider-neutral captions, voice roles, priority, expiry, pacing, and cancellation. The host owns audio provider credentials and playback. Narration failure never blocks a throw.

Committed Story Events travel independently to Station. Station samples the OBS capture clock and creates media anchors; corrections produce retractions. The sealed creator evidence pins package releases, Attempt revisions, Measurements, Story Events, gaps, media digests, and capture timing before Content Studio receives an immutable intake.

Source map: learn from the implementation

Suite and contributionspackages/darts-core/src/package.ts

Eight activities, defaults, artifacts, progression, story, overlays, coordination, and narration through definePackage.

Modes and contractspackages/darts-core/src/modes.ts

Exact rule families, Measurements, result contracts, progressions, and forms.

Source-neutral enginepackages/darts-core/src/engine.ts

Manual commands and visit observations converge before deterministic rules.

Portable playerpackages/darts-core/src/ui.ts

Rich manual interaction, corrections, accessibility, and host bridge usage.

Read-only overlaypackages/darts-core/src/overlay.ts

Mode-aware viewer presentation with no activity authority.

Coordination policypackages/darts-core/src/coordination.ts

Shared-board and independent-input match semantics.

Narration policypackages/darts-core/src/narration.ts

Provider-neutral X01 cue planning and cancellation.

Pure Domain Kitpackages/darts-domain-kit/src/index.ts

Reusable domain truth bundled at build time.

AutoDarts sidecarexamples/autodarts-live-sidecar

Reviewed local source translation with exact grants and health.

Gold-path integrationscripts/darts-runtime-api-smoke.mjs

Real Library, runtime, API, manual/automatic equivalence, progression, and Sprint evidence.

Creator certificationscripts/darts-creator-capture-smoke.mjs

Station, OBS, media, corrections, sealed evidence, and Studio intake.

Reproduce this depth in another Pursuit

Do not copy Darts identifiers. Reproduce the pattern:

  1. Extract pure domain truth and paired manual/automatic fixtures.
  2. Publish a coherent multi-mode Suite with useful immutable defaults.
  3. Normalize every input source into the same domain actions.
  4. Keep result contracts and progression lanes explicit and versioned.
  5. Build a rich member player and a separate read-only viewer overlay.
  6. Emit semantic story facts; add coordination and narration only where real.
  7. Prove the complete journey through public artifacts and retained evidence.

On this page