Repository navigation
Description
Buyer-visible gap
A buyer cannot evaluate BandScope from architecture documents, unit tests, or an empty workspace. The first launch must demonstrate the actual product value without requiring the user to locate a suitable song, understand MIR terminology, install an undocumented dependency, or guess the next action after analysis.
The live queue includes useful Storybook, empty/error, navigation, priority, first-part, loop, count-in, and cue slices (#897–#905 and related T3 work), but no single protected journey proves that a new musician reaches a useful rehearsal action with licensed, reproducible input.
Product outcome
A clean installation offers an optional, clearly licensed demo rehearsal and a parallel Use my own song path:
launch
→ choose demo or local file
→ choose role and rehearsal goal
→ analyze with honest stage progress and limitations
→ open the most important cue
→ loop or mark it for rehearsal
→ save and reopen the project
The demo must exercise the same production file validation, resource admission, decoding, analysis, rehearsal-player, persistence, and recovery boundaries as user audio.
The first-run journey consumes #965's current localization/accessibility contract. KO/EN/JA/ZH/VI/ES/DE/FR are the required shipped locale matrix; Korean/English-only evidence is an intermediate slice. First-run copy must come through the versioned translation-ledger/screen-key contract rather than Figma-only strings or ontology labels.
Required scope
Licensed demo package
- Include or reproducibly acquire a redistributable song/fixture with explicit audio, stem, annotation, artwork, and attribution rights.
- Record source, author/performer credit, exact hashes, transformation history, license text, and permitted redistribution/evaluation uses.
- Use real decoded audio through the production boundary; do not substitute direct feature arrays or mocked browser success.
- Include ground-truth annotations sufficient to connect the demo to [Product Gap] Add real-audio MIR accuracy acceptance benchmarks #770 accuracy evidence.
- Keep private/commercial benchmark assets separate from the public demo.
First-run state machine
- Present Try the demo and Use my own song immediately and state the local-first privacy boundary in one action-oriented sentence.
- Ask only for information required to produce a useful result: intended role, optional skill level, and rehearsal goal.
- Detect missing runtime/model/backend prerequisites before expensive work and offer a supported recovery action.
- Show bounded, cancellable progress based on actual worker stages; never invent unsupported percentages.
- Land on one prioritized rehearsal action rather than a dense dashboard with no next step.
- Explain confidence, known limitations, and how the user can correct a role or section result.
- Allow experienced/returning users to skip onboarding and reopen recent projects.
- Render required first-run choices, limitations, privacy boundaries and recovery actions through [Accessibility] Reconcile Figma, Storybook and shipped UI under a WCAG 2.2 AA gate #965's versioned localization contract; safe runtime fallback does not count as locale acceptance.
Live PR convergence
- feat(workspace): Storybook tokens for rehearsal components #897 is the current executable Storybook/token slice.
- feat(workspace): put the next rehearsal action on empty and error cards #898 and feat(workspace): open existing rehearsal surfaces from the sidebar #899 own current empty/error and sidebar-navigation slices.
- feat(workspace): name tonight's export and priority actions #900 and feat(workspace): start tonight's first part from the ready board #901 own current priority/first-part slices.
- feat(workspace): loop tonight's first section on the map #903, feat(workspace): count in tonight's first section on the map #904, and preserve(workspace): first-notes navigation pending shared contract/restack #905 own current loop/count-in/first-notes slices but must converge behind [Product] Add an active rehearsal player with precise looping and role controls #961's active-player state machine.
- Other T3 cue PRs can contribute to the first rehearsal action only after [Engineering] Convert the open PR backlog into dependency-aware merge trains and product verticals #966 establishes their canonical stack/succession.
- Do not preserve multiple competing onboarding, activation, or action-completion stores.
Activation evidence
- Define local activation milestones without collecting audio, project content, paths, URLs, or identity.
- Keep evidence local by default; optional aggregate telemetry requires explicit enablement and the privacy/diagnostics contract in [Operations] Build redacted diagnostics, crash evidence and an offline support bundle #963.
- Measure at minimum:
- first launch success;
- demo/local-file choice;
- first valid audio acceptance;
- analysis started/completed/cancelled/failed by stage;
- first cue opened;
- first rehearsal action completed;
- project saved and reopened.
- Measure time-to-first-rehearsal before declaring a release threshold; do not invent a target from synthetic success.
Acceptance criteria
- Clean supported Windows and macOS installations complete the demo journey without a terminal, external account, or undocumented dependency.
- Demo audio/artwork/annotations have a checked license/provenance manifest and immutable hashes.
- Demo and user audio use the same production intake, resource, decode, analysis, player, project, and recovery boundaries.
- A measured time-to-first-rehearsal distribution is published before a release gate is chosen.
- Every failure state provides a concrete next action and preserves retry, choose-another-file, demo, and support-evidence paths.
- Keyboard-only and screen-reader users complete the entire journey.
- KO/EN/JA/ZH/VI/ES/DE/FR preserve equivalent choices, limitations, privacy/safety statements and actions; CJK/font fallback, long-content expansion and supported-window rendering satisfy [Accessibility] Reconcile Figma, Storybook and shipped UI under a WCAG 2.2 AA gate #965 without silent fallback.
- First-run translations consume [Accessibility] Reconcile Figma, Storybook and shipped UI under a WCAG 2.2 AA gate #965's versioned translation ledger and screen-key cache; ontology/domain labels are not used as an alternate writable UI-copy store.
- Local activation evidence excludes audio, lyrics, project payloads, paths, URLs, and identity.
- First-run state resumes safely after restart and never traps a returning user.
- Repository-owned production statement/branch coverage and public API documentation remain 100%.
- Current-head CI, security, license, accessibility, qualifying independent approval, zero unresolved actionable threads, and branch protection pass without bypass.
Real-world personas and failures
- first-time singer unfamiliar with MIR terminology;
- bassist selecting a role weakly represented in the mix;
- keyboard-only and screen-reader users;
- users of KO/EN/JA/ZH/VI/ES/DE/FR at narrow supported window sizes and with text expansion/CJK fallback pressure;
- offline user after installation;
- unsupported codec selected before choosing the demo;
- low-memory device triggering resource admission/fallback;
- analysis cancelled and resumed;
- corrupt or missing demo asset;
- returning user skipping onboarding and reopening a project.
Non-goals
- No mandatory account creation or cloud upload.
- No telemetry consent hidden in general terms.
- No copyrighted commercial song committed without redistribution rights.
- No synthetic or mocked result presented as production analysis success.
- No onboarding copy that promises universal musical correctness.
- No locale-support claim based only on English fallback rendering.
Activity
seonghobae commentedon Aug 22, 2026
First-run empty-card slice is on #980 (
feat/first-run-use-own-song@a6d5b6f5d2191245c5a52c4af0a7cd4e67c2200a). The empty workspace now names Use my own song as the next action. A licensed demo package is still not bundled and remains later #964 work. This does not replace #974 (analyze after a song is already selected).