From 8d4622bb7d957d832cae5b282ccb7d2de687825d Mon Sep 17 00:00:00 2001 From: PR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Wed, 14 Oct 2026 10:38:33 -0400 Subject: [PATCH 1/2] docs(todo): add playback reliability items from Nostr feedback --- todo/TODO_2026-06-20_pre-launch.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/todo/TODO_2026-06-20_pre-launch.md b/todo/TODO_2026-06-20_pre-launch.md index c92b85fd..cb9a552f 100644 --- a/todo/TODO_2026-06-20_pre-launch.md +++ b/todo/TODO_2026-06-20_pre-launch.md @@ -2178,3 +2178,15 @@ bitvid's EXISTING NWC pipeline; keep manual URI entry as the backup/advanced pat (PLATFORM_FEE_PERCENT=30, preimage verify, no pay_invoice auto-resend) untouched. - [ ] Phased + flag-gated: Phase 0 flag+vendor, Phase 1 connect button, Phase 2 polish (balance/reconnect), Phase 3 optional WebLN path for Alby-extension/Hub. + +## Playback reliability (from Nostr feedback, Oct 2026) +Items 1, 2 and 4 are **HIGH PRIORITY** — publicly promised in bitvid's Nostr replies. + +- [ ] **HIGH PRIORITY** — 1. Probe URLs with a small Range GET (first ~1 KB) instead of HEAD; many hosts/CDNs mishandle HEAD. File: `js/ui/urlHealthController.js` (`probeUrl`). +- [ ] **HIGH PRIORITY** — 2. Persist URL and torrent health in localStorage across visits with a per-host failure score; today the 45-minute cache is lost on reload. Files: `js/state/cache.js` (`storeUrlHealth`), `js/gridHealth.js`. +- [ ] 3. Start direct URL and WebTorrent in parallel instead of waiting out the 8-second stall. File: `js/services/playbackService.js` (`registerUrlPlaybackWatchdogs`). +- [ ] **HIGH PRIORITY** — 4. Warm up videos on hover or scroll-into-view by loading metadata or a small first chunk. Files: `js/app/feedCoordinator.js` and card components. +- [ ] 5. Auto-try alternate copies: NIP-71 fallback URLs and the same Blossom sha256 on other servers. Files: `js/nostr/nip71.js`, `js/services/blossomService.js`, `js/ui/urlHealthController.js`. +- [ ] 6. Rank lower or hide videos with timeout/unknown health in default feeds. Files: `js/gridHealth.js`, `js/app/feedCoordinator.js`. +- [ ] 7. Replace the 10-60s banner with per-video status (e.g. "host slow, trying P2P…") and a clear failure message. Files: `components/disclaimer.html:84`, `js/app/playbackCoordinator.js`. +- [ ] 8. Service worker caches app shell and thumbnails (not videos) for faster repeat visits. Files: `sw.min.js` source and `_headers`. From a7e6687f003d71b4da594616e3d74bc4a9b2ff1d Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN Date: Tue, 20 Oct 2026 11:18:40 -0400 Subject: [PATCH 2/2] dispatch-2: record explicit local-review milestone and reconcile playback backlog evidence --- docs/agents/PROGRAM.md | 9 ++++++++- fleet/GOAL.md | 6 ++++++ fleet/LOG.md | 6 ++++++ fleet/QUALITY.md | 21 +++++++++++++++++++-- fleet/RULE-CHANGES.md | 3 +++ 5 files changed, 42 insertions(+), 3 deletions(-) diff --git a/docs/agents/PROGRAM.md b/docs/agents/PROGRAM.md index 76be8d64..35d718ec 100644 --- a/docs/agents/PROGRAM.md +++ b/docs/agents/PROGRAM.md @@ -4,7 +4,7 @@ Last updated: 2026-10-19 ## Current milestone -Work through the existing TODO backlog and fix reproducible bugs that make the client less robust or usable. Validate old reports at current HEAD before assigning them; deliver small, checked changes through local unstable. +Prepare the integrated client for owner local review/testing:finish current storage2/history6 scope,faithful actual-app/core/mobile baseline and current preview with exact evidence. Retain broader robustness/usability backlog and live gates;do not start optional work beyond this milestone. Validate old reports at HEAD and land checked changes through local unstable. ## Priorities @@ -13,6 +13,13 @@ Work through the existing TODO backlog and fix reproducible bugs that make the c ## Rulings log (newest first) +### 2026-10-20 — Explicit local-review stopping milestone,relayed by interpreter + +> "Ready for me to review and test locally" — owner, relayed by interpreter;not represented as typed in dispatch. + +Finish current storage2/history6 gates/landings,faithful local actual-app/core/mobile baseline and preview refresh,then provide local-review handoff before declaring this milestone met. Do not clear optional roadmap or claim production/live Amber/cloud/peer proof. No new restricted-action authority. + + ### 2026-10-20 — Continuing quality objective, relayed by interpreter > "ok try to keep them working until the project is in a good place." — owner, relayed by interpreter; not represented as typed in dispatch. diff --git a/fleet/GOAL.md b/fleet/GOAL.md index 4fa75044..693963c8 100644 --- a/fleet/GOAL.md +++ b/fleet/GOAL.md @@ -28,3 +28,9 @@ Work through the existing TODO backlog, find and fix bugs, and make the client m > "ok try to keep them working until the project is in a good place." — owner, relayed by interpreter; not represented as typed in dispatch. Continue bounded robustness/usability/backlog work after the three-worker trial. Use fleet/QUALITY.md to track evidence and remaining gates. Passing units alone does not establish project readiness. Keep workers useful where scopes split safely; reduce idle staffing when useful independent work runs out. Stage reproductions/audits before product fixes, preserve normal local unstable landing and restricted-action limits. Amber/cloud/live peers/manual release qualification stays explicitly open until authorized real evidence exists. + +## Explicit stopping milestone — 2026-10-20 + +> "Ready for me to review and test locally" — owner, relayed by interpreter. + +Finish current storage-cors-2 and client-reliability-6 through unchanged full gates/durable landings;complete a faithful local actual-app/core-flow/mobile baseline sufficient to expose hard local-review blockers;refresh preview3000 from integrated unstable. Prepare exact branch/SHA/URL/start-health evidence,reviewable changes,manual flows and honest limits. Then stop new optional work for owner local review. This is not production readiness,all optional backlog completion,or authorization for real accounts/cloud/peers/spending/push/deploy/schedulers. Newly reconciled public-promised playback backlog remains explicit,not silently completed or pulled into a large feature batch. diff --git a/fleet/LOG.md b/fleet/LOG.md index 0a2d3b3f..494a0e5d 100644 --- a/fleet/LOG.md +++ b/fleet/LOG.md @@ -112,3 +112,9 @@ - Mirroring clarification from interpreter15:03:20 agrees only matching implementations need parity;no delete method inS3UploadService means no duplicate to invent. Contract malformedsyntheticrecords robustness only,not real-user incident or note-delete-block proof;preserve owner boundary and avoid coercion/permission expansion. - Next-scope pickups verified:storage2 method-only fix15:06:34,QA2 baseline preparation15:06:36,client6 test-only retention15:06:53. QA supervisor limited read-only harness coverage prep is compatible with this assignment;do not duplicate existing specs or treat module smoke as app proof. QA must send START before browser and RELEASE;other workersfocused only untilready/fullslotgrant. + +## 2026-10-20 — Explicit local-review milestone and upstream documentation + +- Owner exact stopping quote "Ready for me to review and test locally" recorded GOAL/PROGRAM/QUALITY. Finish current bounded fixes/tests/baseline,then handoff current preview/branch/SHA/flows/limits;no optional feature churn or production claim. +- Inspected upstream8d4622bb:only12lines in canonicalprelaunchTODO,local110/remote1 divergent count. New public-promised HIGH1RangeGET/2health-persistence-hostscore/4warmup andotherplayback followups absent from local source used earlier. Staticrevalidation sees HEAD remains,URL localStorage persistence alreadyexists,torrent mapcache,viewport healthmetadata/orderedmirrors/SWcaches partial;no whole-item completion or new demonstrated hardreviewblocker. Non-destructive docs merge/normalqueue next,no push. +- Storage2 full430/430exit0 andnormal1650b343 gating;QA2 genuineasset planready anddocs-only25942a15 queuedbehindit. Client6ready9afe48a5 waitsfullafterstorage+shortQA2browser. No expensive successor started. diff --git a/fleet/QUALITY.md b/fleet/QUALITY.md index f1b98a2c..7a885069 100644 --- a/fleet/QUALITY.md +++ b/fleet/QUALITY.md @@ -1,6 +1,6 @@ # Quality evidence and next milestones -Updated2026-10-20. Goal: improve robustness/usability against pre-launch TODO and KNOWN_ISSUES. This is a local qualification matrix, not a project-ready/release declaration. +Updated2026-10-20. Owner stopping milestone:"Ready for me to review and test locally"(relayed). Finish storage2/history6,faithful actual-app baseline and integrated preview/handoff;stop new optional work for review. Broader robustness backlog remains. This is a local qualification matrix,not a production-ready declaration. | Area | Current local evidence | Next bounded work | Still unverified / release gate | |---|---|---|---| @@ -8,7 +8,7 @@ Updated2026-10-20. Goal: improve robustness/usability against pre-launch TODO an | Playback/fallback/magnets | Queued torrent/URL lifecycle fixes7d20a509/89ccb907; mirror guard0bd0b1c3; independent URL18 scenarios. QA actual coordinator/service scratch4 and local Chromium/Firefox3 each, literal hash/webseed checks | Retained QA1 landed1bb3a4fc;dispatch independently4/4,normal gate429 files | Actual WebTorrent/live peers; full-app fallback; local decoded mirror/substituted torrent does not prove real torrent | | Profile/session/history | Profile fixture hang fixedde6918ce;27 focused historical scenarios and current broad suite. History lazy-init test injects fake renderer | client-reliability-6 test-only real wiring regression after current pass/historical-noop failure, TODO2 regression gap | Amber NIP46 identity/switch/logout across refresh, real signers; KNOWN_ISSUES isolated logout UI failure | | Storage/upload safety | CORS productd3f4c215,closure7f99c045; independent9 CORS scenarios,worker focused13/10mutants/full428/lint/build; content-addressed/cleanup safeguards documented | storage-cors-2 narrow metadata no-throw guard after2 reproduced rejects/6controls | Live bucket/IAM/provider serialization; concurrent read-modify-write has no CAS; no credentials/cloud writes tested | -| Mobile usability | No fresh local mobile flow/visual qualification from trial | playback-qa-2 actual-app local Chromium core/mobile3-viewport baseline,existing mock-relay harness,private port,no UI edits | Real-device/manual accessibility and UX; visual baselines remain CI-canonical | +| Mobile usability | No fresh local mobile flow/visual qualification from trial | QA2 first360pass BLOCKED:static genuineBufferCDN guard+missing generatedCSS,remainingflows unverified. Genuinecached pinned mirror+verified builtartifact prep ready;secondpass afterstorage2 integration,no UI edits | Real-device/manual accessibility and UX; visual baselines remain CI-canonical | | Trustworthy validation | Unchanged normal gates and restored failing mutants; latest product gate428 files. QA retained regression429-file diagnostic+normal gate passed1bb3a4fc | Retain exact counts, ancestry, fixture boundaries, failed mutants and Known Issues classification | Full broad E2E/release/manual cross-browser checks; never weaken assertions or treat mocked boundaries as live proof | | Preview | Preserved localhost3000,storage integrated7f99c045; build/artifact pass,HTTP200/index matches dist | Refresh after each verified product landing; QA is test-only so inspect product delta before rebuilding | Production/live-site state not touched or qualified | @@ -21,3 +21,20 @@ Updated2026-10-20. Goal: improve robustness/usability against pre-launch TODO an ## Resource and operating limits QA currently owns full/normal gate; other investigations may use cheap focused local checks, no expensive full suite/build/browser without dispatch slot. Separate worktrees/branches; no competing product writers or app.js edits. Keep team at dispatch+3 existing workers while useful disjoint tasks exist. Clear inherited NODE_TEST_CONTEXT for CLI launches. Use mailbox/CLI/status recovery, actual send/consume times, no raw pane bodies or unattended-wakeup claim. No push/deploy/spend/real-wallet/production-data/scheduler/credentialed external operations. + +## Reconciled Oct2026 upstream playback promises + +Read-only origin fetch was performed by interpreter;upstream-only8d4622bb adds12 canonical TODO lines. Dispatch merges that docs-only source non-destructively through normal local queue. These items stay OPEN;static inspection below is not a live reproduction or completion claim. High-priority1/2/4 are explicitly publicly promised in the source. + +| Item | Current source/local evidence | Local-review implication | +|---|---|---| +|1 HIGH:RangeGET instead ofHEAD | urlHealthController.probeUrl still fetches HEAD;existing media confirmation fallback also present | Open compatibility report;no new hard local-review blocker demonstrated solely by static search | +|2 HIGH:persist health/per-host score | URL get/store already read/write localStorage;grid torrent health uses in-memory map;per-host score not found in inspected health modules | Partial existing implementation,not whole item done;reload/torrent/per-host promise remains | +|3 parallel hosted/P2P startup | Current service/coordinator has sequential fallback/watchdogs | Not requalified as parallel startup;do not change playback policy in this bounded milestone | +|4 HIGH:hover/viewport warmup | Viewport health probes/preload metadata exist and clean up;retained playback warming not established in inspected feed code | Do not equate probe ahead-of-scroll with fulfilling promised warmup;open | +|5 alternate copies/NIP71/Blossomhash | Retained actual service regression verifies ordered hosted mirror selection;Blossom hash cross-server behavior not qualified | Partially proven mirrors,whole promise stays open | +|6 downrank/hide unknown/timeout | Existing liveness policies present;exact default-feed behavior not revalidated here | Open;no new moderation/ranking product choice | +|7 per-video status/copy | Current coordinator has per-video error/fallback strings;banner/status refresh requirement not fully audited | Open copy/UX followup,not claimed complete | +|8 SW shell/thumbnails | Existing service-worker app/image caches present | Repeat-visit/offline production behavior not qualified;BufferCDN remains baseline prep constraint | + +No demonstrated new hard local-review blocker yet from the added reports. QA actual-app second pass may reveal one;report before calling milestone ready. Include these remaining promises and real Amber/cloud/live peers/manual release gates in handoff. diff --git a/fleet/RULE-CHANGES.md b/fleet/RULE-CHANGES.md index e83ed3c1..184b4908 100644 --- a/fleet/RULE-CHANGES.md +++ b/fleet/RULE-CHANGES.md @@ -9,6 +9,9 @@ a landing rule changes. ## 2026-10-20 +- Owner stopmilestone is Ready for me to review and test locally. Finish current storage2/history6/faithful actual-app baseline+preview/handoff,then no new optional tasks before review. Reconcile upstream docs-only8d4622bb via area merge+normal queue;new playback promises stay explicit/open,do not churn current scope or declare them done from partial/static evidence. Genuine cached offline dependency mirror is testprep only,not CDN/deployed/offline production proof. + + - QA1 retained regression64143f42 landed1bb3a4fc,dispatch4/4. New QA2 actual-app local core/mobile baseline has bounded browser-only slot,no UI changes/full E2E. Client6 test-only actual history wiring regression routed after current pass/historical no-op failure. Storage2 temporary ownership deleteVideoStorage-only in r2Service+new test after2 real cached-metadata rejects/6controls;upload-copy logic unchanged,s3UploadService has no deletion counterpart,prove shared provider-aware delete for R2/S3. Full slots allocated only when validated-ready after browser release.