Skip to content

docs: product-technical gap baseline (spec/PRD/TRD/UML + open-PR gap analysis) - #1025

Closed
seonghobae wants to merge 97 commits into
developfrom
docs/product-technical-gap-baseline
Closed

docs: product-technical gap baseline (spec/PRD/TRD/UML + open-PR gap analysis)#1025
seonghobae wants to merge 97 commits into
developfrom
docs/product-technical-gap-baseline

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

Single authoritative baseline for what BandScope is today vs. what the
ADRs, brand story, and security policy promise — including an explicit
analysis of the currently open PR series and a prioritized backlog of
buyer-perceivable gaps with acceptance criteria.

Contents

  1. Purpose & scope (open PRs explicitly included)
  2. Current product specification snapshot + Mermaid architecture overview
  3. Functional spec derivation: capability → implementation path → maturity table (verified by grep/read)
  4. Open-PR cluster analysis (the 'name tonight's first X' series)
  5. Technical gaps: Rust compute coverage, multilevel/temporal modeling, literature-derived weights, realistic accuracy tests, coverage/docstring status, security conformance, i18n, accessibility, design tokens, release readiness
  6. UML supplements (2 Mermaid diagrams) + missing UML inventory
  7. Prioritized P0/P1/P2 gap backlog (15 items, each with acceptance criteria)
  8. APA 7th references (no fabricated DOIs)
  9. Re-runnable verification commands

Current exact head: 46c7f6f630be03d012da85d6eb38ffe9b6b8f99f; base: develop@749511c3ad4000090048718f685c6bee6b3d2c25. Future loops can re-run the
verification section against a moving PR queue.

Security Notes

  • Documentation-only change; no runtime network, filesystem, URL-admission, subprocess, IPC, dependency, credential, model, update, or export path changes.
  • The baseline records those trust boundaries and their remaining gaps; any implementation follow-up must preserve the existing allowlists, fail-closed behavior, and provenance requirements.

Open in Devin Review

Summary by CodeRabbit

  • 문서화
    • 제품 범위와 기술 아키텍처 기준 문서를 최신 기준일 및 보호된 기준 버전에 맞춰 갱신했습니다.
    • 기능별 성숙도, 잔여 과제, 보안·접근성·출시 준비 상태와 검증 절차를 보완했습니다.
    • Demucs 장치 설정 및 가속 경로의 검증 기준과 미검증 상태를 명확히 했습니다.
    • 최신 PR 검사 결과와 현재 상태, 테스트 커버리지, 운영 관측성, WCAG·NIST·ISMIR 참고자료를 반영했습니다.
    • 실오디오 fixture 검색 및 최신 PR 인벤토리 확인 절차를 추가하고, 관련 검증 기준을 구체화했습니다.

…n-PR analysis)

Derives the functional specification, PRD/TRD deltas, and UML
supplements from ADRs (ARCHITECTURE.md, docs/plans), brand story,
security policy, and current code state; explicitly includes the open
PR series inventory and classifies remaining gaps into a prioritized
buyer-visible backlog with acceptance criteria.

All code claims were verified against develop@acdbea63 via grep/read;
verification commands are recorded in section 9 for future loop runs.
@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 47afe40e-1267-4c89-87f5-0d18945dbbfb

📥 Commits

Reviewing files that changed from the base of the PR and between 9bbd706 and 29136fb.

📒 Files selected for processing (1)
  • docs/product-technical-gap-baseline.md
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/product-technical-gap-baseline.md

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

BandScope의 제품·기술 Gap 기준선 문서를 2026-08-28 기준 revision과 검증 자료에 맞게 갱신했다. Demucs 실행 경로, 기술 Gap, acceptance criteria, 참고문헌 및 재검증 명령을 수정했다.

Changes

제품·기술 기준선

Layer / File(s) Summary
기준 revision과 아키텍처 상태
docs/product-technical-gap-baseline.md
기준일과 protected base를 갱신했다. Demucs의 CPU 기본 경로, configurable device 전달 및 비-CPU 경로의 미검증 상태를 구분했다.
기술 Gap과 검증 기준
docs/product-technical-gap-baseline.md
REST 기반 PR inventory와 current head별 Checks·review·approval 상태를 반영했다. 보안 추적성, Demucs 가속 경로의 admission·parity·performance qualification Gap, HMM prior, coverage, 접근성 및 운영 항목을 갱신했다. Acceptance criteria와 Gap 항목 번호도 수정했다.
참고문헌과 재검증 절차
docs/product-technical-gap-baseline.md
WCAG 2.2, ISO/IEC 40500:2025, NIST SSDF 1.1 및 ISMIR 2024 관련 자료를 추가했다. GitHub REST inventory, exact-head PR snapshot, 실오디오 fixture 검색, 접근성 snapshot, JS coverage 및 protected-base Mermaid 검색 명령을 갱신했다.

