Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
552d06f
docs: add BandScope product and technical gap baseline
seonghobae Aug 20, 2026
9ac6d71
docs(adr): record BandScope 1.0 readiness decision
seonghobae Aug 20, 2026
bd872d6
docs(doctoring): add product-readiness references
seonghobae Aug 20, 2026
9999464
docs: add machine-readable open PR queue seed
seonghobae Aug 20, 2026
f3afdc0
test(readiness): reject invalid open PR queue manifests
seonghobae Aug 20, 2026
5d86aa8
feat(readiness): validate open PR queue manifest
seonghobae Aug 20, 2026
3e6b00b
feat(readiness): enforce PR queue contract in quickcheck
seonghobae Aug 20, 2026
d3604ab
test(readiness): isolate duplicate PR regression
seonghobae Aug 20, 2026
d9e6dba
test(readiness): reject unsupported queue evidence
seonghobae Aug 21, 2026
21d87ff
fix(readiness): reject unsupported queue evidence
seonghobae Aug 21, 2026
6456d32
test(readiness): wrap queue evidence docstring
seonghobae Aug 21, 2026
d5b8793
test(readiness): require fail-closed live PR queue refresh
seonghobae Aug 23, 2026
6d559b6
feat(readiness): add bounded live PR queue refresher
seonghobae Aug 23, 2026
d12d51b
docs(readiness): correct protected version evidence
seonghobae Aug 23, 2026
ee6783a
test(readiness): require per-PR base identity
seonghobae Aug 23, 2026
71b5c32
fix(readiness): bind every PR to resolved base tip
seonghobae Aug 23, 2026
f2373ba
test(readiness): require fixed-host GitHub transport
seonghobae Aug 23, 2026
b17c1a4
fix(readiness): pin token transport to GitHub host
seonghobae Aug 23, 2026
9853e24
docs(readiness): align ADR version evidence
seonghobae Aug 23, 2026
db52897
fix(security): document verified HTTPSConnection contract
seonghobae Aug 23, 2026
735f3f7
docs(readiness): refresh gap baseline with 2026-08-24 exact-head evid…
seonghobae Aug 24, 2026
f1bd911
test(readiness): reject ambiguous queue authority
seonghobae Aug 24, 2026
7bf4e00
fix(readiness): constrain queue routing evidence
seonghobae Aug 24, 2026
02e1fe8
docs(readiness): define triage-only T8 train
seonghobae Aug 24, 2026
0332756
test(readiness): type queue authority fixtures
seonghobae Aug 24, 2026
0386ce7
Merge branch 'develop' into docs/bandscope-product-readiness-baseline
seonghobae Aug 25, 2026
08e1f4d
Merge branch 'develop' into docs/bandscope-product-readiness-baseline
seonghobae Aug 26, 2026
7e4e25e
chore(queue): preserve canonical gap baseline while stacking #968
seonghobae Sep 1, 2026
aae43ff
merge: stack executable queue contract after #1116 baseline
seonghobae Sep 1, 2026
b1dd8c6
test(queue): reject invalid predecessor graphs
seonghobae Sep 1, 2026
e3e1c57
fix(queue): validate predecessor dependency graph
seonghobae Sep 1, 2026
9f996b8
test(queue): preserve dependency routing on refresh
seonghobae Sep 1, 2026
15db16d
fix(queue): preserve reviewed predecessor routing
seonghobae Sep 1, 2026
f1cee0a
test(queue): require explicit overlap succession routing
seonghobae Sep 1, 2026
6cefa46
fix(queue): validate overlap ownership and succession
seonghobae Sep 1, 2026
049d875
fix(queue): preserve reviewed overlap succession routing
seonghobae Sep 1, 2026
807c832
test(queue): make overlap failure oracles causal
seonghobae Sep 1, 2026
50f9a0c
test(queue): include stacked PRs in complete inventory
seonghobae Sep 1, 2026
d5adebe
fix(queue): validate exact base identity for stacked PRs
seonghobae Sep 1, 2026
8eaeb88
fix(queue): enumerate stacked PR bases without filtering
seonghobae Sep 1, 2026
6b750e2
test(queue): make live branch tip authoritative over PR base snapshot
seonghobae Sep 1, 2026
ea0f180
fix(queue): trust independently resolved live base tips
seonghobae Sep 1, 2026
62afa1a
test(queue): stop treating stale PR base snapshots as live authority
seonghobae Sep 1, 2026
337d952
test(queue): resolve target tips from one branch snapshot
seonghobae Sep 1, 2026
dbc69bd
fix(queue): resolve stacked bases from one bounded ref snapshot
seonghobae Sep 1, 2026
fbc3bd3
test(queue): reproduce truncated branch-tip inventory
seonghobae Sep 1, 2026
6c9a36c
fix(queue): paginate live branch-tip inventory
seonghobae Sep 1, 2026
8200cc3
test(queue): align branch snapshot contract with pagination
seonghobae Sep 1, 2026
ec825fa
test(queue): cover bounded branch-ref pagination failures
seonghobae Sep 1, 2026
7168424
test(queue): require generated human merge-train view
seonghobae Sep 1, 2026
f9e996f
feat(queue): generate safe human merge-train view
seonghobae Sep 1, 2026
1c95fa6
test(queue): reject symlinked publication parents
seonghobae Sep 1, 2026
def81ee
fix(queue): contain manifest publication inside worktree
seonghobae Sep 1, 2026
324d02a
test(queue): reject human-view parent symlink escape
seonghobae Sep 1, 2026
d6cb9ae
fix(queue): contain human-view publication path
seonghobae Sep 1, 2026
2c44a37
merge(queue): restack on current gap baseline
seonghobae Sep 1, 2026
9bdd910
merge(queue): restack on refreshed gap baseline
seonghobae Sep 1, 2026
c7fa29e
merge(queue): restack on current canonical gap baseline
seonghobae Sep 1, 2026
9c89a82
ci(queue): exercise live merge-train refresh
seonghobae Sep 1, 2026
26514e3
test(queue): require live draft and update receipts
seonghobae Sep 1, 2026
32de815
test(queue): require exact-head refresh on every owner push
seonghobae Sep 1, 2026
e63f10d
fix(queue): bind live evidence to every owner-branch head
seonghobae Sep 1, 2026
b7d5943
chore(queue): merge current canonical baseline into #968
seonghobae Sep 1, 2026
2f2adfa
chore(queue): restack #968 on corrected canonical baseline
seonghobae Sep 1, 2026
84a008e
fix(queue): validate live draft and update freshness evidence
seonghobae Sep 1, 2026
e213182
fix(queue): capture live PR draft and update evidence
seonghobae Sep 1, 2026
d54219d
chore(queue): restack #968 on current canonical baseline
seonghobae Sep 1, 2026
7ed8207
chore(queue): restack #968 on current #1116 head
seonghobae Sep 2, 2026
9f61c9d
chore(queue): restack #968 on latest #1116 head
seonghobae Sep 2, 2026
1f58d52
chore(queue): restack on current canonical baseline
seonghobae Sep 2, 2026
a61118b
feat(queue): collect exact-head readiness receipts
seonghobae Sep 2, 2026
8c73259
test(queue): reproduce non-durable reviewed dispositions
seonghobae Sep 2, 2026
bdb458e
feat(queue): validate reviewed merge dispositions
seonghobae Sep 2, 2026
80afbcf
fix(queue): preserve reviewed dispositions across live refresh
seonghobae Sep 2, 2026
77fe1a7
fix(queue): bind readiness to reviewed current disposition
seonghobae Sep 2, 2026
b5d0a39
merge(queue): restack on current canonical baseline
seonghobae Sep 2, 2026
fb6e6ed
docs(queue): sync canonical baseline doctoring
seonghobae Sep 2, 2026
0565898
docs(queue): sync canonical product gap baseline
seonghobae Sep 2, 2026
efb31d6
merge(queue): restack on refreshed canonical baseline
seonghobae Sep 2, 2026
0456c1b
docs(queue): sync central queue-owner truth
seonghobae Sep 2, 2026
7d65fa5
docs(queue): sync central control-plane evidence
seonghobae Sep 2, 2026
6e7b663
merge(queue): restack on current central-control baseline
seonghobae Sep 2, 2026
bfdc388
merge(queue): restack on current canonical baseline
seonghobae Sep 2, 2026
efe7848
test(queue): keep live overlap fixtures contract-valid
seonghobae Sep 2, 2026
ab89d16
chore(queue): restack executable queue on canonical baseline
seonghobae Sep 2, 2026
a1ccf93
chore(queue): restack on current canonical baseline
seonghobae Sep 2, 2026
57b7a3d
chore(queue): restack on refreshed canonical baseline
seonghobae Sep 2, 2026
45ef3da
chore(queue): restack on current canonical baseline
seonghobae Sep 2, 2026
0b615e1
chore(queue): restack on refreshed canonical baseline
seonghobae Sep 2, 2026
b44a843
chore(queue): reconcile latest canonical baseline
seonghobae Sep 2, 2026
aaafee0
chore(queue): reconcile recovery contract
seonghobae Sep 2, 2026
9f25cf6
chore(queue): reconcile recovery-origin contract
seonghobae Sep 2, 2026
0e11827
chore(queue): reconcile current canonical baseline
seonghobae Sep 2, 2026
db9a492
chore(queue): reconcile structured baseline verification
seonghobae Sep 2, 2026
b0fbf1a
chore(queue): reconcile current baseline owner
seonghobae Sep 2, 2026
624b9b5
test(queue): invalidate reviews after base movement
seonghobae Sep 2, 2026
774e751
test(queue): bind reviewed decisions to base identity
seonghobae Sep 2, 2026
70138d6
fix(queue): invalidate routing after base movement
seonghobae Sep 2, 2026
cbce060
test(queue): invalidate succession after successor movement
seonghobae Sep 2, 2026
3591195
fix(queue): invalidate routing after related PR movement
seonghobae Sep 2, 2026
7bec1c0
test(queue): cover related identity freshness branches
seonghobae Sep 2, 2026
ca82dcd
chore(queue): restack on current baseline head
seonghobae Sep 3, 2026
fcdc049
chore(queue): adopt baseline Mermaid note regression
seonghobae Sep 3, 2026
eb0d73d
chore(queue): adopt baseline Mermaid parser repair
seonghobae Sep 3, 2026
f8a4393
chore(queue): restack on current baseline head
seonghobae Sep 3, 2026
7d158d7
docs(queue): align ADR with canonical Figma authority
seonghobae Sep 3, 2026
8782d35
chore(stack): merge current baseline owner into queue control
seonghobae Sep 3, 2026
d14ffaf
chore(stack): adopt refreshed baseline owner
seonghobae Sep 4, 2026
6e6e4c0
Merge refreshed gap baseline into queue control
seonghobae Sep 4, 2026
25e1610
chore(queue): adopt refreshed product-gap baseline
seonghobae Sep 4, 2026
12aa9e0
chore(queue): adopt canonical baseline source repair
seonghobae Sep 5, 2026
68b6571
chore(queue): adopt v2 persistence baseline repair
seonghobae Sep 5, 2026
2ef28c9
chore(queue): adopt current v2 persistence baseline
seonghobae Sep 5, 2026
e54830d
chore(queue): adopt current source-admission baseline
seonghobae Sep 6, 2026
f8a8cd8
chore(queue): follow current admission traceability
seonghobae Sep 6, 2026
0af39d3
chore(queue): adopt current admission baseline
seonghobae Sep 6, 2026
8a50c7c
chore(queue): reconcile current canonical baseline
seonghobae Sep 6, 2026
7c773cd
chore(queue): adopt current canonical baseline
seonghobae Sep 6, 2026
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
49 changes: 49 additions & 0 deletions .github/workflows/open-pr-queue-live.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: open-pr-queue-live

