Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,10 @@ If a change adds or updates dependencies, Actions, bundled binaries, or model ar
If a change affects build, packaging, release, updater, bundled assets, or target-OS behavior, keep it aligned with the mandatory Windows and macOS build policy.
If GitHub-specific execution is required and no repo exists yet, treat that as bootstrap work rather than a default blocker.

## Current Status

The core implementation backlog (Issue #26) has been successfully completed. BandScope now features a functioning local-first workflow, including audio intake, Python-based offline analysis, section/role extraction, manual user overrides, and CSV/JSON cue-sheet exports. The repository maintains 100% measured test coverage and 100% measured docstring coverage for the `services/analysis-engine` package and `apps/desktop` frontend components. TODO: Expand CI coverage threshold enforcement to all future sub-packages.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## Workspace layout

- `apps/desktop` - Tauri + React desktop shell
Expand Down
70 changes: 70 additions & 0 deletions docs/plans/2026-03-27-bandscope-roadmap-completion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# BandScope Roadmap Completion (Issue #26)

## Purpose

This document records the completion of the "BandScope ๊ตฌํ˜„ ๋ฐฑ๋กœ๊ทธ: ๊ธฐ์ดˆ -> ๊ณ ๊ธ‰ MECE ๋ถ„ํ•ด" roadmap defined in Issue #26.
It summarizes the implementation phases that successfully elevated BandScope from an initial harness skeleton to a fully functional rehearsal-analysis product.

## Completed Milestones

1. **Shared Domain Contracts (#29)**
- Defined the core `song -> section -> role` domain model.
- Introduced the JSON-based IPC contract ensuring strict bounded contexts between the React UI and the Python engine.

2. **Cross-Architecture Builds (#38)**
- Enabled robust Windows/macOS `arm64` and `amd64` packaging to adhere to cross-platform security and distribution policies.

3. **Python Quality Gates (#40)**
- Enforced 100% test coverage and 100% docstring coverage for the Python analysis engine.

4. **Local Analysis Orchestration & Audio Intake (#32, #33)**
- Implemented secure, local-first file intake.
- Built a subprocess orchestrator with zero network dependency to manage `bandscope-cli`.

5. **Role, Section, and Cue Extraction (#35, #34, #31)**
- Engineered pipelines to parse section boundaries, extract specific instrument/vocal roles, and detect overlapping sections.
- Designed heuristic confidence metrics and ranges for each parsed role.

6. **Rehearsal Workspace UI & Manual Overrides (#28, #27)**
- Delivered a "practical band mate" experience.
- Implemented manual overrides allowing users to fix automated analysis.
- Preserved `model-generated` vs. `user-confirmed` provenance.

7. **Export & Workflow Support (#36, #30)**
- Added CSV (cue-sheet) and JSON (chart) export features.
- Implemented policy-constrained YouTube import with local audio fallback prompts, strictly avoiding bypass behavior.

## Current State & Next Steps

With the completion of these epics, the BandScope repository represents a robust, local-first desktop application with comprehensive test coverage, strict type checks, and secure IPC boundaries.

Future work will transition from foundational pipeline engineering to:
- Tuning analysis heuristics.
- Expanding instrument-specific features (e.g., precise capo/tuning detection).
- Enhancing playback and waveform visualization capabilities.

## Security Notes

### Attack Surface
- Minimal footprint; the primary interface handles untrusted user-supplied local audio files and structured JSON IPC messaging.
- Secondary footprint via policy-constrained YouTube metadata fetch endpoints.

### Trust Boundary
- Local IPC socket acts as a trust boundary between the React UI (untrusted) and the Python analysis engine (trusted).
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- Audio inputs from external sources are considered untrusted.

### Mitigations
- Strict schema validation for all IPC messages.
- Subprocesses executed with `shell=False` to prevent injection.
- Zero network dependency for core analysis workflows.

### Test Points
- 100% test coverage enforced on all analysis pipelines and orchestrator boundaries.
- Negative tests for malformed JSON and corrupted audio inputs.

### Realistic Threats
- Maliciously crafted audio files triggering buffer overflows in underlying parsing libraries.
- Privilege escalation via IPC injection (mitigated by strict schema).

### Remaining Risk
Comment thread
coderabbitai[bot] marked this conversation as resolved.
- Third-party library vulnerabilities in complex dependencies (e.g., ffmpeg or ML parsers), tracked via SBOM and dependency reviews.
Loading