Estimated code review effort: 2 (Simple) | ~10 minutes

Merge Risk: ⚪ Minimal · up to 29136

This change only adds product and technical baseline documentation; no actionable merge-blocking risk remains beyond normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 BandScope의 제품-기술 갭 기준선 문서와 공개 PR 갭 분석이라는 주요 변경 사항을 정확히 요약합니다. 문서 변경임을 나타내며 구체적이고 관련성이 높습니다.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/product-technical-gap-baseline

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

Current-head documentation/code consistency finding on 27009790fec920759b7291a6af766bd746324f98 (same canonical docs lane; no competing PR): docs/product-technical-gap-baseline.md repeatedly states Demucs is CPU-only / has “GPU 없음” / has no GPU-CUDA-Metal path, but the exact-head production separator defaults AudioSeparationConfig.device to "cpu" and passes self.config.device directly to demucs.apply.apply_model(..., device=...). That supports a configurable accelerator device when the installed Demucs/torch platform supports it; the defensible shipped truth is CPU by default, not no GPU path exists. Please update only the current docs owner branch after refetching its head: replace the absolute no-GPU claims in the architecture diagram, capability table, technical gap/performance prose, and sequence diagram with CPU-default/configurable-device wording; keep the separate product gap that GPU/offload is not yet a verified/supported/release-gated BandScope configuration. Acceptance: every Demucs device claim matches services/analysis-engine/src/bandscope_analysis/separation/audio_separator.py; no runtime/source behavior change; current-head docs/review gates rerun. I did not mutate this branch because it has recent same-lane writer movement.

Copy link
Copy Markdown
Collaborator Author

Correction to my earlier current-head handoff on 27009790fec920759b7291a6af766bd746324f98: deeper comparison with the actual protected baseline and the canonical #781 owner changes the classification. Protected develop@acdbea6344fe1231c39535b575f4de35e4c607c9 passes AudioSeparationConfig.device into Demucs, but then calls .numpy() directly on the returned tensors; a non-CPU tensor cannot cross that boundary without first moving to host CPU. So the protected shipped/supported truth is still defensibly CPU-only, and this documentation branch should not be rewritten to claim a working protected accelerator path merely because device is configurable.

The executable non-CPU host-conversion repair belongs to canonical #866. Fresh #866 live head is 223dd78126deeb3f12a68dc140f6a83fbe422225; its _apply_model() moves non-CPU stems through .cpu() before .numpy(). #866 explicitly does not claim GPU memory admission, CPU/GPU numerical/performance parity, or release qualification. Therefore the accurate docs split is: protected baseline = CPU-supported path; active #866 = configurable-device host-conversion repair in progress; remaining product gap = accelerator admission/resource budgets + parity/performance + release qualification. This supersedes my earlier comment 5406619045; do not apply that comment's broader wording unchanged.

…sition-prior calibration sources

- JS workspaces measured 100% on 2026-08-25 (desktop + shared-types);
  the gap is the 90% gate threshold, not current coverage. Backlog item
  reworded accordingly.
- Add finding (k): central Strix provider-routing outage (openai-direct
  fallback inherited the NVIDIA NIM API base) and its root-cause fix
  tracked in ContextualWisdomLab/.github#1324; dependency CVEs unified
  under canonical owner #783.
- Expand (c) with a literature-grounded calibration method for HMM chord
  transition priors and add APA 7th entries (Burgoyne et al. 2011;
  Harte 2010; Logan & Chu 2000; Pauwels & Peeters 2013).
devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Repair only the still-current documentation-consistency findings on the existing docs/product-technical-gap-baseline branch. Refetch first and require exact current head 0745ec8656c2c432ed3c1ef8b614ae7ac4b0fbda; if it moved, inspect the intervening delta and adapt rather than overwriting it. Current unresolved threads are all in docs/product-technical-gap-baseline.md: (1) Section 5 labels (a)(f), then (k), then (g)(j); restore a coherent ordered sequence without changing the substance of the Strix operational item. (2) The test-realism claim says test directories contain no .wav/.mp3 fixture, but the Verification Method does not contain a command that proves that claim; add a repository-root-safe direct audio-fixture search (or narrow the claim), preserving the existing test_numeric_parity.py / test_api.py explanation. (3) The desktop/shared-types 100% JS coverage figures are presented as measured values while the verification section only shows thresholds; either add the actual reproducible coverage commands/artifact locations for both workspaces or label the reported figures explicitly as the 2026-08-25 measured snapshot, preserving the measured values and separate threshold discussion. (4) The documented aria-* figure must count individual attribute tokens, not matching lines; make command/result/wording agree. Do not apply the superseded broad GPU wording from comment 5406619045; comment 5406880941 is the corrected ownership split (protected baseline CPU-supported; #866 owns non-CPU host-conversion work; accelerator admission/parity/release qualification remain gaps). After edits, run the repository documentation/review gates and resolve only the four actually addressed threads. Commit to this same branch and report the resulting exact head/evidence. Do not touch runtime source or foreign repositories.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Continue only on the existing canonical docs/product-technical-gap-baseline branch. Fresh writer lease: exact head 0745ec8656c2c432ed3c1ef8b614ae7ac4b0fbda, protected base develop@acdbea6344fe1231c39535b575f4de35e4c607c9; the current target is docs/product-technical-gap-baseline.md. Do not create a competing PR, rewrite runtime source, or mutate foreign repositories.

Receiving-code-review verification on this exact head confirms four still-current documentation correctness defects: threads PRRT_kwDORjvEXs6cAYd2, PRRT_kwDORjvEXs6cAgYj, PRRT_kwDORjvEXs6cAgYp, and PRRT_kwDORjvEXs6cAgYy. Repair them together, minimally, on this branch: (1) restore monotonic Technical Gaps labels instead of (a)…(f),(k),(g)…; (2) make the “no test .wav/.mp3 fixtures” claim actually reproducible by a root-runnable audio-fixture search, without changing the existing test_numeric_parity.py/test_api.py characterization; (3) keep the measured desktop/shared-types 100% snapshot but add the real root-runnable coverage commands/result artifact locations (or explicitly bind the metrics to the 2026-08-25 snapshot) rather than citing thresholds as measurement; and (4) count individual aria-* attribute tokens, not matching lines, with wording/result consistent with the command.

Verification-before-completion: execute every documented command you modify from the repository root, run the repository docs checks, and keep claims tied to observed output. Resolve only those four threads after the resulting exact-head checks are green. Documentation is not license to invent missing product evidence; if any command disproves a claim, correct the claim to the evidence rather than shaping the command to preserve a number.

@seonghobae

Copy link
Copy Markdown
Collaborator Author

Re-review request for exact head 27f680cfd1ad0a8b6fc72667ae60e30c6d229c20: all required status contexts are green on this head (including coverage-evidence and security scans) and all review threads are resolved. @opencode-agent please review current head 27f680cfd1ad0a8b6fc72667ae60e30c6d229c20 and update the review decision.

@seonghobae
seonghobae enabled auto-merge (squash) August 28, 2026 01:39
devin-ai-integration[bot]

This comment was marked as resolved.

@opencode-agent
opencode-agent Bot disabled auto-merge August 28, 2026 03:18
@seonghobae

Copy link
Copy Markdown
Collaborator Author

Exact-head review request for 7b081ba. The change is documentation-only: current REST PR inventory, exact-head governance traceability, and Security Notes. Please review this current head and report APPROVED or CHANGES_REQUESTED.

@seonghobae

Copy link
Copy Markdown
Collaborator Author

Exact-head follow-up for 8dc6951: refreshed the traceability table after PR #1046 moved to 0082483 and this PR moved to 7b081ba. Please review this current head.

@seonghobae

Copy link
Copy Markdown
Collaborator Author

Exact-head follow-up for e5678a0: refreshed #1045 traceability to current head 6c4edeb. Please review this current documentation head.

@seonghobae

Copy link
Copy Markdown
Collaborator Author

Exact-head follow-up for 9632d98: recorded the current #1046 Strix provider-unavailable failure and its exact-head status. Please review this current documentation head.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 5 new potential issues.

Devin Review

Comment on lines +664 to +665
jq -n --argjson pr "$pr" --arg protected_base_sha "$base_sha" \
--argjson check_runs "$checks" --argjson reviews "$reviews" \

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Snapshot command rejects every SHA

Running the snapshot script passes the SHA through --argjson, but an unquoted Git SHA is invalid JSON. The script exits before writing its snapshot.

Prompt for agents
Fix the exact-head snapshot script in docs/product-technical-gap-baseline.md. Both jq commands around lines 664 and 669 pass base_sha with --argjson, but git ls-remote returns a plain SHA string. Use jq string arguments consistently in both invocations, then verify the complete pasted script produces open-pr-snapshot.json.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +652 to +653
snapshot_dir="${TMPDIR:-/tmp}/bandscope-pr-snapshot"
mkdir -p "$snapshot_dir"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Reruns retain closed pull requests

Rerunning the snapshot in an existing directory leaves old pr-*.json files intact. Closed pull requests remain in the output and corrupt its count.

Suggested change
snapshot_dir="${TMPDIR:-/tmp}/bandscope-pr-snapshot"
mkdir -p "$snapshot_dir"
snapshot_dir="${TMPDIR:-/tmp}/bandscope-pr-snapshot"
mkdir -p "$snapshot_dir"
rm -f "$snapshot_dir"/pr-*.json
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +95 to +101
## 4. 현재 열린 PR 기반 Gap 분석 (Open-PR Gap Analysis)

현재 open PR은 136건이다(2026-08-29 Asia/Seoul 기준 REST inventory). 아래 표는 그중 대표적인 PR을 뽑은 snapshot이며, 대부분은 동일 패턴의 시리즈다.

### 4.1 2026-08-29 exact-head 운영 snapshot

아래 표는 protected base `develop@749511c3ad4000090048718f685c6bee6b3d2c25`에 대해 GitHub REST API로 다시 읽은 대표 PR의 current head와 그 head의 Checks/review 상태다. Capture 시각은 `2026-08-29T08:11:32Z` (`2026-08-29 17:11:32 Asia/Seoul`)이며, 이후 재실행 결과는 이 snapshot의 증적으로 재사용하지 않는다. 아래 재실행 명령은 capture 시각의 open PR 전체에 대해 각 current head, 동일 SHA의 check-runs, reviews, protected base를 JSON으로 묶는다. 이전 SHA의 Checks는 현재 증적으로 재사용하지 않았다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Volatile evidence is manually duplicated

PR states and capabilities appear across several prose snapshots. Future updates can leave the table, backlog, and reconciliation inconsistent; isolate dated evidence or generate it.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +637 to +642
## 9. 검증 방법 (Verification Method)

각 절의 근거와 재실행 명령. 아래 명령은 저장소 루트에서 실행한다.

- Repo root: `git rev-parse --show-toplevel` -> `<repo-root>`
- 문서 소스 read: `ARCHITECTURE.md`, `AGENTS.md`, `docs/brand-story.md`, `docs/security/app-security.md`, `docs/workflow/one-day-delivery-plan.md`, `docs/engineering/acceptance-criteria.md`, `docs/plans/2026-03-27-bandscope-roadmap-completion.md`

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Verification is not cross-platform

The promised rerunnable checks rely on shell-specific find, xargs, grep, and here-string behavior. Package them in a repository script for supported platforms.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +6 to +17
## 1. 목적과 범위 (Purpose & Scope)

이 문서는 ADR/설계 문서(`ARCHITECTURE.md`, `docs/plans/*`), 브랜드 소스(`docs/brand-story.md`), 보안 소스(`docs/security/app-security.md`), 그리고 현재 저장소 상태(코드, 열린 PR 136건, 열린 이슈)를 대조하여 다음을 한 곳에 모은 baseline이다.

- 기능 명세(functional spec)와 PRD/TRD로 승격되지 않은 요구사항의 공백
- 구현된 코드와 문서가 선언하는 제품 범위 사이의 기술 Gap
- 누락된 UML/다이어그램 산출물
- 구매자가 체감하는 제품 Gap 우선순위 Backlog

범위에는 현재 열려 있는 PR 세트를 명시적으로 포함한다. 특히 `feat(workspace): name tonight's first X on the map` 시리즈는 아직 merge되지 않았으므로, 이 문서에서는 해당 시리즈가 착지했을 때 남는 Gap까지 함께 기술한다.

검증 원칙: 본 문서의 코드 관련 주장은 전부 실제 repo에 대해 `grep`/`glob`/파일 read로 확인했다. 확인 방법은 9장에 재실행 가능한 명령으로 남긴다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Baseline uses authority-heavy language

Dense operational and academic wording conflicts with the required practical, rehearsal-first tone for product specifications. Simplify it or scope it explicitly as engineering evidence.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Collaborator Author

Superseded by canonical current baseline PR #1116. I compared this PR's unique requirements and review history before disposition. The replacement on #1116 carries forward the PRD/TRD/UML scope, DDD/product boundaries, Rust-core migration target, real-audio accuracy evidence, security/privacy, accessibility/design parity, release/operability, research traceability, and re-runnable verification requirements while removing the stale manually duplicated live-queue snapshot machinery that produced unresolved correctness findings here. This PR's discussion remains historical evidence; closing it does not treat its stale head/checks as merged or delete its branch. Future baseline edits should land on #1116 (or its protected successor after merge) to avoid competing writers on the same path.

@seonghobae seonghobae closed this Sep 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant