diff --git a/docs/TODO.md b/docs/TODO.md index 12e6d660..6cbf42e6 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -2,6 +2,12 @@ ## dispatch +- 2026-10-20 owner continuous-quality direction recorded;fleet/QUALITY.md tracks local vs real release evidence. QA full/normal slot active;client item6 profile-history wiring audit and storage item2 feed/view tombstone audit assigned now,read-only before fix routing. Remaining:actual coverage/reproduction decisions,current QA landing,local mobile/core-flow baselines and unqualified live gates. + + +- 2026-10-20 storage productd3f4c215/closure7f99c045 verified;dispatch CORS9/9/build-artifact/previewHTTP200+dist match. QA exclusive full/normal slot actual grant14:49:35/read14:49:46 after65m54wait;storage-release→grant39m57 wake gap. Remaining:QA durable regression landing,final trial throughput/stall assessment,next bounded routing. Actual cloud/IAM/noCAS concurrent safety/live peers unverified. + + - 2026-10-20 trial first product landed: item5 product0bd0b1c3,closuredc852597;dispatch lifecycle18/18/build-artifact/previewHTTP200+dist match. Storage slot grant13:58:27 after949s wait,full/normal landing underway;QA next,ready95a77a7f. Remaining: storage/QA durable landings,preview refresh after product changes,final trial evidence;real cloud/peers/activeabort/CPU unverified. @@ -63,6 +69,9 @@ ## storage-cors +- 2026-10-20 complete:productd3f4c215/closure7f99c045,full428/428,focused13/new9,10mutants,lint11/build;dispatch independent9/9+preview verification. Idle while QA trial output integrates. Live bucket/IAM/provider serialization/concurrent noCAS safety unverified. + + - Parallel trial item1: reproduce CORS existing-origin preservation offline before routing fix; no cloud changes. ## playback-qa diff --git a/docs/agents/PROGRAM.md b/docs/agents/PROGRAM.md index 69b20bf7..76be8d64 100644 --- a/docs/agents/PROGRAM.md +++ b/docs/agents/PROGRAM.md @@ -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 — 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. + +Continue the existing robustness/usability backlog beyond the trial, with bounded evidence-first tasks and adaptive staffing. Local proof and real Amber/cloud/live-peer/manual release gates stay distinct. This does not add push/deploy/spend/real-wallet/production-data/scheduler authority or authorize new product definitions. Track current quality and next work in fleet/QUALITY.md. + + ### 2026-10-20 — Bounded parallel trial, owner words relayed by interpreter > "id really like to stress test the multi agent process so if it needs more agents to get more done faster. do it" — owner, relayed by interpreter; not represented as typed by owner in dispatch. diff --git a/docs/agents/backlog/client-reliability-6.json b/docs/agents/backlog/client-reliability-6.json new file mode 100644 index 00000000..bae143bf --- /dev/null +++ b/docs/agents/backlog/client-reliability-6.json @@ -0,0 +1,9 @@ +{ + "id": "client-reliability-6", + "area": "client-reliability", + "status": "open", + "title": "Audit real profile history removal wiring and historical no-op regression coverage", + "blockedOn": null, + "addedOn": "2026-10-20", + "filedAt": "7f99c0456931c917082d6a6680c79655221dcc82" +} diff --git a/docs/agents/backlog/storage-cors-2.json b/docs/agents/backlog/storage-cors-2.json new file mode 100644 index 00000000..430c07cd --- /dev/null +++ b/docs/agents/backlog/storage-cors-2.json @@ -0,0 +1,9 @@ +{ + "id": "storage-cors-2", + "area": "storage-cors", + "status": "open", + "title": "Audit best-effort storage/delete safety and remaining R2 followups offline", + "blockedOn": null, + "addedOn": "2026-10-20", + "filedAt": "7f99c0456931c917082d6a6680c79655221dcc82" +} diff --git a/docs/agents/backlog/storage-cors-3.json b/docs/agents/backlog/storage-cors-3.json new file mode 100644 index 00000000..fcebe654 --- /dev/null +++ b/docs/agents/backlog/storage-cors-3.json @@ -0,0 +1,9 @@ +{ + "id": "storage-cors-3", + "area": "storage-cors", + "status": "deferred", + "title": "Audit feed/view tombstone stale-refresh regression gap with offline integration", + "blockedOn": "Deferred behind latest storage-safety steering from interpreter2026-10-20T14:57:03;not cancelled", + "addedOn": "2026-10-20", + "filedAt": "7f99c0456931c917082d6a6680c79655221dcc82" +} diff --git a/docs/agents/prompts/client-reliability.md b/docs/agents/prompts/client-reliability.md index 56c83dc0..61afc7c1 100644 --- a/docs/agents/prompts/client-reliability.md +++ b/docs/agents/prompts/client-reliability.md @@ -1,6 +1,12 @@ # Area: Client reliability (client-reliability) -## Current assignment: client-reliability-5 — prevent orphaned mirror continuation +## Current assignment: client-reliability-6 — profile history wiring audit + +Owner continuing quality objective is in GOAL/PROGRAM; use fleet/QUALITY.md. Item5 done0bd0b1c3/closuredc852597. Claim item6,merge verified unstable non-destructively,read current rules/KNOWN_ISSUES/test integrity. High-priority TODO2 explicitly asks profile-pane remove wiring regression. Current controller comment says no-op onHistoryReady override was removed; current history-pane test injects fake renderer and validates lazy init,not real remove. Revalidate whole test corpus before assuming a gap. + +Investigation/scratch/evidence only now: trace actual ProfileModalController→createWatchHistoryRenderer→default removal→history controller/service with controlled local state/IO; verify local-only delete/clear and synced callback options only through fake publish boundary,no signer/relay/private data. Prove what current assertions cover and whether historical no-op override would escape them. Prefer actual wiring invocation over source-string assertions. Classify a remaining product failure separately from missing regression; send exact HEAD/commands/counts/reproduction or mutant result,proposed smallest retained test/fix scope. If already covered,close audit with evidence and next priority. No product or committed test changes until dispatch routes scope; no app/history service/cache ownership expansion. Your existing profile modal modules/tests read-only for investigation;unique notes/backlog allowed. QA owns full/normal gate;cheap focused checks only,no browser/build/full gate. No subagents/kit/scheduler/cloud/real signer/wallet/production activity. Send immediate read+next-action,then blocker/completion;keep .task current. + +## Archived completed assignment: client-reliability-5 — prevent orphaned mirror continuation Investigation at0c1dd7e8 found a narrow defect, independently reproduced by dispatch at47953970 (administrative roster only): after last-owner disposal during active primary media, primary error starts1 fresh mirror HEAD(expected0). /tmp/bitvid-dispatch-5-active-url.mjs mirror-disposed --expect-no-obsolete-head exits1 after cleanup/retry; mirror-shared control exits0/healthy,resources0/slots0. Bounded active retention/success caching itself is intentional and not a defect. diff --git a/docs/agents/prompts/storage-cors.md b/docs/agents/prompts/storage-cors.md index e43486b1..b7866963 100644 --- a/docs/agents/prompts/storage-cors.md +++ b/docs/agents/prompts/storage-cors.md @@ -1,6 +1,14 @@ # Area: Storage CORS reliability (storage-cors) -## Assignment: storage-cors-1 — preservation fix routed +## Current assignment: storage-cors-2 — remaining storage/delete safety audit + +Storage item1 doneproductd3f4c215/closure7f99c045. Latest interpreter checkpoint14:57:03 steers this existing worker toward remaining todo/TODO_2026-06-16_r2-followups.md and current upload/delete safety. Earlier feed/view audit is deferred as storage-cors-3,not cancelled;preserve any scratch notes. Claim item2,merge verified unstable,read GOAL/PROGRAM/QUALITY/RULE-CHANGES/KNOWN_ISSUES and docs/lessons/cloudflare-s3-upload-gotchas.md. + +Bounded investigation only:validate current deleteVideoStorage best-effort/no-throw/owner-bucket invariant and remaining cleanup followups at actual service/caller boundary. Dispatch inspected settings/npub .trim calls before catch in r2Service:potential malformed cached connection/metadata boundary is evidence to check,not a presumed active bug. Inspect existing delete/storage-key tests and call normalization first;construct real service offline scenario with fake SDK/delete transport,valid owned/external URL controls and meaningful malformed/locked/partial-failure cases. Characterize existing all-versions/thumbnail followups without inventing retention/deletion policy. If no current defect,give evidence and choose one current managed-domain/idempotency followup from same backlog via actual callgraph;stop after one bounded actionable result or documented already-covered outcome. + +R2Service.deleteVideoStorage must stay best-effort,never throw,and never delete outside owner bucket. r2Service/s3UploadService are mirrored copies;any later fix would require explicit symmetric scope. For NOW all product/existing tests/read-only including js/services/r2Service.js,s3UploadService.js,storagePointer and storage/r2-mgmt.js. No real delete,cloud/provider credentials,public requests,signer/wallet/private data or app edits. Scratch/evidence/own backlog and docs/testing/storage-cors-* only;report exact HEAD/command/counts,fidelity and smallest proposed test/fix scope before product/committed regression changes. QA owns full/normal slot;cheap focused local checks only,no browser/full/build. Send immediate corrected read+next-action,then evidence/blocker;keep .task current. No new agents/features/kit/scheduler changes. + +## Archived completed assignment: storage-cors-1 — preservation fix routed Implementation routed after worker and independent dispatch offline reproduction: adding second origin replaces the entire existing rule, existingRulesPreserved0/1. Dispatch command env -u NODE_TEST_CONTEXT node /tmp/bitvid-dispatch-storage-cors-reproduce.mjs exits1 at strict false!==true after all5 characterization controls. No cloud IO. diff --git a/fleet/GOAL.md b/fleet/GOAL.md index 61f855f6..4fa75044 100644 --- a/fleet/GOAL.md +++ b/fleet/GOAL.md @@ -22,3 +22,9 @@ Work through the existing TODO backlog, find and fix bugs, and make the client m - No deploys, spending, production data, or real-wallet operations; conservative session-manager defaults, not additional owner rulings. - First worker approval received 2026-10-19 via Codex desktop chat relay; routine staffing, fixes, tests/builds, and local unstable landings are authorized within this goal. Record relay provenance; no repeated routine approval required. - No scheduler or cron activation is implied by fleet startup. + +## Continuing owner direction — 2026-10-20 + +> "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. diff --git a/fleet/LOG.md b/fleet/LOG.md index 4818516e..7f86d697 100644 --- a/fleet/LOG.md +++ b/fleet/LOG.md @@ -87,3 +87,16 @@ - Client item5 submission4bc52f9d durably landed0bd0b1c3 at13:57:06,unchanged normal gate exit0;dispatch independently checked status/log/ancestry0. Worker full427/427,focused28/lifecycle18,6mutants,lint11/build,native Chromium+Firefox health lifecycle smoke0obsoleteHEAD/resources/external/pageerrors are worker-derived. Browser/server released. - Dispatch synced product0bd0b1c3,independent direct URL lifecycle18/18 natural exit0(336.59ms),build/artifact exit0,preserved previewHTTP200 and downloaded index byte-equal to dist(cmp0). Actual media/playback/live peers/activeabort/CPU/fullStage3 unverified. - Storage exclusive full/normal landing slot granted13:58:27,pickup13:58:42;request13:42:38→grant949s(15m49). QA ready95a77a7f focused4/6mutants/lint11,holding since13:43:52. No new client item while remaining trial landings validate prepared stable code;next action remains completing bounded3-worker trial,not waiting owner approval. + +## 2026-10-20 — Storage landed; observed dispatch wake lag; QA validation active + +- Independently verified storage699d7292->d3f4c215 and closure032f76bc->7f99c045,durable status/log/ancestry0. Worker full428/428,focused13/3files,9new,10restored mutants,lint11/build,normal gate0 are evidence-derived. Dispatch synced and ran CORS regression9/9 natural exit0,build/artifact0,preserved previewHTTP200+index byte-equal dist. No live provider/IAM/serialization/noCAS concurrent writer qualification. +- Operator14:49:19 found dispatch idle/unread5 and nudged;completed storage release14:09:38 was consumed this foreground checkpoint. Actual QA grant authored14:49:35,read14:49:46(11s),request13:43:52→grant65m43/read65m54;release→grant39m57. Initial grant body incorrectly said14:11;corrected promptly. It was a timestamp error,not a nonexistent earlier send/intended grant;do not classify38m35 as delivery latency. +- QA now owns full/normal test-landing slot,merged checks/full starting,product read-only/no new browser/build. Two durable product fixes from trial;QA retained regression still pending normal full gate/landing. After integration assess parallel implementation outputs against serialized validations and wake latency;no overall speedup or unattended progress claim. No scheduler/kit change. + +## 2026-10-20 — Persistent quality objective and immediate next investigations + +- Owner exact direction relayed "ok try to keep them working until the project is in a good place." Recorded GOAL/PROGRAM;QUALITY matrix distinguishes current local proof from Amber/cloud/peer/manual gates across feed/playback/profile/storage/mobile/validation/preview. No readiness claim from unit counts. +- Existing client worker item6 assigned profile-history actual-removal wiring gap from TODO2;existing storage worker item2 temporarily lent to independent feed/view tombstone gap TODO1. Investigation/evidence only before routing,cheap focused checks while QA full/normal slot active. No extra agents,new product definitions or competing app/Nostr/URL writes. + +- Latest interpreter checkpoint14:57:03 consumed14:57:16 asks storage-followup/default rather than prior feed candidate. Client6 and initial storage read-next-action verified14:57:29/14:57:22. Adapt storage2 to actual current best-effort delete safety/backlog followups read-only;retain agreed feed gap deferredstorage3. Inspection sees .trim on caller/settings before catches,requires call-normalization/current-test investigation,not assumed defect. QA full429/429 diagnostic pass,normal submission64143f42 gating since14:56:10;slot unchanged. diff --git a/fleet/QUALITY.md b/fleet/QUALITY.md new file mode 100644 index 00000000..98d3a21d --- /dev/null +++ b/fleet/QUALITY.md @@ -0,0 +1,23 @@ +# 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. + +| Area | Current local evidence | Next bounded work | Still unverified / release gate | +|---|---|---|---| +| 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 | playback-qa-1 retained regression full/normal landing currently active | 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 read-only actual history removal wiring audit, 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 read-only best-effort delete safety/current remaining followups audit | 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 | After current investigations, select bounded viewport navigation/modal/card smoke from TODO7; inspect before redesign | 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 new regression full run in progress | Finish QA gate; 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 | + +## Milestones + +1. Finish prepared trial outputs: two product fixes are durable; retained QA regression still needs full/normal landing. 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. + +## 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. diff --git a/fleet/RULE-CHANGES.md b/fleet/RULE-CHANGES.md index abe439fe..3049d651 100644 --- a/fleet/RULE-CHANGES.md +++ b/fleet/RULE-CHANGES.md @@ -9,6 +9,12 @@ a landing rule changes. ## 2026-10-20 +- Latest14:57:03 interpreter checkpoint prioritizes remaining storage/upload/delete safety for storage worker. storage-cors-2 now read-only best-effort delete safety/current followups audit;prior feed/view audit retained deferred as storage-cors-3. Client6 history audit unchanged. No product/test writes before evidence/routing;QA expensive slot stays exclusive. + + +- Owner continuation now extends beyond trial until project quality is evidenced,tracked in QUALITY.md with local/live gates distinct. Existing client worker item6 investigates real profile-history removal wiring;storage worker item2 temporarily investigates feed/view tombstone coverage. Both read-only scratch/evidence,no product or committed tests before routing. QA retains expensive full/normal slot. Same3 workers,disjoint scope,no app.js writers/new features/kit/scheduler/external authority. + + - storage-cors-1 fix routed after worker+dispatch offline reproduction: preserve existing bucket CORS rules/fields; append default rule only for uncovered origins, idempotent no-PUT for equivalent coverage, only NoSuchCORSConfiguration permits absent config, other read errors no PUT. Own s3-multipart.js/s3-client.js+focused new test/integrity. No real cloud/credential operations or unrelated policy change; full gate slot follows client. diff --git a/test_logs/TEST_LOG_2026-10-20_14-50-00_dispatch-storage.md b/test_logs/TEST_LOG_2026-10-20_14-50-00_dispatch-storage.md new file mode 100644 index 00000000..044516f2 --- /dev/null +++ b/test_logs/TEST_LOG_2026-10-20_14-50-00_dispatch-storage.md @@ -0,0 +1,7 @@ +# Dispatch storage integration verification + +- Host fleet landq status699d7292 durable landedd3f4c215;032f76bc landed7f99c045. git log unstable and product ancestry0. +- env -u NODE_TEST_CONTEXT node tests/storage-cors-preservation.test.mjs:9/9,fail0,cancelled0,natural exit0,24.94ms. Actual helper/SDK wrapper,offline transport only. +- npm run build including artifact verification:exit0. Preserved preview server;host localhost curl --fail http://127.0.0.1:3000 returns200 exit0;cmp dist/index.html downloaded preview index exit0. +- Worker-derived full428/428 files,focused13/3files,10restored failing mutants,lint11/build,normal gate0;not independently rerun. No cloud/IAM/real bucket/concurrent noCAS writer qualification. +- QA grant actual14:49:35,read14:49:46;request13:43:52→read65m54;storage release14:09:38→grant39m57 observed dispatch checkpoint/wake lag. Wrong14:11 body timestamp corrected;no send occurred then.