diff --git a/docs/TODO.md b/docs/TODO.md index a8e01578..55317ac6 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -2,6 +2,8 @@ ## dispatch +- 2026-10-20 local-review checkpoint: storage2 producte7b9afb3/closurec5818cfe and history6 regressionb3fab032/closure386cc60e durably complete. Normal latest gate431files exit0; dispatch cleanup13/13 and history3/3. Integrated preview1834b6a9 runtime equals current test/docs-only descendants. Final actual-app/mobile QA2 browser pass active; readiness awaits actual flow evidence/handoff. Feed3 and public-promised playback roadmap deferred/open; real Amber/cloud/peers/release gates remain. No optional new tasks. + - 2026-10-20 trial outputs complete:QA regression1bb3a4fc/closurebbf57388 verified,dispatch independent4/4/runtime unchanged so no extra build. Same3 workers continue:client6 real history test-only retention after independent current pass/historical-noop failure;storage2 method-only malformed metadata no-throw guard after independent2rejects/6controls;QA2 actual-app local core/mobile3viewports browser-only grant. Full slots on validated-ready after QA browser release;no feature/readiness/live-proof claim. diff --git a/docs/agents/backlog/client-reliability-7.json b/docs/agents/backlog/client-reliability-7.json new file mode 100644 index 00000000..1cc9d0b5 --- /dev/null +++ b/docs/agents/backlog/client-reliability-7.json @@ -0,0 +1,10 @@ +{ + "id": "client-reliability-7", + "area": "client-reliability", + "status": "open", + "title": "Restore cold-feed live subscription onVideos notification after eligible relay updates", + "blockedOn": null, + "addedOn": "2026-10-20", + "filedAt": "386cc60e1fa3ba6d9b67a1171a1ab89c03df84ca", + "evidence": "QA actual app at386cc60e:cache0\u2192EVENT3/EOSE\u2192filtered3/access/include true\u2192viewEMPTY/DOM0. live service branch emits videos:updated but omits onVideos callback used by actual feed refresh. Scope/reproduction/controls in area prompt;minimal method-only fix after natural failing regression." +} diff --git a/docs/agents/prompts/client-reliability.md b/docs/agents/prompts/client-reliability.md index a36200fd..14c5c726 100644 --- a/docs/agents/prompts/client-reliability.md +++ b/docs/agents/prompts/client-reliability.md @@ -1,6 +1,16 @@ # Area: Client reliability (client-reliability) -## Current assignment: client-reliability-6 — retain actual history wiring regression +## Current assignment: client-reliability-7 — cold feed live notification blocker + +QA actual-app passive reproduction at386cc60e: fresh Trending/cache0, local relay delivers3 valid signed VIDEO events+EOSE; raw/all/active/appvideo maps3,actual filtered3 and every access/include true,whitelist/lockdown false. Connected visible view remains current0/rendered0/signatureEMPTY/DOM0 after15s;metadata reasoncache. Service emits videos:cache3 then videos:updated(subscription3),but app refresh owner is onVideos callback. Source loadVideos cache/optimistic paths call onVideos;live subscription branch does not. This is a demonstrated local-review blocker,not optional work. + +Temporary item ownership: ONLY js/services/nostrService.js loadVideos live-subscription notification path;new focused regression (prefer tests/nostr-service-live-feed-notification.test.mjs),unique integrity/evidence/backlog. Read app/feed/bootstrap and existing tests;do not edit them or sharedTODO without routing. No app.js,cache/filter policy,signer/protocol,runner/config/kit/styling changes. Current service area exclusion is overridden only for this method/item. + +Merge unstable non-destructively,claimitem7,read currentrules/KNOWN_ISSUES/test-integrity/localNIP/schema docs. Before edits reproduce actual service coldcache→controlled subscribeVideos callback→actualonVideos consumer notification absent;prove cache0 theneligible updates/deletion callbacks,not event-string assertions. Preserve filtered full-list ordering,deleted updates,tombstone removal,existing videos:updated payload and persistence,callbackthrow isolation/no event loss,optimistic/cache semantics. After natural failing regression,implement smallest method-only callback delivery fix and restored failing mutants. Retain no product-policy change or forced refresh substitute. + +Cheap focused tests and lint now;no browser/full/build until slot grant. QA owns actual-app execution and will verify cold feed plus original core/mobile baseline after durable fix/preview rebuild. Send reproduction/controls/files before widening;ready event with focused counts/mutants/lint. One unchanged normal full gate can be authoritative after merged focused/lint;avoid duplicate full solely for logs. Normal commit/merge/queue/ancestry/closure rules apply. No external operations/newoptional tasks;idle once local-review blocker is closed. + +## Archived completed assignment: client-reliability-6 — retain actual history wiring regression Investigation complete:actual profile→real renderer→DOM remove→real controller/service works locally and through fake synced publish/read. Historical no-op override resurrects removal while existing profile27 tests still pass (worker evidence). Dispatch independently ran local/synced actual wiring exit0 and historical-noop local exit1 after cleanup. No current product failure established. diff --git a/fleet/LOG.md b/fleet/LOG.md index 494a0e5d..480fd10a 100644 --- a/fleet/LOG.md +++ b/fleet/LOG.md @@ -118,3 +118,15 @@ - 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. + +## 2026-10-20 — Integrated fixes and final browser handoff + +- Storage2 producte7b9afb3/closurec5818cfe durable; dispatch independently13 cleanup cases pass/build-artifact0. Preview rebuilt at1b3ef49c as1834b6a9,HTTP200/index equal;node135479 preserved. Upstream docs8d4622bb integrated at1b3ef49c,ancestry0;promises remain open. +- History6 single unchanged normal gateec41d338 landedb3fab03215:40:11,closure386cc60e15:41:44;dispatch verified durable status/ancestry.431 configured files independently match431unique retained starts;empty quarantine/no shard,exit0. Durable result tail omits final stdout marker and is not full transcript;no full rerun/kit change. Worker38focused/5mutants/lint11;dispatch new3/3 naturalexit0(554.90ms). +- Client RELEASE15:40:56/IDLE. QA genuine local VP8 fixture1019B/64x64/2s/20frames preflight7contracts+3rejected mutants;noninteractive driverdc10bf51. Interpreter grant15:44:32,dispatch15:44:58 after recovering READY15:40:37. Frozen822appfiles/runtime diff0 through386cc60e;no rebuild. Actual UI baseline still pending. No optional work;finish local-review handoff then idle. +- QA final attempt15:45:39.511→15:45:46.059 stopped on scratch contract error:nostrToolsReady success is frozenCanonical toolkit,not ok:true. Actual media HEAD/GET/Range pass,0local404/pageerrors;UI untouched. Source confirmed line678;interpreter diagnosed same. Authorized scratch-only canonical APIs/real synthetic crypto/tampered rejection/no-mock correction+one bounded rerun,failed attempt preserved. No app defect/readiness claim. +- QA corrected run ended15:49:48.277:real toolkit/canonicalidentity/frozen/no-mock/Node-browser crypto/tamper checks passed;genuine media wire passed. Next actual3-card prerequisite timedout0/3,so login/navigation/modals/390/1280 not run;ownedresources released. Bounded faithful seed/schema/mode/relay diagnosis vs existing e2e authorized,not app defect or readiness from boot. No assertion relaxation/newmodulemirror/product changes. +- Source-backed QA setup correction15:54:01:app instance is assigned before init/start awaits;priorrunner omitted exported application-ready promise. Genuine events verify+matchactualfilter3/3,sourceordering3/3;devmode theory withdrawn. Authorized awaitrealready15s+official postsetupsetTestRelays,unchanged3cards15s/guards/allUIassertions and read-only relay diagnostics. No manualcardinsertion/productpatch;final actualUI stillpending. +- QA source-ready correction still0/3 at15:55:18.667,so stopped fixes and routed pipeline measurement. Interpreter found missing requireds tag;actual schema validator rejectswithout/acceptswith,while converteracceptsboth,so notyetcausal. Existing saved data lacksWS/request/event trace. Granted one passive instrumented original-input diagnostic15:58:27:REQ/EVENT/EOSE+read-onlycache/rendercounts,unchanged3cardassertion/guards/artifact,no injection/productpatch. +- Passive trace16:00:32.126→16:00:50.999 proves localvideoREQ kinds30078/#tvideo→3EVENT+EOSE;raw/all/active/appvideo mapsall3,DOM0. Firstmissingboundary downstreamingest/beforeDOM;missingstag notthisingestcause. Targeted feed stage/filter/render decision measurement routed16:01:39 underexistingboundedauthority,no blindretry/productpatch. UI baseline stillpending;resourcesreleased. +- Targeted actualapp16:06:34.174→16:06:51.787 proves active3/filtered3/allaccess+include true,whitelist/lockdownfalse,viewmountedvisible butcurrent/rendered0/signatureEMPTY. Events cache0 then cache3/videos:updated(subscription3),metadata remainscache. Source live loadVideos branch omits onVideos used by feed refresh. Hardreviewblocker routed existingclient7 temporarymethodonly+newregression16:08:41;QA productreadonly/evidencehold. Not broader structure/feature change;mustfix/retention/durablegate+preview+actualUIbefore readiness. diff --git a/fleet/QUALITY.md b/fleet/QUALITY.md index 7a885069..6832d86f 100644 --- a/fleet/QUALITY.md +++ b/fleet/QUALITY.md @@ -6,21 +6,21 @@ Updated2026-10-20. Owner stopping milestone:"Ready for me to review and test loc |---|---|---|---| | Feed/load/navigation | Existing client tombstone/buffer guards and broad428-file normal gate; current CRUD spec includes delete-modal/cancel coverage | Feed/view tombstone gap deferred as storage-cors-3 behind latest storage safety priority, TODO1 seed→delete→stale refresh scenario | Full app/feed behavior and documented parallel Firefox hydration flakes; live zombie reports | | 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 | 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 | +| Profile/session/history | Real profile-history wiring regression landed b3fab032, closure386cc60e; normal431-file gate exit0, focused38/38,5 rejected mutants; dispatch independently new3/3 | Complete; current behavior passed, regression protects historical no-op | Amber NIP46 identity/switch/logout across refresh, real signers; KNOWN_ISSUES isolated logout UI failure | +| Storage/upload safety | CORS preservation d3f4c215 and malformed cached metadata guard e7b9afb3/closurec5818cfe; dispatch independent9 CORS+13 cleanup scenarios; worker430-file gate/24 focused/7 mutants | Complete within bounded contract; generic S3 shares deletion service, no counterpart invented | Live bucket/IAM/provider serialization; concurrent read-modify-write has no CAS; no credentials/cloud writes tested | +| Mobile usability | Actual integrated app boot with genuine cached Buffer; owned media actual HEAD/GET/Range checks pass,0local404/pageerrors | QA2 measured hard cold-feed notification blocker:eligible/cache3→DOM0 despite connectedview; client7 method-only regression/fix routed. Original core/mobile flows pending after fix; driver mistakes preserved separately | Real-device/manual accessibility and UX; visual baselines remain CI-canonical | +| Trustworthy validation | Unchanged normal gate candidate b3fab032 exit0;431 configured files match431 unique retained starts; no shard/quarantine. QA fallback regression1bb3a4fc independently4/4 | Durable gate tail is not a complete process transcript; stdout final marker absent, explicitly disclosed | Full broad E2E/release/manual cross-browser checks; never weaken assertions or treat mocked boundaries as live proof | +| Preview | Preserved localhost3000/node135479; build1834b6a9 from integrated1b3ef49c; build/artifact pass,HTTP200/index byte equality | Runtime/build-input diff0 through client6 closure386cc60e; preserve frozen QA snapshot | Production/live-site state not touched or qualified | ## Milestones 1. Finish prepared trial outputs: two product fixes are durable; retained QA regression is durable1bb3a4fc;next work continues under sustained goal. Report actual timings: implementation parallelism exists, but serialized duplicate full gates and39m57 dispatch wake/checkpoint lag prevent an overall speedup claim. 2. Revalidate high-priority history wiring and storage/delete safety at current HEAD;feed-view deletion gap remains deferred,not cancelled using real wiring plus controlled IO; route only reproduced defects or valuable mutant-proven regressions. No product changes authorized by investigation assignments. -3. Establish fresh local core-flow/mobile baseline after those checks; keep live Amber/cloud/peer/manual release gates separate. Continue useful bounded work under existing authority; surface substantive blockers/owner product choices instead of inventing features or keeping agents busy. +3. Finish faithful local core-flow/mobile baseline and handoff,then IDLE for owner local review. Keep live Amber/cloud/peer/manual release gates and optional backlog separate;route only demonstrated hard local-review blockers. ## 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. +Client7 cold-feed hard-blocker actual-service regression/minimalfix now cheapfocused/lint;QA browser resources released16:06:51,retains repro/evidence. Storage IDLE. Full/browser/build successor only after validated-ready grant; no optional work. No expensive competing suite/build/browser. 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 diff --git a/fleet/RULE-CHANGES.md b/fleet/RULE-CHANGES.md index 184b4908..d925321d 100644 --- a/fleet/RULE-CHANGES.md +++ b/fleet/RULE-CHANGES.md @@ -9,6 +9,8 @@ a landing rule changes. ## 2026-10-20 +- Local-review hard blocker measured: coldTrending cache0 then relayEVENT3/EOSE ingests eligible3 but view remainsEMPTY/DOM0. client-reliability-7 temporary ownership ONLY nostrService.loadVideos subscription notification path + new focused regression/integrity/evidence; reproduce current method before minimal fix. Existing app/feed modules read-only unless additional evidence/routing. Preserve access/filter/deletion/cache/event semantics; no forcedrefresh baseline substitute. QA retains actual-app/browser qualification; client cheapfocused until explicit fullslot. + - 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.