Skip to content

docs: bubbaloop-dash Phase 1.1 spec + implementation plan#106

Closed
edgarriba wants to merge 2 commits into
mainfrom
feat/bubbaloop-dash-phase-1.1-spec
Closed

docs: bubbaloop-dash Phase 1.1 spec + implementation plan#106
edgarriba wants to merge 2 commits into
mainfrom
feat/bubbaloop-dash-phase-1.1-spec

Conversation

@edgarriba

Copy link
Copy Markdown
Member

Summary

Adds two design artifacts for the bubbaloop-dash Phase 1.1 (upload pipeline + library) work, predecessor to Phase 1.0's v0.1.0-alpha:

  • docs/superpowers/specs/2026-05-21-bubbaloop-dash-phase-1.1-upload.md (630 lines) — Scope, phase boundary, Storage Protocol + SQLite schema (videos / upload_progress / jobs), REST handlers (POST/PUT/GET/DELETE /api/videos, /api/jobs, /api/blob), sweeper, Map tab + VideoUploader + VideoLibrary, error handling, testing, phasing.

  • docs/superpowers/plans/2026-05-21-bubbaloop-dash-phase-1.1-upload.md (3.5k lines) — 16-task TDD implementation plan with failing-test → impl → passing-test → commit substeps. Every code block is complete (no placeholders).

Implementation status

The plan has been executed end-to-end at kornia/bubbaloop-dash#2:

  • Backend: 98/98 pytest, ruff + mypy --strict clean
  • Frontend: 348/348 vitest across 25 files
  • Docker image builds (~345 MB); curl smoke verified POST/PUT/complete/list/jobs/blob/delete + auth check
  • Final code review caught + fixed one Important issue (transaction atomicity in mark_ready/mark_error/mark_abandoned)
  • One Important follow-up flagged in review (N+1 query in /api/videos list — deferred)

Test plan

Documentation only — no code paths affected in this repo. Reviewers can verify:

  • Spec is internally consistent (scope, phase boundary, schema/API alignment)
  • Plan tasks cover every spec requirement
  • Out-of-scope items (PyAV decoder, indexer runner, search UI, map canvas, cross-session resume, multi-file batch) are listed explicitly and assigned to future phases

🤖 Generated with Claude Code

edgarriba and others added 2 commits May 21, 2026 08:21
Designs the user-facing video upload pipeline: chunked PUTs through the
backend to filesystem storage, SQLite-backed progress tracking, integrity
sweeper, and the Map tab containing the VideoUploader + VideoLibrary
components. End state: drop iPhone clip → see it in the library; nothing
decodes the video yet (Phase 1.2 lands the indexer).

Scope of this phase (1.1):
- REST endpoints: POST/PUT/DELETE /api/videos, /api/jobs, /api/blob
- Storage Protocol + FilesystemStorage (S3-swappable later)
- SQLite schema: videos + upload_progress + jobs tables with chunk bitmap
- Background sweeper (asyncio task in lifespan) — marks abandoned, deletes orphans
- Map tab in App.tsx, VideoUploader (single-file, in-session retry), VideoLibrary
- 5-day phasing 1.1.a-1.1.h

Out of scope: decode/embed/index (1.2), search UI (1.3), map canvas + SLAM
(Spec 2), cross-session resume (deferred to 1.4 or never), multi-file batch
(deferred to 1.4 or never), video probe/thumbnails (1.2).

Key design simplification: no cross-session upload resume in v1. Interrupted
upload = sweeper marks abandoned after 24h, user deletes + retries. Most
real uploads finish in one session; the resume protocol's complexity isn't
worth it for single-user self-hosted.

Builds on Phase 1.0's spec Section 4 phasing table. Predecessor: v0.1.0-alpha
shipped at kornia/bubbaloop-dash.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
16 bite-sized TDD tasks covering: Settings additions, Storage Protocol +
FilesystemStorage (atomic pwrite), chunk bitmap helpers, SQLite schema +
Db wrapper (videos/upload_progress/jobs), record_chunk + find_stale_uploads,
integrity sweeper, six REST endpoints under /api/videos, three under
/api/jobs, /api/blob, lifespan wiring, Map tab in App.tsx, MapTab/MapCanvas
containers, VideoUploader (single-file chunked, 3 concurrent, 5-retry
backoff, AbortController cancel), VideoLibrary (forwardRef refresh +
auto-refresh while uploading), manual E2E smoke + PR open + tag.

Builds on Phase 1.0's plan shape. End state: kornia/bubbaloop-dash@v0.1.1-alpha
ships drag-an-iPhone-clip → see it in the library; nothing decodes yet
(Phase 1.2 lands the indexer).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@edgarriba edgarriba closed this May 21, 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