on:
push:
branches:
- docs/bandscope-product-readiness-baseline
workflow_dispatch:

permissions:
contents: read
pull-requests: read
checks: read
statuses: read

jobs:
refresh-live-queue:
name: queue / live-refresh-contract
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Refresh from bounded live GitHub authority
env:
GITHUB_TOKEN: ${{ github.token }}
run: python3 scripts/checks/refresh_open_pr_queue.py
- name: Validate machine queue without network authority
run: python3 scripts/checks/verify_open_pr_queue.py
- name: Collect exact-head check, review, and thread readiness
env:
GITHUB_TOKEN: ${{ github.token }}
run: python3 scripts/checks/collect_open_pr_readiness.py
- name: Validate exact-head readiness without network authority
run: python3 scripts/checks/verify_open_pr_readiness.py
- name: Render deterministic human queue
run: python3 scripts/checks/render_open_pr_queue.py
- name: Verify machine/human projection parity
run: python3 scripts/checks/render_open_pr_queue.py --check
- name: Preserve exact-head live queue evidence
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: open-pr-queue-${{ github.sha }}
path: |
docs/product-readiness/open-pr-queue.json
docs/product-readiness/open-pr-queue.md
docs/product-readiness/open-pr-readiness.json
if-no-files-found: error
retention-days: 7
167 changes: 167 additions & 0 deletions docs/architecture/decisions/0001-bandscope-1-0-product-readiness.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
# ADR-0001: BandScope 1.0 Product-Readiness Program and Merge Trains

- **Status:** Proposed
- **Date:** 2026-08-20
- **Decision owners:** BandScope maintainers
- **Program issue:** [#958](https://github.com/ContextualWisdomLab/bandscope/issues/958)
- **Figma file ID:** `zthWmqfNKUgJBECvv002Qk`

## Context

BandScope has grown through many narrow, independently reviewable pull requests. The 2026-08-20 snapshot contains 83 open PRs above protected `develop@acdbea6344fe1231c39535b575f4de35e4c607c9`.

The repository already contains valuable local-first architecture, scientific-analysis, security, accessibility, and rehearsal-workspace work. The queue nevertheless lacks a single commercial completion sequence. Several boundaries have many small writers while other buyer-critical boundaries—trusted distribution, active playback, durable projects, support evidence, and licensed activation—have no complete protected vertical.

A large number of individually plausible PRs can make delivery less reliable when:

- several heads carry unrelated dependency/toolchain changes;
- adjacent UI slices create independent state or action stores;
- reviews and required checks are bound to predecessor heads;
- protected-base failures are copied into leaf PRs;
- a closed or squash-merged predecessor changes the successor's ancestry;
- design states are represented before runtime behavior exists;
- a validation package is described as a release without signing, notarization, updater, or rollback evidence.

The saved Figma file is useful but also demonstrates the need for source parity. Its cover describes a 28-page design-system plan while the current file exposes two top-level pages. Its footer and the reviewed repository/Tauri package metadata all cite version `0.1.3`; the remaining parity risk is planned or unimplemented design state rather than a current version-label mismatch.

## Decision

### 1. Preserve the product boundary

BandScope remains a **local-first rehearsal decision tool**.

It will:

- analyze user-authorized local audio;
- explain evidence, confidence, and limitations;
- turn analysis into concrete rehearsal actions;
- provide an active, accessible passage-rehearsal player;
- preserve durable local projects and bounded handoffs;
- distribute trusted desktop artifacts and support evidence.

It will not become a DAW, notation editor, plugin host, mandatory cloud account, or unbounded general-purpose media/file processor.

### 2. Use one completion program

Issue #958 is the parent product-completion program. The following child issues own independent buyer boundaries:

- #960 — trusted release, updater, and rollback;
- #961 — active rehearsal player;
- #962 — project format, autosave, migration, and recovery;
- #963 — diagnostics and offline support bundle;
- #964 — licensed demo and first-run activation;
- #965 — Figma, Storybook, shipped UI, and WCAG parity;
- #966 — dependency-aware PR convergence.

Existing canonical accuracy, resource, handoff, supply-chain, and platform issues remain authoritative where their responsibility already exists.

### 3. Process work as dependency-aware merge trains

Each reviewed open PR must belong to exactly one initial train:

- `T0` dependency, toolchain, workflow, and quality base;
- `T1` local input, filesystem authority, resource admission, and cancellation;
- `T2` scientific accuracy, MIR evaluation, and numerical parity;
- `T3` rehearsal actions and active-player vertical;
- `T4` project portability, handoff, and interoperability;
- `T5` activation, UI system, Storybook, and accessibility;
- `T6` diagnostics, redaction, security evidence, and supportability;
- `T7` signed commercial release and updater.

A live refresh may place newly discovered PRs in `T8`, a **triage-only temporary train** owned by issue #966. `T8` is inventory evidence, not an actionable merge train: every `T8` PR must be reviewed and reclassified to exactly one of `T0`–`T7` before any source/ref mutation, merge-readiness decision, auto-merge, or merge action is taken for that PR.

The initial routing is an investigation aid. Issue #966 must refresh the live exact head, checks, reviews, unresolved threads, dependencies, and succession before any action.

### 4. Enforce one canonical writer per boundary

A product/file boundary may have multiple active PRs only when their stack order is declared. Otherwise maintainers must select one canonical PR, transfer unique requirements/tests, and close duplicates or superseded heads with succession evidence.

No feature PR may carry an unrelated dependency, lockfile, workflow, or toolchain baseline. Those changes belong to `T0` and are inherited only after protected integration.

### 5. Treat exact-head evidence as non-transferable

A PR may merge only when its unchanged exact current head has:

- every required repository and central check in terminal success;
- qualifying independent non-author approval that covers the last push;
- zero unresolved actionable review threads;
- branch-protection acceptance without bypass;
- required repository-owned production statement and branch coverage;
- required public API documentation evidence.

Queued, skipped-required, failed inherited-base, predecessor-head, protected-base, model-only, self/author, or administrative-bypass evidence is not success.

### 6. Define design authority explicitly

- Runtime behavior, semantics, localization keys, and version identity originate in the repository.
- Design tokens are versioned in code and synchronized to Figma variables.
- Storybook is the executable component/state inventory.
- Figma file `zthWmqfNKUgJBECvv002Qk` is the reviewed visual/interaction specification.
- The shipped Tauri application is the final acceptance target.
- A Figma or Storybook state that is not implemented must be marked proposed rather than complete.

### 7. Release only after measurable product verticals

A release candidate is not created merely because packaging succeeds. The protected release commit must carry:

- real decoded-audio MIR acceptance and claim boundaries;
- bounded resource and cancellation evidence;
- active-player acceptance;
- project migration and recovery evidence;
- end-to-end accessibility evidence;
- support-bundle/privacy evidence;
- signed Windows artifacts;
- signed and notarized macOS artifacts;
- signature-verified updater and rollback evidence;
- checksums, SBOM, and build provenance.

## Consequences

### Positive

- Buyers can evaluate a coherent rehearsal workflow rather than isolated features.
- Maintainers can make explicit succession decisions and reduce review drift.
- Scientific, accessibility, security, release, and design evidence are bound to the same product version.
- Dependency and workflow changes stop contaminating unrelated feature heads.
- Waiting for one external review lane does not stop independent productive work.

### Costs

- Some existing PRs will be restacked, reconstructed, superseded, or closed.
- Exact-head verification must be repeated after ancestry changes.
- The initial queue manifest requires continuing maintenance.
- Design work may be revised when it does not match implemented contracts.
- A 1.0 release is later than an unsigned or evidence-light package, but materially more trustworthy.

## Rejected alternatives

### Merge every open PR in numerical order

Rejected because PR number is not dependency order, and merging all work can preserve duplicate stores, stale architecture, and conflicting dependency baselines.

### Close most PRs solely to reduce the count

Rejected because unique tests, security findings, and product requirements could be lost. Closure requires explicit succession evidence.

### Treat the Figma file as the product source of truth

Rejected because the current file contains planned or unimplemented pages. Behavior, semantics, and version identity must remain executable and testable in code.

### Release unsigned artifacts and add trust later

Rejected because signing, notarization, updater verification, project compatibility, and rollback are part of the commercial distribution contract.

### Expand into a DAW

Rejected because recording, plugin hosting, free-form mixing, and composition would dilute the buyer problem and multiply real-time/audio-platform risk.

## Review triggers

This ADR must be revisited when:

- the product boundary changes beyond rehearsal decision/support;
- BandScope adds a mandatory cloud account or remote project storage;
- the Figma source-of-truth model changes;
- the PR queue no longer needs train-based governance;
- the application adopts a different desktop/runtime distribution architecture;
- a project format or updater change makes rollback guarantees materially different.
48 changes: 48 additions & 0 deletions docs/doctoring/PRODUCT_READINESS_REFERENCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Product Readiness References

This bibliography supports the BandScope 1.0 product-readiness baseline and related issues. Citations use APA 7th style where the source provides sufficient publication metadata. Product documentation pages are cited as organizational web resources and must be rechecked when their upstream version changes.

## Desktop distribution and update

Apple Inc. (n.d.). *Notarizing macOS software before distribution*. Apple Developer Documentation. https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution

Microsoft. (n.d.). *Sign an app package using SignTool*. Microsoft Learn. https://learn.microsoft.com/windows/msix/package/sign-app-package-using-signtool

Tauri Contributors. (n.d.). *Application signing*. Tauri. https://v2.tauri.app/distribute/sign/

Tauri Contributors. (n.d.). *Updater plugin*. Tauri. https://v2.tauri.app/plugin/updater/

## Accessibility and executable design evidence

Storybook Contributors. (n.d.). *Accessibility testing*. Storybook. https://storybook.js.org/docs/writing-tests/accessibility-testing

World Wide Web Consortium. (2023). *Web Content Accessibility Guidelines (WCAG) 2.2*. https://www.w3.org/TR/WCAG22/

World Wide Web Consortium. (2023). *Accessible Rich Internet Applications (WAI-ARIA) 1.2*. https://www.w3.org/TR/wai-aria-1.2/

## Music-information-retrieval evaluation

Bittner, R. M., Salamon, J., Tierney, M., Mauch, M., Cannam, C., & Bello, J. P. (2014). MedleyDB: A multitrack dataset for annotation-intensive MIR research. In *Proceedings of the 15th International Society for Music Information Retrieval Conference* (pp. 155–160). https://medleydb.weebly.com/

MIREX. (n.d.). *Audio chord estimation*. Music Information Retrieval Evaluation eXchange. https://www.music-ir.org/mirex/wiki/2024:Audio_Chord_Estimation

Raffel, C., McFee, B., Humphrey, E. J., Salamon, J., Nieto, O., Liang, D., & Ellis, D. P. W. (2014). mir_eval: A transparent implementation of common MIR metrics. In *Proceedings of the 15th International Society for Music Information Retrieval Conference* (pp. 367–372). https://craffel.github.io/mir_eval/

Rafii, Z., Liutkus, A., Stöter, F.-R., Mimilakis, S. I., & Bittner, R. (2019). MUSDB18-HQ—An uncompressed version of MUSDB18. *Zenodo*. https://doi.org/10.5281/zenodo.3338373

Stöter, F.-R., Liutkus, A., & Ito, N. (2018). The 2018 Signal Separation Evaluation Campaign. In E. Vincent, A. Yeredor, Z. Koldovský, & P. Tichavský (Eds.), *Latent Variable Analysis and Signal Separation* (pp. 293–305). Springer. https://doi.org/10.1007/978-3-319-93764-9_28

## Use in BandScope

These sources do not by themselves prove BandScope conformance or accuracy. Each cited requirement must map to:

```text
source requirement or evaluation method
→ BandScope product decision
→ owning issue and implementation
→ exact fixture and rights evidence
→ current-head test/build/release evidence
→ known limitation and supported claim
```

Official certification, notarization, code-signing, conformance, or benchmark claims may be made only after the corresponding external process and exact release artifact have been verified.
Loading